summaryrefslogtreecommitdiff
path: root/spec/models
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-01-21 12:16:22 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-01-21 12:16:22 +0000
commitcb6f08be88608936fbeafa535cf725e1eaa3ffeb (patch)
tree79a5474206546033b6fe428a0944a4b49c22a42e /spec/models
parent62b0d21a48b2adbfd4ac63159fe0efac73ada922 (diff)
downloadgitlab-ce-cb6f08be88608936fbeafa535cf725e1eaa3ffeb.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models')
-rw-r--r--spec/models/namespace_spec.rb60
1 files changed, 60 insertions, 0 deletions
diff --git a/spec/models/namespace_spec.rb b/spec/models/namespace_spec.rb
index 5da0f7a134c..81f9ff92ebd 100644
--- a/spec/models/namespace_spec.rb
+++ b/spec/models/namespace_spec.rb
@@ -361,6 +361,66 @@ RSpec.describe Namespace do
context 'linear' do
it_behaves_like 'namespace traversal scopes'
end
+
+ shared_examples 'makes recursive queries' do
+ specify do
+ expect { subject }.to make_queries_matching(/WITH RECURSIVE/)
+ end
+ end
+
+ shared_examples 'does not make recursive queries' do
+ specify do
+ expect { subject }.not_to make_queries_matching(/WITH RECURSIVE/)
+ end
+ end
+
+ describe '.self_and_descendants' do
+ let_it_be(:namespace) { create(:namespace) }
+
+ subject { described_class.where(id: namespace).self_and_descendants.load }
+
+ it_behaves_like 'does not make recursive queries'
+
+ context 'when feature flag :use_traversal_ids is disabled' do
+ before do
+ stub_feature_flags(use_traversal_ids: false)
+ end
+
+ it_behaves_like 'makes recursive queries'
+ end
+
+ context 'when feature flag :use_traversal_ids_for_descendants_scopes is disabled' do
+ before do
+ stub_feature_flags(use_traversal_ids_for_descendants_scopes: false)
+ end
+
+ it_behaves_like 'makes recursive queries'
+ end
+ end
+
+ describe '.self_and_descendant_ids' do
+ let_it_be(:namespace) { create(:namespace) }
+
+ subject { described_class.where(id: namespace).self_and_descendant_ids.load }
+
+ it_behaves_like 'does not make recursive queries'
+
+ context 'when feature flag :use_traversal_ids is disabled' do
+ before do
+ stub_feature_flags(use_traversal_ids: false)
+ end
+
+ it_behaves_like 'makes recursive queries'
+ end
+
+ context 'when feature flag :use_traversal_ids_for_descendants_scopes is disabled' do
+ before do
+ stub_feature_flags(use_traversal_ids_for_descendants_scopes: false)
+ end
+
+ it_behaves_like 'makes recursive queries'
+ end
+ end
end
context 'traversal_ids on create' do