FIX: Query the items in the queue to calculate a user's flagged post count. (#14028)

When a staff member clicks on a user's number of flagged posts, we redirect them to the review queue, so it makes sense to count the number of items there to calculate the count.

We used to look at post action items to calculate this number, which doesn't match the number of items in the queue if old flags exist.
This commit is contained in:
Roman Rizzi 2021-08-12 14:20:46 -03:00 committed by GitHub
parent b2e4c91818
commit 29bb79de37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 6 deletions

View File

@ -1220,12 +1220,7 @@ class User < ActiveRecord::Base
end
def number_of_flagged_posts
Post.with_deleted
.where(user_id: self.id)
.where(id: PostAction.where(post_action_type_id: PostActionType.notify_flag_type_ids)
.where(disagreed_at: nil)
.select(:post_id))
.count
ReviewableFlaggedPost.where(target_created_by: self.id).count
end
def number_of_rejected_posts

View File

@ -1649,6 +1649,20 @@ describe User do
expect(user.number_of_rejected_posts).to eq(0)
end
end
describe '#number_of_flagged_posts' do
it 'counts flagged posts from the user' do
Fabricate(:reviewable_flagged_post, target_created_by: user)
expect(user.number_of_flagged_posts).to eq(1)
end
it 'ignores flagged posts from another user' do
Fabricate(:reviewable_flagged_post, target_created_by: Fabricate(:user))
expect(user.number_of_flagged_posts).to eq(0)
end
end
end
describe "new_user?" do