discourse/spec/system/group_card_spec.rb
Selase Krakani e67fe1d07c
FIX: Member Highlights on Group Cards (#22828)
By default, only 10 members are highlighted on group cards. However,
joining/leaving a big group via the buttons on the group card results in
up to 50 members being highlighted. For large groups, this causes the card
to move off-screen.

This happens because, while the initial render explicitly fetches only 10
members, we don't seem to apply the same limit as part of the member
reload performed when a user leaves/joins via the buttons on the card.

This PR fixes that by only making the first 10 users available for
highlight regardless of the number of members loaded in the store.
2023-07-28 14:33:42 +00:00

53 lines
1.5 KiB
Ruby

# frozen_string_literal: true
describe "Group Card", type: :system do
fab!(:current_user) { Fabricate(:user) }
fab!(:members) { Fabricate.times(12, :user) }
fab!(:topic) { Fabricate(:topic) }
fab!(:group) { Fabricate(:public_group, users: members) }
let(:mention) { "@#{group.name}" }
let(:post_with_mention) do
PostCreator.create!(current_user, topic_id: topic.id, raw: "Hello #{mention}")
end
let(:topic_page) { PageObjects::Pages::Topic.new }
let(:group_card) { PageObjects::Components::GroupCard.new }
before do
Jobs.run_immediately!
sign_in(current_user)
end
context "when joining/leaving a group" do
it "shows only highlighted members" do
topic_page.visit_topic(topic, post_number: post_with_mention.post_number)
topic_page.click_mention(post_with_mention, mention)
expect(group_card).to have_highlighted_member_count_of(
PageObjects::Components::GroupCard::MAX_MEMBER_HIGHLIGHT_COUNT,
)
group_card.click_join_button
expect(group_card).to have_leave_button
group.reload
expect(group.users).to include(current_user)
expect(group_card).to have_highlighted_member_count_of(
PageObjects::Components::GroupCard::MAX_MEMBER_HIGHLIGHT_COUNT,
)
group_card.click_leave_button
expect(group_card).to have_join_button
group.reload
expect(group.users).not_to include(current_user)
expect(group_card).to have_highlighted_member_count_of(
PageObjects::Components::GroupCard::MAX_MEMBER_HIGHLIGHT_COUNT,
)
end
end
end