discourse/plugins/chat/spec/system/channel_members_page_spec.rb
Joffrey JAFFEUX 27407a25b4
FIX: correctly shows as disabled a user who can't chat (#26010)
Prior to this fix we were checking if user was not part of a group which allows to chat, but we were not checking if this user was part of groups who can use direct messages.
2024-03-05 09:13:42 +01:00

131 lines
4.0 KiB
Ruby

# frozen_string_literal: true
RSpec.describe "Channel - Info - Members page", type: :system do
let(:chat_page) { PageObjects::Pages::Chat.new }
fab!(:current_user) { Fabricate(:user) }
fab!(:channel_1) { Fabricate(:category_channel) }
before do
SiteSetting.chat_allowed_groups = Group::AUTO_GROUPS[:everyone]
SiteSetting.direct_message_enabled_groups = Group::AUTO_GROUPS[:everyone]
chat_system_bootstrap
sign_in(current_user)
end
context "as unauthorized user" do
before { SiteSetting.chat_allowed_groups = Fabricate(:group).id }
it "can't see channel members" do
chat_page.visit_channel_members(channel_1)
expect(page).to have_current_path("/latest")
end
end
context "as authorized user" do
context "with no members" do
it "redirects to settings page" do
chat_page.visit_channel_members(channel_1)
expect(page).to have_current_path("/chat/c/#{channel_1.slug}/#{channel_1.id}/info/members")
end
end
context "with members" do
before do
channel_1.add(current_user)
channel_1.add(Fabricate(:user, username: "cat"))
98.times { channel_1.add(Fabricate(:user)) }
Jobs.run_immediately!
channel_1.update!(user_count_stale: true)
Jobs::Chat::UpdateChannelUserCount.new.execute(chat_channel_id: channel_1.id)
end
xit "shows all members" do
chat_page.visit_channel_members(channel_1)
expect(page).to have_selector(".c-channel-members__list-item", count: 60)
scroll_to(find(".c-channel-members__list-item:nth-child(60)"))
expect(page).to have_selector(".c-channel-members__list-item", count: 100)
scroll_to(find(".c-channel-members__list-item:nth-child(100)"))
expect(page).to have_selector(".c-channel-members__list-item", count: 100)
end
context "with filter" do
it "filters members" do
chat_page.visit_channel_members(channel_1)
find(".c-channel-members__filter").fill_in(with: "cat")
expect(page).to have_selector(".c-channel-members__list-item", count: 1, text: "cat")
end
end
context "with user status" do
xit "renders status next to name" do
SiteSetting.enable_user_status = true
current_user.set_status!("walking the dog", "dog")
chat_page.visit_channel_members(channel_1)
expect(page).to have_selector(
".-member .user-status-message img[alt='#{current_user.user_status.emoji}']",
)
end
end
end
end
context "when category channel" do
it "doesn’t allow to add members" do
chat_page.visit_channel_members(channel_1)
expect(chat_page).to have_no_css(".c-channel-members__list-item.-add-member")
end
end
context "when category channel" do
fab!(:channel_1) do
Fabricate(
:direct_message_channel,
slug: "test-channel",
users: [current_user, Fabricate(:user), Fabricate(:user)],
group: true,
)
end
it "allows to add members" do
new_user = Fabricate(:user)
chat_page.visit_channel_members(channel_1)
chat_page.find(".c-channel-members__list-item.-add-member").click
chat_page.find(".chat-message-creator__members-input").fill_in(with: new_user.username)
chat_page.find(".chat-message-creator__list-item").click
chat_page.find(".add-to-channel").click
expect(chat_page).to have_current_path("/chat/c/#{channel_1.slug}/#{channel_1.id}")
expect(chat_page).to have_content(
I18n.t(
"chat.channel.users_invited_to_channel",
invited_users: "@#{new_user.username}",
inviting_user: "@#{current_user.username}",
count: 1,
),
)
end
end
context "when on mobile", mobile: true do
it "has a link to the settings" do
chat_page.visit_channel_members(channel_1)
expect(page).to have_css(
".c-back-button[href='/chat/c/#{channel_1.slug}/#{channel_1.id}/info/settings']",
)
end
end
end