196 lines
6.9 KiB
Ruby
196 lines
6.9 KiB
Ruby
|
# frozen_string_literal: true
|
|||
|
|
|||
|
RSpec.describe "Message notifications - mobile", type: :system, js: true, mobile: true do
|
|||
|
fab!(:current_user) { Fabricate(:user) }
|
|||
|
|
|||
|
let!(:chat_page) { PageObjects::Pages::Chat.new }
|
|||
|
let!(:chat_channel_page) { PageObjects::Pages::ChatChannel.new }
|
|||
|
|
|||
|
before do
|
|||
|
SiteSetting.navigation_menu = "sidebar"
|
|||
|
chat_system_bootstrap
|
|||
|
end
|
|||
|
|
|||
|
def create_message(text: "this is fine", channel:, creator: Fabricate(:user))
|
|||
|
using_session(creator.username) do
|
|||
|
sign_in(creator)
|
|||
|
chat_page.visit_channel(channel)
|
|||
|
chat_channel_page.send_message(text)
|
|||
|
expect(chat_channel_page).to have_message(text: text)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
context "as a user" do
|
|||
|
before { sign_in(current_user) }
|
|||
|
|
|||
|
context "when on homepage" do
|
|||
|
context "with public channel" do
|
|||
|
fab!(:channel_1) { Fabricate(:category_channel) }
|
|||
|
fab!(:channel_2) { Fabricate(:category_channel) }
|
|||
|
fab!(:user_1) { Fabricate(:user) }
|
|||
|
|
|||
|
before { channel_1.add(user_1) }
|
|||
|
|
|||
|
context "when not member of the channel" do
|
|||
|
context "when a message is created" do
|
|||
|
it "doesn't show anything" do
|
|||
|
visit("/chat")
|
|||
|
create_message(channel: channel_1, creator: user_1)
|
|||
|
|
|||
|
expect(page).to have_no_css(".chat-header-icon .chat-channel-unread-indicator")
|
|||
|
expect(page).to have_no_css(
|
|||
|
".chat-channel-row[data-chat-channel-id=\"#{channel_1.id}\"]",
|
|||
|
)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
context "when member of the channel" do
|
|||
|
before { channel_1.add(current_user) }
|
|||
|
|
|||
|
context "when user is in DnD" do
|
|||
|
before do
|
|||
|
Jobs.run_immediately!
|
|||
|
Fabricate(
|
|||
|
:do_not_disturb_timing,
|
|||
|
user: current_user,
|
|||
|
starts_at: 1.week.ago,
|
|||
|
ends_at: 1.week.from_now,
|
|||
|
)
|
|||
|
end
|
|||
|
|
|||
|
it "doesn’t show indicator in header" do
|
|||
|
visit("/chat")
|
|||
|
create_message(channel: channel_1, creator: user_1)
|
|||
|
|
|||
|
expect(page).to have_css(".do-not-disturb-background")
|
|||
|
expect(page).to have_no_css(".chat-header-icon .chat-channel-unread-indicator")
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
context "when channel is muted" do
|
|||
|
before { channel_1.membership_for(current_user).update!(muted: true) }
|
|||
|
|
|||
|
context "when a message is created" do
|
|||
|
it "doesn't show anything" do
|
|||
|
visit("/chat")
|
|||
|
create_message(channel: channel_1, creator: user_1)
|
|||
|
|
|||
|
expect(page).to have_no_css(".chat-header-icon .chat-channel-unread-indicator")
|
|||
|
expect(page).to have_no_css(
|
|||
|
".chat-channel-row[data-chat-channel-id=\"#{channel_1.id}\"] .chat-channel-unread-indicator",
|
|||
|
)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
context "when a message is created" do
|
|||
|
it "correctly renders notifications" do
|
|||
|
visit("/chat")
|
|||
|
create_message(channel: channel_1, creator: user_1)
|
|||
|
|
|||
|
expect(page).to have_css(".chat-header-icon .chat-channel-unread-indicator", text: "")
|
|||
|
expect(page).to have_css(
|
|||
|
".chat-channel-row[data-chat-channel-id=\"#{channel_1.id}\"] .chat-channel-unread-indicator",
|
|||
|
text: 1,
|
|||
|
)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
context "when a message with mentions is created" do
|
|||
|
it "correctly renders notifications" do
|
|||
|
visit("/chat")
|
|||
|
create_message(
|
|||
|
channel: channel_1,
|
|||
|
creator: user_1,
|
|||
|
text: "hello @#{current_user.username} what's up?",
|
|||
|
)
|
|||
|
|
|||
|
expect(page).to have_css(".chat-header-icon .chat-channel-unread-indicator")
|
|||
|
expect(page).to have_css(
|
|||
|
".chat-channel-row[data-chat-channel-id=\"#{channel_1.id}\"] .chat-channel-unread-indicator",
|
|||
|
text: 1,
|
|||
|
)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
context "with dm channel" do
|
|||
|
fab!(:current_user) { Fabricate(:admin) }
|
|||
|
fab!(:user_1) { Fabricate(:user) }
|
|||
|
fab!(:user_2) { Fabricate(:user) }
|
|||
|
|
|||
|
fab!(:dm_channel_1) { Fabricate(:direct_message_channel, users: [current_user, user_1]) }
|
|||
|
fab!(:dm_channel_2) { Fabricate(:direct_message_channel, users: [current_user, user_2]) }
|
|||
|
|
|||
|
context "when a message is created" do
|
|||
|
it "correctly renders notifications" do
|
|||
|
visit("/chat")
|
|||
|
create_message(channel: dm_channel_1, creator: user_1)
|
|||
|
|
|||
|
expect(page).to have_css(".chat-header-icon .chat-channel-unread-indicator", text: "1")
|
|||
|
expect(page).to have_css(
|
|||
|
".chat-channel-row[data-chat-channel-id=\"#{dm_channel_1.id}\"] .chat-channel-unread-indicator",
|
|||
|
)
|
|||
|
|
|||
|
create_message(channel: dm_channel_1, creator: user_1)
|
|||
|
|
|||
|
expect(page).to have_css(".chat-header-icon .chat-channel-unread-indicator", text: "2")
|
|||
|
end
|
|||
|
|
|||
|
it "reorders channels" do
|
|||
|
visit("/chat")
|
|||
|
|
|||
|
expect(page).to have_css(
|
|||
|
".chat-channel-row:nth-child(1)[data-chat-channel-id=\"#{dm_channel_1.id}\"]",
|
|||
|
)
|
|||
|
expect(page).to have_css(
|
|||
|
".chat-channel-row:nth-child(2)[data-chat-channel-id=\"#{dm_channel_2.id}\"]",
|
|||
|
)
|
|||
|
create_message(channel: dm_channel_2, creator: user_2)
|
|||
|
|
|||
|
expect(page).to have_css(
|
|||
|
".chat-channel-row:nth-child(1)[data-chat-channel-id=\"#{dm_channel_2.id}\"]",
|
|||
|
)
|
|||
|
expect(page).to have_css(
|
|||
|
".chat-channel-row:nth-child(2)[data-chat-channel-id=\"#{dm_channel_1.id}\"]",
|
|||
|
)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
context "with dm and public channel" do
|
|||
|
fab!(:current_user) { Fabricate(:admin) }
|
|||
|
fab!(:user_1) { Fabricate(:user) }
|
|||
|
fab!(:channel_1) { Fabricate(:category_channel) }
|
|||
|
fab!(:dm_channel_1) { Fabricate(:direct_message_channel, users: [current_user, user_1]) }
|
|||
|
|
|||
|
before do
|
|||
|
channel_1.add(user_1)
|
|||
|
channel_1.add(current_user)
|
|||
|
end
|
|||
|
|
|||
|
context "when messages are created" do
|
|||
|
it "correctly renders notifications" do
|
|||
|
visit("/chat")
|
|||
|
create_message(channel: channel_1, creator: user_1)
|
|||
|
|
|||
|
expect(page).to have_css(".chat-header-icon .chat-channel-unread-indicator", text: "")
|
|||
|
expect(page).to have_css(
|
|||
|
".chat-channel-row[data-chat-channel-id=\"#{channel_1.id}\"] .chat-channel-unread-indicator",
|
|||
|
)
|
|||
|
|
|||
|
create_message(channel: dm_channel_1, creator: user_1)
|
|||
|
|
|||
|
expect(page).to have_css(
|
|||
|
".chat-channel-row[data-chat-channel-id=\"#{dm_channel_1.id}\"] .chat-channel-unread-indicator",
|
|||
|
)
|
|||
|
expect(page).to have_css(".chat-header-icon .chat-channel-unread-indicator", text: "1")
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|