FIX: Show topic titles in deleted-posts (#19610)

Show topic titles in deleted-posts
This commit is contained in:
Natalie Tay 2022-12-28 16:07:06 +08:00 committed by GitHub
parent 06db264f24
commit d914ea8366
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 3 deletions

View File

@ -52,15 +52,15 @@ class AdminUserActionSerializer < ApplicationSerializer
end
def slug
object.topic&.slug
topic&.slug
end
def title
object.topic&.title
topic&.title
end
def category_id
object.topic&.category_id
topic&.category_id
end
def moderator_action
@ -80,4 +80,14 @@ class AdminUserActionSerializer < ApplicationSerializer
.select { |ua| [UserAction::REPLY, UserAction::RESPONSE].include? ua.action_type }
.first.try(:action_type)
end
# we need this to handle deleted topics which aren't loaded via
# Topic.unscoped do
# Post.includes(:topic)
# end
# because Rails 4 "unscoped" support is still bugged (cf. https://github.com/rails/rails/issues/13775)
def topic
return @topic if @topic
@topic = object.topic || Topic.with_deleted.find_by_id(object.topic_id)
end
end

View File

@ -0,0 +1,20 @@
# frozen_string_literal: true
describe AdminUserActionSerializer do
fab!(:user) { Fabricate(:user) }
fab!(:admin) { Fabricate(:admin) }
let(:guardian) { Guardian.new(admin) }
fab!(:topic) { Fabricate(:topic) }
fab!(:post) { Fabricate(:post, topic: topic) }
it "includes the slug/title/category ID for a post's deleted topic" do
topic.trash!
json = AdminUserActionSerializer.new(post, scope: guardian, root: false).as_json
expect(json[:slug]).to eq(topic.slug)
expect(json[:title]).to eq(topic.title)
expect(json[:category_id]).to eq(topic.category_id)
end
end