FIX: correct user serializer user method for extended serializer (#8590)

A small fix for Basic User Serializers where some downstream serializers do not correctly set user objects. This caused some issues in certain plugins that depend on the user method to return a user.
This commit is contained in:
Jeff Wong 2019-12-19 09:48:01 -08:00 committed by GitHub
parent 91b290c784
commit 036a24cf30
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 1 deletions

View File

@ -20,6 +20,6 @@ class BasicUserSerializer < ApplicationSerializer
end end
def user def user
object[:user] || object object[:user] || object.try(:user) || object
end end
end end

View File

@ -0,0 +1,7 @@
# frozen_string_literal: true
Fabricator(:post_action) do
post
user
post_action_type_id PostActionType.types[:like]
end

View File

@ -14,6 +14,14 @@ describe BasicUserSerializer do
expect(json[:avatar_template]).to eq(user.avatar_template) expect(json[:avatar_template]).to eq(user.avatar_template)
end end
describe 'extended serializers' do
let(:post_action) { Fabricate(:post_action, user: user) }
let(:serializer) { PostActionUserSerializer.new(post_action, scope: Guardian.new(user), root: false) }
it "returns the user correctly" do
expect(serializer.user.username).to eq(user.username)
end
end
it "doesn't return the name it when `enable_names` is false" do it "doesn't return the name it when `enable_names` is false" do
SiteSetting.enable_names = false SiteSetting.enable_names = false
expect(json[:name]).to eq(nil) expect(json[:name]).to eq(nil)