FIX: chat direct message group user limit is off by 1 (#27014)

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.
This commit is contained in:
David Battersby
2024-06-03 12:11:49 +04:00
committed by GitHub
parent 82cccf89e1
commit 4e80c9eb13
6 changed files with 35 additions and 35 deletions

View File

@ -29,12 +29,12 @@ RSpec.describe Chat::AddUsersToChannel do
before { channel.add(current_user) }
it "fetches users to add" do
expect(result.users.map(&:username)).to contain_exactly(*users.map(&:username))
expect(result.target_users.map(&:username)).to contain_exactly(*users.map(&:username))
end
it "includes users from groups" do
params.merge!(groups: [group.name])
expect(result.users.map(&:username)).to include(
expect(result.target_users.map(&:username)).to include(
group_user_1.username,
group_user_2.username,
)
@ -59,7 +59,9 @@ RSpec.describe Chat::AddUsersToChannel do
it "doesn't include existing direct message users" do
Chat::DirectMessageUser.create!(user: users.first, direct_message: direct_message)
expect(result.users.map(&:username)).to contain_exactly(*users[1..-1].map(&:username))
expect(result.target_users.map(&:username)).to contain_exactly(
*users[1..-1].map(&:username),
)
end
it "creates memberships" do
@ -77,7 +79,7 @@ RSpec.describe Chat::AddUsersToChannel do
end
it "creates a chat message to show added users" do
added_users = result.users
added_users = result.target_users
channel.chat_messages.last.tap do |message|
expect(message.message).to eq(
@ -93,10 +95,10 @@ RSpec.describe Chat::AddUsersToChannel do
end
end
context "when usernames exceeds chat_max_direct_message_users" do
context "when users exceed max direct message user limit" do
before { SiteSetting.chat_max_direct_message_users = 4 }
it { is_expected.to fail_a_step(:validate_user_count) }
it { is_expected.to fail_a_policy(:satisfies_dms_max_users_limit) }
end
context "when channel is not found" do

View File

@ -111,15 +111,16 @@ RSpec.describe "Flag message", type: :system do
user_1 = Fabricate(:user)
user_2 = Fabricate(:user)
user_3 = Fabricate(:user)
group = Fabricate(:public_group, users: [user_1, user_2])
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_3.username)
chat_page.message_creator.click_row(user_3)
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)