mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-23 00:24:19 +08:00
This change allows the correct number of members to be added when creating a group direct message, based on the site setting chat_max_direct_message_users. Previously we counted the current user within the max user limit and therefore the count was off by 1.
148 lines
4.9 KiB
Ruby
Vendored
148 lines
4.9 KiB
Ruby
Vendored
# frozen_string_literal: true
|
||
|
||
RSpec.describe "Flag message", type: :system do
|
||
let(:chat_page) { PageObjects::Pages::Chat.new }
|
||
|
||
fab!(:current_user) { Fabricate(:user) }
|
||
|
||
before do
|
||
SiteSetting.chat_allowed_groups = Group::AUTO_GROUPS[:everyone]
|
||
SiteSetting.direct_message_enabled_groups = Group::AUTO_GROUPS[:everyone]
|
||
SiteSetting.chat_max_direct_message_users = 3
|
||
chat_system_bootstrap
|
||
sign_in(current_user)
|
||
end
|
||
|
||
it "lists preloaded channels by default" do
|
||
channel_1 = Fabricate(:chat_channel)
|
||
channel_1.add(current_user)
|
||
|
||
visit("/")
|
||
chat_page.open_new_message
|
||
|
||
expect(chat_page.message_creator).to be_listing(channel_1)
|
||
end
|
||
|
||
it "doesn’t show create group option when filtered" do
|
||
visit("/")
|
||
chat_page.open_new_message
|
||
chat_page.message_creator.filter("x")
|
||
|
||
expect(chat_page).to have_no_css("#new-group-chat")
|
||
end
|
||
|
||
it "can filter channels" do
|
||
channel_1 = Fabricate(:chat_channel)
|
||
channel_2 = Fabricate(:chat_channel)
|
||
channel_1.add(current_user)
|
||
channel_2.add(current_user)
|
||
|
||
visit("/")
|
||
chat_page.open_new_message
|
||
chat_page.message_creator.filter(channel_2.title)
|
||
|
||
expect(chat_page.message_creator).to be_listing(channel_2)
|
||
expect(chat_page.message_creator).to be_not_listing(channel_1)
|
||
end
|
||
|
||
it "can filter users" do
|
||
user_1 = Fabricate(:user)
|
||
user_2 = Fabricate(:user)
|
||
|
||
visit("/")
|
||
chat_page.open_new_message
|
||
chat_page.message_creator.filter(user_2.username)
|
||
|
||
expect(chat_page.message_creator).to be_listing(user_2)
|
||
expect(chat_page.message_creator).to be_not_listing(user_1)
|
||
end
|
||
|
||
it "can filter direct message channels" do
|
||
channel_1 = Fabricate(:direct_message_channel, users: [current_user])
|
||
channel_2 =
|
||
Fabricate(
|
||
:direct_message_channel,
|
||
users: [current_user, Fabricate(:user), Fabricate(:user, username: "user_1")],
|
||
)
|
||
|
||
visit("/")
|
||
chat_page.open_new_message
|
||
chat_page.message_creator.filter("user_1")
|
||
|
||
expect(chat_page.message_creator).to be_listing(channel_2)
|
||
expect(chat_page.message_creator).to be_not_listing(channel_1)
|
||
end
|
||
|
||
it "can create a new group message" do
|
||
user_1 = Fabricate(:user)
|
||
user_2 = Fabricate(:user)
|
||
|
||
visit("/")
|
||
chat_page.prefers_full_page
|
||
chat_page.open_new_message
|
||
chat_page.find("#new-group-chat").click
|
||
chat_page.find(".chat-message-creator__new-group-header__input").fill_in(with: "cats")
|
||
chat_page.find(".chat-message-creator__members-input").fill_in(with: user_1.username)
|
||
chat_page.message_creator.click_row(user_1)
|
||
chat_page.find(".chat-message-creator__members-input").fill_in(with: user_2.username)
|
||
chat_page.message_creator.click_row(user_2)
|
||
page.find(".create-chat-group").click
|
||
|
||
expect(page).to have_current_path(%r{/chat/c/cats/\d+})
|
||
end
|
||
|
||
it "can create a new group by clicking on an user group" do
|
||
user_1 = Fabricate(:user)
|
||
user_2 = Fabricate(:user)
|
||
group = Fabricate(:public_group, users: [user_1, user_2])
|
||
|
||
visit("/")
|
||
chat_page.prefers_full_page
|
||
chat_page.open_new_message
|
||
chat_page.find(".chat-message-creator__search-input__input").fill_in(with: group.name)
|
||
chat_page.message_creator.click_row(group)
|
||
chat_page.find(".chat-message-creator__new-group-header__input").fill_in(with: "dogs")
|
||
chat_page.find(".create-chat-group").click
|
||
|
||
expect(page).to have_current_path(%r{/chat/c/dogs/\d+})
|
||
end
|
||
|
||
it "doesn’t allow adding a user group if it will exceed the member limit" do
|
||
user_1 = Fabricate(:user)
|
||
user_2 = Fabricate(:user)
|
||
user_3 = Fabricate(:user)
|
||
user_4 = Fabricate(:user)
|
||
group = Fabricate(:public_group, users: [user_1, user_2, user_3])
|
||
|
||
visit("/")
|
||
chat_page.prefers_full_page
|
||
chat_page.open_new_message
|
||
chat_page.find("#new-group-chat").click
|
||
chat_page.find(".chat-message-creator__new-group-header__input").fill_in(with: "hamsters")
|
||
chat_page.find(".chat-message-creator__members-input").fill_in(with: user_4.username)
|
||
chat_page.message_creator.click_row(user_4)
|
||
chat_page.find(".chat-message-creator__members-input").fill_in(with: group.name)
|
||
chat_page.message_creator.click_row(group)
|
||
|
||
expect(chat_page.message_creator).to have_css("div[data-disabled]")
|
||
expect(chat_page.message_creator).to be_listing(group)
|
||
chat_page.message_creator.click_row(group)
|
||
expect(chat_page.message_creator).to be_listing(group)
|
||
end
|
||
|
||
it "displays users status next to names" do
|
||
SiteSetting.enable_user_status = true
|
||
SiteSetting.chat_allowed_groups = Group::AUTO_GROUPS[:everyone]
|
||
SiteSetting.direct_message_enabled_groups = Group::AUTO_GROUPS[:everyone]
|
||
|
||
current_user.set_status!("gone surfing", "ocean")
|
||
|
||
visit("/")
|
||
chat_page.open_new_message
|
||
chat_page.message_creator.filter(current_user.username)
|
||
|
||
expect(chat_page).to have_selector(
|
||
".user-status-message img[alt='#{current_user.user_status.emoji}']",
|
||
)
|
||
end
|
||
end
|