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 }
|
||||
|
||||
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
|
||||
|
||||
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