discourse-solved/spec/serializers/topic_view_serializer_spec.rb

36 lines
1.3 KiB
Ruby

# 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