FIX: Some solved topics have no answers
This commit is contained in:
parent
a8a3554cec
commit
59234a64af
|
@ -6,7 +6,8 @@ module DiscourseSolved::TopicViewSerializerExtension
|
||||||
prepended { attributes :accepted_answer }
|
prepended { attributes :accepted_answer }
|
||||||
|
|
||||||
def include_accepted_answer?
|
def include_accepted_answer?
|
||||||
SiteSetting.solved_enabled? && object.topic.solved.present?
|
SiteSetting.solved_enabled? && object.topic.solved.present? &&
|
||||||
|
object.topic.solved.answer_post.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
def accepted_answer
|
def accepted_answer
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
describe TopicViewSerializer do
|
||||||
|
fab!(:topic)
|
||||||
|
fab!(:post1) { Fabricate(:post, topic:) }
|
||||||
|
fab!(:post2) { Fabricate(:post, topic:) }
|
||||||
|
fab!(:user)
|
||||||
|
|
||||||
|
before { SiteSetting.solved_enabled = true }
|
||||||
|
|
||||||
|
describe "#accepted_answer" do
|
||||||
|
it "returns the accepted answer post when the topic has an accepted answer" do
|
||||||
|
Fabricate(:solved_topic, topic: topic, answer_post: post2)
|
||||||
|
serializer = TopicViewSerializer.new(TopicView.new(topic), scope: Guardian.new(user))
|
||||||
|
serialized = serializer.as_json
|
||||||
|
expect(serialized[:topic_view][:accepted_answer][:post_number]).to eq(post2.post_number)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns nil when the topic does not have an accepted answer" do
|
||||||
|
unsolved_topic = Fabricate(:topic)
|
||||||
|
serializer = TopicViewSerializer.new(TopicView.new(unsolved_topic), scope: Guardian.new(user))
|
||||||
|
serialized = serializer.as_json
|
||||||
|
expect(serialized[:accepted_answer]).to be_nil
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns nil when the accepted answer post does not exist" do
|
||||||
|
weird_topic = Fabricate(:solved_topic)
|
||||||
|
weird_topic.update!(answer_post_id: 19_238_319)
|
||||||
|
serializer =
|
||||||
|
TopicViewSerializer.new(TopicView.new(weird_topic.topic), scope: Guardian.new(user))
|
||||||
|
serialized = serializer.as_json
|
||||||
|
expect(serialized[:accepted_answer]).to be_nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue