discourse/plugins/chat/spec/system/chat_footer_spec.rb
David Battersby 6876c52857
FIX: set channels tab as default on mobile chat footer (#25296)
This change moves the "Channels" tab to first position in the chat footer nav, and loads it as the default page when opening chat for the first time on mobile.
2024-01-17 17:12:55 +08:00

72 lines
1.8 KiB
Ruby

# frozen_string_literal: true
RSpec.describe "Chat footer on mobile", type: :system, mobile: true do
fab!(:user)
fab!(:channel) { Fabricate(:chat_channel, threading_enabled: true) }
fab!(:message) { Fabricate(:chat_message, chat_channel: channel, user: user) }
let(:chat_page) { PageObjects::Pages::Chat.new }
before do
chat_system_bootstrap
sign_in(user)
channel.add(user)
end
context "with multiple tabs" do
it "shows footer" do
visit("/")
chat_page.open_from_header
expect(page).to have_css(".c-footer")
expect(page).to have_css(".c-footer__item", count: 2)
expect(page).to have_css("#c-footer-direct-messages")
expect(page).to have_css("#c-footer-channels")
end
it "hides footer when channel is open" do
chat_page.visit_channel(channel)
expect(page).to have_no_css(".c-footer")
end
it "redirects the user to the channels tab" do
visit("/")
chat_page.open_from_header
expect(page).to have_current_path("/chat/channels")
end
it "shows threads tab when user has threads" do
thread = Fabricate(:chat_thread, channel: channel, original_message: message)
Fabricate(:chat_message, chat_channel: channel, thread: thread)
thread.update!(replies_count: 1)
visit("/")
chat_page.open_from_header
expect(page).to have_css(".c-footer")
expect(page).to have_css("#c-footer-threads")
end
end
context "with only 1 tab" do
before do
SiteSetting.direct_message_enabled_groups = "3" # staff only
end
it "does not render footer" do
visit("/")
chat_page.open_from_header
expect(page).to have_no_css(".c-footer")
end
it "redirects user to channels page" do
visit("/")
chat_page.open_from_header
expect(page).to have_current_path("/chat/channels")
end
end
end