diff options
Diffstat (limited to 'spec/models/preloaders')
-rw-r--r-- | spec/models/preloaders/project_root_ancestor_preloader_spec.rb | 90 | ||||
-rw-r--r-- | spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb | 49 |
2 files changed, 42 insertions, 97 deletions
diff --git a/spec/models/preloaders/project_root_ancestor_preloader_spec.rb b/spec/models/preloaders/project_root_ancestor_preloader_spec.rb index 2462e305597..b690bd3162c 100644 --- a/spec/models/preloaders/project_root_ancestor_preloader_spec.rb +++ b/spec/models/preloaders/project_root_ancestor_preloader_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Preloaders::ProjectRootAncestorPreloader do +RSpec.describe Preloaders::ProjectRootAncestorPreloader, feature_category: :system_access do let_it_be(:root_parent1) { create(:group, :private, name: 'root-1', path: 'root-1') } let_it_be(:root_parent2) { create(:group, name: 'root-2', path: 'root-2') } let_it_be(:guest_project) { create(:project, name: 'public guest', path: 'public-guest') } @@ -43,87 +43,47 @@ RSpec.describe Preloaders::ProjectRootAncestorPreloader do end end - context 'when use_traversal_ids FF is enabled' do - context 'when the preloader is used' do - context 'when no additional preloads are provided' do - before do - preload_ancestors(:group) - end - - it_behaves_like 'executes N matching DB queries', 0 - end - - context 'when additional preloads are provided' do - let(:additional_preloads) { [:route] } - let(:root_query_regex) { /\ASELECT.+FROM "routes" WHERE "routes"."source_id" = \d+/ } - - before do - preload_ancestors - end - - it_behaves_like 'executes N matching DB queries', 0, :full_path - end - - context 'when projects are an array and not an ActiveRecord::Relation' do - before do - described_class.new(projects, :namespace, additional_preloads).execute - end - - it_behaves_like 'executes N matching DB queries', 4 - end - end - - context 'when the preloader is not used' do - it_behaves_like 'executes N matching DB queries', 4 - end - - context 'when using a :group sti name and passing projects in a user namespace' do - let(:projects) { [private_developer_project] } - let(:additional_preloads) { [:ip_restrictions, :saml_provider] } - - it 'does not load a nil value for root_ancestor' do + context 'when the preloader is used' do + context 'when no additional preloads are provided' do + before do preload_ancestors(:group) - - expect(pristine_projects.first.root_ancestor).to eq(private_developer_project.root_ancestor) end - end - end - context 'when use_traversal_ids FF is disabled' do - before do - stub_feature_flags(use_traversal_ids: false) + it_behaves_like 'executes N matching DB queries', 0 end - context 'when the preloader is used' do + context 'when additional preloads are provided' do + let(:additional_preloads) { [:route] } + let(:root_query_regex) { /\ASELECT.+FROM "routes" WHERE "routes"."source_id" = \d+/ } + before do preload_ancestors end - context 'when no additional preloads are provided' do - it_behaves_like 'executes N matching DB queries', 4 - end - - context 'when additional preloads are provided' do - let(:additional_preloads) { [:route] } - let(:root_query_regex) { /\ASELECT.+FROM "routes" WHERE "routes"."source_id" = \d+/ } + it_behaves_like 'executes N matching DB queries', 0, :full_path + end - it_behaves_like 'executes N matching DB queries', 4, :full_path + context 'when projects are an array and not an ActiveRecord::Relation' do + before do + described_class.new(projects, :namespace, additional_preloads).execute end - end - context 'when the preloader is not used' do it_behaves_like 'executes N matching DB queries', 4 end + end - context 'when using a :group sti name and passing projects in a user namespace' do - let(:projects) { [private_developer_project] } - let(:additional_preloads) { [:ip_restrictions, :saml_provider] } + context 'when the preloader is not used' do + it_behaves_like 'executes N matching DB queries', 4 + end - it 'does not load a nil value for root_ancestor' do - preload_ancestors(:group) + context 'when using a :group sti name and passing projects in a user namespace' do + let(:projects) { [private_developer_project] } + let(:additional_preloads) { [:ip_restrictions, :saml_provider] } - expect(pristine_projects.first.root_ancestor).to eq(private_developer_project.root_ancestor) - end + it 'does not load a nil value for root_ancestor' do + preload_ancestors(:group) + + expect(pristine_projects.first.root_ancestor).to eq(private_developer_project.root_ancestor) end end 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 5befa3ab66f..3dc409cbcc2 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 @@ -34,46 +34,31 @@ RSpec.describe Preloaders::UserMaxAccessLevelInGroupsPreloader, feature_category let(:groups) { [group1, group2, group3, child_maintainer, child_indirect_access] } - context 'when traversal_ids feature flag is disabled' do - it_behaves_like 'executes N max member permission queries to the DB' do - before do - stub_feature_flags(use_traversal_ids: false) - described_class.new(groups, user).execute - end - - # One query for group with no access and another one per group where the user is not a direct member - let(:expected_query_count) { 2 } + it_behaves_like 'executes N max member permission queries to the DB' do + before do + described_class.new(groups, user).execute end - end - - context 'when traversal_ids feature flag is enabled' do - it_behaves_like 'executes N max member permission queries to the DB' do - before do - stub_feature_flags(use_traversal_ids: true) - described_class.new(groups, user).execute - end - let(:expected_query_count) { 0 } - end + 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) } + 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] } + let(:groups) { [group4, group4_subgroup] } - before do - create(:group_group_link, :guest, shared_with_group: group1, shared_group: group4) - end + before do + create(:group_group_link, :guest, shared_with_group: group1, shared_group: group4) + end - it 'sets the right access level in cache for groups arising from group shares' do - described_class.new(groups, user).execute + 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) + groups.each do |group| + cached_access_level = group.max_member_access_for_user(user) - expect(cached_access_level).to eq(Gitlab::Access::GUEST) - end + expect(cached_access_level).to eq(Gitlab::Access::GUEST) end end end |