mirror of
https://github.com/discourse/discourse-solved.git
synced 2025-05-05 16:07:29 +00:00
Follow up to #352 The user summary solutions count is more than it should be because of deleted topics and posts.
54 lines
1.4 KiB
Ruby
54 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe UserSummary do
|
|
fab!(:admin)
|
|
|
|
describe "solved_count" do
|
|
it "indicates the number of times a user's post is a topic's solution" do
|
|
topic = Fabricate(:topic)
|
|
Fabricate(:post, topic:)
|
|
user = Fabricate(:user)
|
|
post = Fabricate(:post, topic:, user:)
|
|
|
|
user_summary = UserSummary.new(user, Guardian.new)
|
|
admin_summary = UserSummary.new(admin, Guardian.new)
|
|
|
|
expect(user_summary.solved_count).to eq(0)
|
|
expect(admin_summary.solved_count).to eq(0)
|
|
|
|
DiscourseSolved.accept_answer!(post, admin)
|
|
|
|
expect(user_summary.solved_count).to eq(1)
|
|
expect(admin_summary.solved_count).to eq(0)
|
|
end
|
|
|
|
it "excludes deleted topics" do
|
|
topic = Fabricate(:topic)
|
|
Fabricate(:post, topic:)
|
|
user = Fabricate(:user)
|
|
post = Fabricate(:post, topic:, user:)
|
|
|
|
user_summary = UserSummary.new(user, Guardian.new)
|
|
DiscourseSolved.accept_answer!(post, admin)
|
|
|
|
topic.update!(deleted_at: Time.zone.now)
|
|
|
|
expect(user_summary.solved_count).to eq(0)
|
|
end
|
|
|
|
it "excludes deleted posts" do
|
|
topic = Fabricate(:topic)
|
|
Fabricate(:post, topic:)
|
|
user = Fabricate(:user)
|
|
post = Fabricate(:post, topic:, user:)
|
|
|
|
user_summary = UserSummary.new(user, Guardian.new)
|
|
DiscourseSolved.accept_answer!(post, admin)
|
|
|
|
post.update!(deleted_at: Time.zone.now)
|
|
|
|
expect(user_summary.solved_count).to eq(0)
|
|
end
|
|
end
|
|
end
|