mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: Exclude claimed reviewables from user menu (#19179)
Users who can access the review queue can claim a pending reviewable(s) which means that the claimed reviewable(s) can only be handled by the user who claimed it. Currently, we show claimed reviewables in the user menu, but this can be annoying for other reviewers because they can't do anything about a reviewable claimed by someone. So this PR makes sure that we only show in the user menu reviewables that are claimed by nobody or claimed by the current user. Internal topic: t/77235.
This commit is contained in:
@@ -623,4 +623,48 @@ RSpec.describe Reviewable, type: :model do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe ".unseen_reviewable_count" do
|
||||
fab!(:group) { Fabricate(:group) }
|
||||
fab!(:user) { Fabricate(:user) }
|
||||
fab!(:admin_reviewable) { Fabricate(:reviewable, reviewable_by_moderator: false) }
|
||||
fab!(:mod_reviewable) { Fabricate(:reviewable, reviewable_by_moderator: true) }
|
||||
fab!(:group_reviewable) { Fabricate(:reviewable, reviewable_by_moderator: false, reviewable_by_group: group) }
|
||||
|
||||
it "doesn't include reviewables that can't be seen by the user" do
|
||||
SiteSetting.enable_category_group_moderation = true
|
||||
expect(Reviewable.unseen_reviewable_count(user)).to eq(0)
|
||||
user.groups << group
|
||||
user.save!
|
||||
expect(Reviewable.unseen_reviewable_count(user)).to eq(1)
|
||||
user.update!(moderator: true)
|
||||
expect(Reviewable.unseen_reviewable_count(user)).to eq(2)
|
||||
user.update!(admin: true)
|
||||
expect(Reviewable.unseen_reviewable_count(user)).to eq(3)
|
||||
end
|
||||
|
||||
it "returns count of unseen reviewables" do
|
||||
user.update!(admin: true)
|
||||
expect(Reviewable.unseen_reviewable_count(user)).to eq(3)
|
||||
user.update!(last_seen_reviewable_id: mod_reviewable.id)
|
||||
expect(Reviewable.unseen_reviewable_count(user)).to eq(1)
|
||||
user.update!(last_seen_reviewable_id: group_reviewable.id)
|
||||
expect(Reviewable.unseen_reviewable_count(user)).to eq(0)
|
||||
end
|
||||
|
||||
it "doesn't include reviewables that are claimed by other users" do
|
||||
user.update!(admin: true)
|
||||
|
||||
claimed_by_user = Fabricate(:reviewable, topic: Fabricate(:topic))
|
||||
Fabricate(:reviewable_claimed_topic, topic: claimed_by_user.topic, user: user)
|
||||
|
||||
user2 = Fabricate(:user)
|
||||
claimed_by_user2 = Fabricate(:reviewable, topic: Fabricate(:topic))
|
||||
Fabricate(:reviewable_claimed_topic, topic: claimed_by_user2.topic, user: user2)
|
||||
|
||||
unclaimed = Fabricate(:reviewable, topic: Fabricate(:topic))
|
||||
|
||||
expect(Reviewable.unseen_reviewable_count(user)).to eq(5)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2974,33 +2974,6 @@ RSpec.describe User do
|
||||
end
|
||||
end
|
||||
|
||||
describe "#unseen_reviewable_count" do
|
||||
fab!(:admin_reviewable) { Fabricate(:reviewable, reviewable_by_moderator: false) }
|
||||
fab!(:mod_reviewable) { Fabricate(:reviewable, reviewable_by_moderator: true) }
|
||||
fab!(:group_reviewable) { Fabricate(:reviewable, reviewable_by_moderator: false, reviewable_by_group: group) }
|
||||
|
||||
it "doesn't include reviewables that can't be seen by the user" do
|
||||
SiteSetting.enable_category_group_moderation = true
|
||||
expect(user.unseen_reviewable_count).to eq(0)
|
||||
user.groups << group
|
||||
user.save!
|
||||
expect(user.unseen_reviewable_count).to eq(1)
|
||||
user.update!(moderator: true)
|
||||
expect(user.unseen_reviewable_count).to eq(2)
|
||||
user.update!(admin: true)
|
||||
expect(user.unseen_reviewable_count).to eq(3)
|
||||
end
|
||||
|
||||
it "returns count of unseen reviewables" do
|
||||
user.update!(admin: true)
|
||||
expect(user.unseen_reviewable_count).to eq(3)
|
||||
user.update!(last_seen_reviewable_id: mod_reviewable.id)
|
||||
expect(user.unseen_reviewable_count).to eq(1)
|
||||
user.update!(last_seen_reviewable_id: group_reviewable.id)
|
||||
expect(user.unseen_reviewable_count).to eq(0)
|
||||
end
|
||||
end
|
||||
|
||||
describe "#bump_last_seen_reviewable!" do
|
||||
it "doesn't error if there are no reviewables" do
|
||||
Reviewable.destroy_all
|
||||
@@ -3063,7 +3036,7 @@ RSpec.describe User do
|
||||
expect(messages.first).to have_attributes(
|
||||
channel: "/reviewable_counts/#{user.id}",
|
||||
user_ids: [user.id],
|
||||
data: { unseen_reviewable_count: 0 }
|
||||
data: { unseen_reviewable_count: 0, reviewable_count: 1 }
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user