diff options
Diffstat (limited to 'spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb')
-rw-r--r-- | spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb b/spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb index 5e2aaa8b456..7d04817b621 100644 --- a/spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb +++ b/spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb @@ -55,6 +55,43 @@ RSpec.describe Preloaders::UserMaxAccessLevelInGroupsPreloader do let(:expected_query_count) { 0 } end + + context 'for groups arising from group shares' do + let_it_be(:group4) { create(:group, :private) } + let_it_be(:group4_subgroup) { create(:group, :private, parent: group4) } + + let(:groups) { [group4, group4_subgroup] } + + before do + create(:group_group_link, :guest, shared_with_group: group1, shared_group: group4) + end + + context 'when `include_memberships_from_group_shares_in_preloader` feature flag is disabled' do + before do + stub_feature_flags(include_memberships_from_group_shares_in_preloader: false) + end + + it 'sets access_level to `NO_ACCESS` in cache for groups arising from group shares' do + described_class.new(groups, user).execute + + groups.each do |group| + cached_access_level = group.max_member_access_for_user(user) + + expect(cached_access_level).to eq(Gitlab::Access::NO_ACCESS) + end + end + end + + it 'sets the right access level in cache for groups arising from group shares' do + described_class.new(groups, user).execute + + groups.each do |group| + cached_access_level = group.max_member_access_for_user(user) + + expect(cached_access_level).to eq(Gitlab::Access::GUEST) + end + end + end end end end |