diff --git a/app/assets/javascripts/discourse/templates/components/reviewable-topic-link.hbs b/app/assets/javascripts/discourse/templates/components/reviewable-topic-link.hbs
index 30d2dc8c64..4b1704aec4 100644
--- a/app/assets/javascripts/discourse/templates/components/reviewable-topic-link.hbs
+++ b/app/assets/javascripts/discourse/templates/components/reviewable-topic-link.hbs
@@ -1,7 +1,7 @@
{{#if reviewable.topic}}
{{topic-status topic=reviewable.topic}}
-
{{reviewable.topic.title}}
+
{{reviewable.topic.title}}
{{category-badge reviewable.category}}
{{reviewable-tags tags=reviewable.topic_tags tagName=''}}
{{else if (has-block)}}
diff --git a/app/serializers/reviewable_serializer.rb b/app/serializers/reviewable_serializer.rb
index 8969f472a3..d1a99c8a20 100644
--- a/app/serializers/reviewable_serializer.rb
+++ b/app/serializers/reviewable_serializer.rb
@@ -13,6 +13,7 @@ class ReviewableSerializer < ApplicationSerializer
:type,
:topic_id,
:topic_url,
+ :target_url,
:topic_tags,
:category_id,
:created_at,
@@ -107,13 +108,21 @@ class ReviewableSerializer < ApplicationSerializer
object.topic.present? && SiteSetting.tagging_enabled?
end
+ def target_url
+ return object.target.url if object.target.is_a?(Post) && object.target.present?
+ topic_url
+ end
+
+ def include_target_url?
+ target_url.present?
+ end
+
def topic_url
- return object.target.url if object.target.is_a?(Post)
- return object.topic.url
+ return object.topic&.url
end
def include_topic_url?
- object.topic.present?
+ topic_url.present?
end
def include_topic_id?
diff --git a/spec/serializers/reviewable_serializer_spec.rb b/spec/serializers/reviewable_serializer_spec.rb
index 6ce23e0c14..8c2e95f156 100644
--- a/spec/serializers/reviewable_serializer_spec.rb
+++ b/spec/serializers/reviewable_serializer_spec.rb
@@ -22,9 +22,7 @@ describe ReviewableSerializer do
it 'Includes the removed topic id when the topis was deleted' do
reviewable.topic.trash!(admin)
-
json = described_class.new(reviewable.reload, scope: Guardian.new(admin), root: nil).as_json
-
expect(json[:removed_topic_id]).to eq reviewable.topic_id
end
@@ -33,4 +31,29 @@ describe ReviewableSerializer do
json = ReviewableQueuedPostSerializer.new(reviewable, scope: Guardian.new(admin), root: nil).as_json
expect(json['payload']).to be_blank
end
+
+ describe "urls" do
+
+ it "links to the flagged post" do
+ fp = Fabricate(:reviewable_flagged_post)
+ json = described_class.new(fp, scope: Guardian.new(admin), root: nil).as_json
+ expect(json[:target_url]).to eq(fp.post.url)
+ expect(json[:topic_url]).to eq(fp.topic.url)
+ end
+
+ it "supports deleted topics" do
+ fp = Fabricate(:reviewable_flagged_post)
+ fp.topic.trash!(admin)
+ fp.reload
+
+ json = described_class.new(fp, scope: Guardian.new(admin), root: nil).as_json
+ expect(json[:topic_url]).to be_blank
+ end
+
+ it "links to the queued post" do
+ json = described_class.new(reviewable, scope: Guardian.new(admin), root: nil).as_json
+ expect(json[:target_url]).to eq(reviewable.topic.url)
+ expect(json[:topic_url]).to eq(reviewable.topic.url)
+ end
+ end
end