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
def user
object[:user] || object
object[:user] || object.try(:user) || object
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)
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
SiteSetting.enable_names = false
expect(json[:name]).to eq(nil)