Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/preloaders')
-rw-r--r--spec/models/preloaders/project_root_ancestor_preloader_spec.rb90
-rw-r--r--spec/models/preloaders/user_max_access_level_in_groups_preloader_spec.rb49
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