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/namespace_spec.rb')
-rw-r--r--spec/models/namespace_spec.rb85
1 files changed, 84 insertions, 1 deletions
diff --git a/spec/models/namespace_spec.rb b/spec/models/namespace_spec.rb
index 373f3a89e14..ea1ce067e4d 100644
--- a/spec/models/namespace_spec.rb
+++ b/spec/models/namespace_spec.rb
@@ -156,7 +156,7 @@ RSpec.describe Namespace do
end
end
- describe 'scopes' do
+ describe 'scopes', :aggregate_failures do
let_it_be(:namespace1) { create(:group, name: 'Namespace 1', path: 'namespace-1') }
let_it_be(:namespace2) { create(:group, name: 'Namespace 2', path: 'namespace-2') }
let_it_be(:namespace1sub) { create(:group, name: 'Sub Namespace', path: 'sub-namespace', parent: namespace1) }
@@ -181,6 +181,15 @@ RSpec.describe Namespace do
expect(described_class.filter_by_path(namespace1.path.upcase)).to eq([namespace1])
end
end
+
+ describe '.sorted_by_similarity_and_parent_id_desc' do
+ it 'returns exact matches and top level groups first' do
+ expect(described_class.sorted_by_similarity_and_parent_id_desc(namespace1.path)).to eq([namespace1, namespace2, namespace2sub, namespace1sub, namespace])
+ expect(described_class.sorted_by_similarity_and_parent_id_desc(namespace2.path)).to eq([namespace2, namespace1, namespace2sub, namespace1sub, namespace])
+ expect(described_class.sorted_by_similarity_and_parent_id_desc(namespace2sub.name)).to eq([namespace2sub, namespace1sub, namespace2, namespace1, namespace])
+ expect(described_class.sorted_by_similarity_and_parent_id_desc('Namespace')).to eq([namespace2, namespace1, namespace2sub, namespace1sub, namespace])
+ end
+ end
end
describe 'delegate' do
@@ -965,6 +974,14 @@ RSpec.describe Namespace do
end
end
+ shared_examples 'disabled feature flag when traversal_ids is blank' do
+ before do
+ namespace.traversal_ids = []
+ end
+
+ it { is_expected.to eq false }
+ end
+
describe '#use_traversal_ids?' do
let_it_be(:namespace, reload: true) { create(:namespace) }
@@ -976,6 +993,8 @@ RSpec.describe Namespace do
end
it { is_expected.to eq true }
+
+ it_behaves_like 'disabled feature flag when traversal_ids is blank'
end
context 'when use_traversal_ids feature flag is false' do
@@ -987,6 +1006,62 @@ RSpec.describe Namespace do
end
end
+ describe '#use_traversal_ids_for_root_ancestor?' do
+ let_it_be(:namespace, reload: true) { create(:namespace) }
+
+ subject { namespace.use_traversal_ids_for_root_ancestor? }
+
+ context 'when use_traversal_ids_for_root_ancestor feature flag is true' do
+ before do
+ stub_feature_flags(use_traversal_ids_for_root_ancestor: true)
+ end
+
+ it { is_expected.to eq true }
+
+ it_behaves_like 'disabled feature flag when traversal_ids is blank'
+ end
+
+ context 'when use_traversal_ids_for_root_ancestor feature flag is false' do
+ before do
+ stub_feature_flags(use_traversal_ids_for_root_ancestor: false)
+ end
+
+ it { is_expected.to eq false }
+ end
+ end
+
+ describe '#use_traversal_ids_for_ancestors?' do
+ let_it_be(:namespace, reload: true) { create(:namespace) }
+
+ subject { namespace.use_traversal_ids_for_ancestors? }
+
+ context 'when use_traversal_ids_for_ancestors? feature flag is true' do
+ before do
+ stub_feature_flags(use_traversal_ids_for_ancestors: true)
+ end
+
+ it { is_expected.to eq true }
+
+ it_behaves_like 'disabled feature flag when traversal_ids is blank'
+ end
+
+ context 'when use_traversal_ids_for_ancestors? feature flag is false' do
+ before do
+ stub_feature_flags(use_traversal_ids_for_ancestors: false)
+ end
+
+ it { is_expected.to eq false }
+ end
+
+ context 'when use_traversal_ids? feature flag is false' do
+ before do
+ stub_feature_flags(use_traversal_ids: false)
+ end
+
+ it { is_expected.to eq false }
+ end
+ end
+
describe '#users_with_descendants' do
let(:user_a) { create(:user) }
let(:user_b) { create(:user) }
@@ -1058,6 +1133,14 @@ RSpec.describe Namespace do
end
include_examples '#all_projects'
+
+ # Using #self_and_descendant instead of #self_and_descendant_ids can produce
+ # very slow queries.
+ it 'calls self_and_descendant_ids' do
+ namespace = create(:group)
+ expect(namespace).to receive(:self_and_descendant_ids)
+ namespace.all_projects
+ end
end
context 'with use_traversal_ids feature flag disabled' do