diff options
Diffstat (limited to 'spec/helpers/groups')
-rw-r--r-- | spec/helpers/groups/group_members_helper_spec.rb | 62 |
1 files changed, 61 insertions, 1 deletions
diff --git a/spec/helpers/groups/group_members_helper_spec.rb b/spec/helpers/groups/group_members_helper_spec.rb index f5bc587bce3..ab11bc1f5fd 100644 --- a/spec/helpers/groups/group_members_helper_spec.rb +++ b/spec/helpers/groups/group_members_helper_spec.rb @@ -38,7 +38,9 @@ RSpec.describe Groups::GroupMembersHelper do shared_group, members: present_members(members_collection), invited: present_members(invited), - access_requests: present_members(access_requests) + access_requests: present_members(access_requests), + include_relations: [:inherited, :direct], + search: nil ) end @@ -96,6 +98,64 @@ RSpec.describe Groups::GroupMembersHelper do it 'sets `member_path` property' do expect(subject[:group][:member_path]).to eq('/groups/foo-bar/-/group_links/:id') end + + context 'inherited' do + let_it_be(:sub_shared_group) { create(:group, parent: shared_group) } + let_it_be(:sub_shared_with_group) { create(:group) } + let_it_be(:sub_group_group_link) { create(:group_group_link, shared_group: sub_shared_group, shared_with_group: sub_shared_with_group) } + + let_it_be(:subject_group) { sub_shared_group } + + before do + allow(helper).to receive(:group_group_member_path).with(sub_shared_group, ':id').and_return('/groups/foo-bar/-/group_members/:id') + allow(helper).to receive(:group_group_link_path).with(sub_shared_group, ':id').and_return('/groups/foo-bar/-/group_links/:id') + allow(helper).to receive(:can?).with(current_user, :admin_group_member, sub_shared_group).and_return(true) + allow(helper).to receive(:can?).with(current_user, :export_group_memberships, sub_shared_group).and_return(true) + end + + subject do + helper.group_members_app_data( + sub_shared_group, + members: present_members(members_collection), + invited: present_members(invited), + access_requests: present_members(access_requests), + include_relations: include_relations, + search: nil + ) + end + + using RSpec::Parameterized::TableSyntax + + where(:include_relations, :result) do + [:inherited, :direct] | lazy { [group_group_link, sub_group_group_link].map(&:id) } + [:inherited] | lazy { [group_group_link].map(&:id) } + [:direct] | lazy { [sub_group_group_link].map(&:id) } + end + + with_them do + it 'returns correct group links' do + expect(subject[:group][:members].map { |link| link[:id] }).to match_array(result) + end + end + + context 'when group_member_inherited_group disabled' do + before do + stub_feature_flags(group_member_inherited_group: false) + end + + where(:include_relations, :result) do + [:inherited, :direct] | lazy { [sub_group_group_link.id] } + [:inherited] | lazy { [sub_group_group_link.id] } + [:direct] | lazy { [sub_group_group_link.id] } + end + + with_them do + it 'always returns direct member links' do + expect(subject[:group][:members].map { |link| link[:id] }).to match_array(result) + end + end + end + end end context 'when pagination is not available' do |