# 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