discourse/plugins/discourse-solved/spec/requests/list_controller_spec.rb
David Battersby ce377f6949
DEV: add service objects for accept_answer and unaccept_answer (#37878)
Extracts `accept_answer!` and `unaccept_answer!` from plugin.rb and
moves the logic into separate service objects, along with adding more
detailed test coverage for each service.

---------

Co-authored-by: Loïc Guitaut <loic@discourse.org>
2026-03-04 12:34:37 +04:00

21 lines
780 B
Ruby
Vendored

# frozen_string_literal: true
RSpec.describe ListController do
fab!(:p1, :post)
fab!(:p2) { Fabricate(:post, topic: p1.topic) }
fab!(:p3) { Fabricate(:post, topic: p1.topic) }
before { SiteSetting.allow_solved_on_all_topics = true }
it "shows the user who posted the accepted answer second" do
TopicFeaturedUsers.ensure_consistency!
DiscourseSolved::AcceptAnswer.call!(params: { post_id: p3.id }, guardian: p1.user.guardian)
get "/latest.json"
posters = response.parsed_body["topic_list"]["topics"].first["posters"]
expect(posters[0]["user_id"]).to eq(p1.user_id)
expect(posters[1]["user_id"]).to eq(p3.user_id)
expect(posters[1]["description"]).to include("Accepted Answer")
expect(posters[2]["user_id"]).to eq(p2.user_id)
end
end