0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-14 13:58:53 +08:00
discourse/plugins/chat/spec/system/shortcuts/drawer_spec.rb
Jarek Radosz c29c566dc2
DEV: Make visit() wait for the app to boot (#39659)
And the same for `page.refresh()`
2026-04-30 17:33:57 +02:00

114 lines
2.9 KiB
Ruby
Vendored
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# frozen_string_literal: true
RSpec.describe "Shortcuts | drawer" do
fab!(:user_1, :admin)
fab!(:channel_1, :chat_channel)
fab!(:channel_2, :chat_channel)
let(:chat_page) { PageObjects::Pages::Chat.new }
let(:channel_page) { PageObjects::Pages::ChatChannel.new }
let(:drawer_page) { PageObjects::Pages::ChatDrawer.new }
let(:lightbox) { PageObjects::Components::PhotoSwipe.new }
before do
chat_system_bootstrap(user_1, [channel_1, channel_2])
sign_in(user_1)
end
context "when drawer is closed" do
before { visit("/") }
context "when pressing dash" do
it "opens the drawer" do
page.send_keys("-")
expect(chat_page).to have_drawer
end
end
end
context "when drawer is opened" do
before do
visit("/")
chat_page.open_from_header
end
context "when pressing escape" do
context "when the composer is not focused" do
it "closes the drawer" do
expect(chat_page).to have_drawer
drawer_page.open_channel(channel_1)
page.send_keys(:tab) # ensures we focus out of input
page.send_keys(:escape)
expect(chat_page).to have_no_drawer
end
end
context "when the composer is focused" do
it "blurs the input" do
expect(chat_page).to have_drawer
drawer_page.open_channel(channel_1)
channel_page.composer.input.click
page.send_keys(:escape)
expect(chat_page).to have_drawer
end
end
context "when lightbox is open" do
fab!(:upload)
fab!(:message) do
Fabricate(:chat_message, chat_channel: channel_1, upload_ids: [upload.id])
end
it "does not close the drawer" do
expect(chat_page).to have_drawer
drawer_page.open_channel(channel_1)
find(".chat-img-upload").click
expect(lightbox).to be_visible
page.send_keys(:escape)
expect(lightbox).to be_hidden
expect(chat_page).to have_drawer
end
end
end
context "when pressing a letter" do
it "doesnt intercept the event" do
drawer_page.open_channel(channel_1)
page.send_keys(:tab) # simple way to ensure composer is not focused
page.send_keys("e")
expect(channel_page.composer.value).to eq("")
end
end
context "when using Up/Down arrows" do
it "navigates through the channels" do
drawer_page.open_channel(channel_1)
expect(chat_page).to have_drawer(channel_id: channel_1.id)
page.send_keys(%i[alt down])
expect(chat_page).to have_drawer(channel_id: channel_2.id)
page.send_keys(%i[alt down])
expect(chat_page).to have_drawer(channel_id: channel_1.id)
page.send_keys(%i[alt up])
expect(chat_page).to have_drawer(channel_id: channel_2.id)
end
end
end
end