discourse/plugins/chat/spec/system/user_card_spec.rb
David Battersby d5b944f1de
FEATURE: add chat direct message button to user profile (#26135)
This change adds the chat direct message button to user profiles, similarly to how we use it within the user card.
2024-03-18 11:17:37 +08:00

77 lines
1.9 KiB
Ruby

# frozen_string_literal: true
RSpec.describe "User card", type: :system do
fab!(:current_user) { Fabricate(:user) }
fab!(:topic_1) { Fabricate(:topic) }
let(:chat) { PageObjects::Pages::Chat.new }
before { chat_system_bootstrap }
shared_examples "not showing chat button" do
it "doesn’t show the chat button" do
expect(page).to have_no_css(".chat-direct-message-btn")
end
end
shared_examples "showing chat button" do
it "shows the chat button" do
expect(page).to have_css(".chat-direct-message-btn")
end
end
context "when user" do
context "when chat disabled" do
before do
SiteSetting.chat_enabled = false
sign_in(current_user)
end
context "when showing user card" do
before do
visit("/")
find("[data-user-card='#{topic_1.user.username}'").click
end
include_examples "not showing chat button"
end
end
context "when chat enabled" do
before { sign_in(current_user) }
context "when showing user card" do
before do
visit("/")
find("[data-user-card='#{topic_1.user.username}'").click
end
include_examples "showing chat button"
context "when clicking chat button" do
before { find(".chat-direct-message-btn").click }
it "opens correct channel" do
# at this point the ChatChannel is not created yet
expect(page).to have_css(".chat-drawer.is-expanded")
expect(page).to have_css(
".chat-drawer.is-expanded[data-chat-channel-id='#{Chat::Channel.last.id}']",
)
end
end
end
end
end
context "when anonymous" do
context "when showing user card" do
before do
visit("/")
find("[data-user-card='#{topic_1.user.username}'").click
end
include_examples "not showing chat button"
end
end
end