-
Notifications
You must be signed in to change notification settings - Fork 8.2k
/
mark_all_channel_threads_read_spec.rb
46 lines (39 loc) · 1.77 KB
/
mark_all_channel_threads_read_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# frozen_string_literal: true
RSpec.describe Jobs::Chat::MarkAllChannelThreadsRead do
fab!(:channel) { Fabricate(:chat_channel, threading_enabled: true) }
context "when enable_experimental_chat_threaded_discussions is false" do
before { SiteSetting.enable_experimental_chat_threaded_discussions = false }
it "does nothing" do
Chat::Channel.any_instance.expects(:mark_all_threads_as_read).never
described_class.new.execute(channel_id: channel.id)
end
end
context "when enable_experimental_chat_threaded_discussions is true" do
fab!(:thread_1) { Fabricate(:chat_thread, channel: channel) }
fab!(:thread_2) { Fabricate(:chat_thread, channel: channel) }
fab!(:user_1) { Fabricate(:user) }
fab!(:user_2) { Fabricate(:user) }
fab!(:thread_1_message_1) { Fabricate(:chat_message, thread: thread_1) }
fab!(:thread_1_message_2) { Fabricate(:chat_message, thread: thread_1) }
fab!(:thread_1_message_3) { Fabricate(:chat_message, thread: thread_1) }
fab!(:thread_2_message_1) { Fabricate(:chat_message, thread: thread_2) }
fab!(:thread_2_message_2) { Fabricate(:chat_message, thread: thread_2) }
before do
SiteSetting.enable_experimental_chat_threaded_discussions = true
channel.add(user_1)
channel.add(user_2)
thread_1.add(user_1)
thread_2.add(user_2)
end
def unread_count(user)
Chat::ThreadUnreadsQuery.call(channel_ids: [channel.id], user_id: user.id).first.unread_count
end
it "marks all threads as read across all users in the channel" do
expect(unread_count(user_1)).to eq(3)
expect(unread_count(user_2)).to eq(2)
described_class.new.execute(channel_id: channel.id)
expect(unread_count(user_1)).to eq(0)
expect(unread_count(user_2)).to eq(0)
end
end
end