discourse/spec/system/group_card_spec.rb
Daniel Waterworth 6e161d3e75
DEV: Allow fab! without block (#24314)
The most common thing that we do with fab! is:

    fab!(:thing) { Fabricate(:thing) }

This commit adds a shorthand for this which is just simply:

    fab!(:thing)

i.e. If you omit the block, then, by default, you'll get a `Fabricate`d object using the fabricator of the same name.
2023-11-09 16:47:59 -06: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)
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