mirror of
https://github.com/discourse/discourse-solved.git
synced 2025-05-06 16:37:46 +00:00
FIX: Exclude deleted topics and posts as solution in user summary
This commit is contained in:
parent
be5798f6d8
commit
0805610f6c
@ -5,8 +5,9 @@ module DiscourseSolved::UserSummaryExtension
|
|||||||
|
|
||||||
def solved_count
|
def solved_count
|
||||||
DiscourseSolved::SolvedTopic
|
DiscourseSolved::SolvedTopic
|
||||||
.joins("JOIN posts ON posts.id = discourse_solved_solved_topics.answer_post_id")
|
.joins(answer_post: :user, topic: {})
|
||||||
.where(posts: { user_id: @user.id })
|
.where(posts: { user_id: @user.id, deleted_at: nil })
|
||||||
|
.where(topics: { archetype: Archetype.default, deleted_at: nil })
|
||||||
.count
|
.count
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
describe UserSummary do
|
describe UserSummary do
|
||||||
|
fab!(:admin)
|
||||||
|
|
||||||
describe "solved_count" do
|
describe "solved_count" do
|
||||||
it "indicates the number of times a user's post is a topic's solution" do
|
it "indicates the number of times a user's post is a topic's solution" do
|
||||||
topic = Fabricate(:topic)
|
topic = Fabricate(:topic)
|
||||||
Fabricate(:post, topic:)
|
Fabricate(:post, topic:)
|
||||||
user = Fabricate(:user)
|
user = Fabricate(:user)
|
||||||
admin = Fabricate(:admin)
|
|
||||||
post = Fabricate(:post, topic:, user:)
|
post = Fabricate(:post, topic:, user:)
|
||||||
|
|
||||||
user_summary = UserSummary.new(user, Guardian.new)
|
user_summary = UserSummary.new(user, Guardian.new)
|
||||||
@ -20,5 +21,33 @@ describe UserSummary do
|
|||||||
expect(user_summary.solved_count).to eq(1)
|
expect(user_summary.solved_count).to eq(1)
|
||||||
expect(admin_summary.solved_count).to eq(0)
|
expect(admin_summary.solved_count).to eq(0)
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user