2022-11-30 18:09:57 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
RSpec.describe Jobs::RefreshUsersReviewableCounts do
|
|
|
|
fab!(:admin) { Fabricate(:admin) }
|
|
|
|
fab!(:moderator) { Fabricate(:moderator) }
|
|
|
|
fab!(:user) { Fabricate(:user) }
|
|
|
|
|
|
|
|
fab!(:group) { Fabricate(:group) }
|
|
|
|
fab!(:topic) { Fabricate(:topic) }
|
|
|
|
fab!(:reviewable1) do
|
|
|
|
Fabricate(:reviewable, reviewable_by_group: group, reviewable_by_moderator: true, topic: topic)
|
2023-01-09 06:18:21 -05:00
|
|
|
end
|
2022-11-30 18:09:57 -05:00
|
|
|
|
|
|
|
fab!(:reviewable2) { Fabricate(:reviewable, reviewable_by_moderator: false) }
|
|
|
|
fab!(:reviewable3) { Fabricate(:reviewable, reviewable_by_moderator: true) }
|
|
|
|
|
|
|
|
before do
|
|
|
|
SiteSetting.enable_category_group_moderation = true
|
|
|
|
group.add(user)
|
|
|
|
topic.category.update!(reviewable_by_group: group)
|
|
|
|
Group.refresh_automatic_groups!
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "#execute" do
|
|
|
|
it "publishes reviewable counts for the members of the specified groups" do
|
|
|
|
messages =
|
|
|
|
MessageBus.track_publish do
|
|
|
|
described_class.new.execute(group_ids: [Group::AUTO_GROUPS[:staff]])
|
|
|
|
end
|
|
|
|
expect(messages.size).to eq(2)
|
|
|
|
|
|
|
|
moderator_message = messages.find { |m| m.user_ids == [moderator.id] }
|
|
|
|
expect(moderator_message.channel).to eq("/reviewable_counts/#{moderator.id}")
|
|
|
|
|
|
|
|
admin_message = messages.find { |m| m.user_ids == [admin.id] }
|
|
|
|
expect(moderator_message.channel).to eq("/reviewable_counts/#{moderator.id}")
|
|
|
|
|
|
|
|
messages = MessageBus.track_publish { described_class.new.execute(group_ids: [group.id]) }
|
|
|
|
expect(messages.size).to eq(1)
|
|
|
|
|
|
|
|
user_message = messages.find { |m| m.user_ids == [user.id] }
|
|
|
|
expect(user_message.channel).to eq("/reviewable_counts/#{user.id}")
|
|
|
|
end
|
|
|
|
|
|
|
|
it "published counts respect reviewables visibility" do
|
|
|
|
messages =
|
|
|
|
MessageBus.track_publish do
|
|
|
|
described_class.new.execute(group_ids: [Group::AUTO_GROUPS[:staff], group.id])
|
|
|
|
end
|
|
|
|
expect(messages.size).to eq(3)
|
|
|
|
|
|
|
|
admin_message = messages.find { |m| m.user_ids == [admin.id] }
|
|
|
|
moderator_message = messages.find { |m| m.user_ids == [moderator.id] }
|
|
|
|
user_message = messages.find { |m| m.user_ids == [user.id] }
|
|
|
|
|
|
|
|
expect(admin_message.channel).to eq("/reviewable_counts/#{admin.id}")
|
|
|
|
expect(admin_message.data).to eq(reviewable_count: 3, unseen_reviewable_count: 3)
|
|
|
|
|
|
|
|
expect(moderator_message.channel).to eq("/reviewable_counts/#{moderator.id}")
|
|
|
|
expect(moderator_message.data).to eq(reviewable_count: 2, unseen_reviewable_count: 2)
|
|
|
|
|
|
|
|
expect(user_message.channel).to eq("/reviewable_counts/#{user.id}")
|
|
|
|
expect(user_message.data).to eq(reviewable_count: 1, unseen_reviewable_count: 1)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|