diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-01-21 12:16:22 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-01-21 12:16:22 +0000 |
commit | cb6f08be88608936fbeafa535cf725e1eaa3ffeb (patch) | |
tree | 79a5474206546033b6fe428a0944a4b49c22a42e /spec/models | |
parent | 62b0d21a48b2adbfd4ac63159fe0efac73ada922 (diff) | |
download | gitlab-ce-cb6f08be88608936fbeafa535cf725e1eaa3ffeb.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/namespace_spec.rb | 60 |
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 |