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/protected_branch_spec.rb')
-rw-r--r--spec/models/protected_branch_spec.rb33
1 files changed, 18 insertions, 15 deletions
diff --git a/spec/models/protected_branch_spec.rb b/spec/models/protected_branch_spec.rb
index 3936e7127b8..54a90ca6049 100644
--- a/spec/models/protected_branch_spec.rb
+++ b/spec/models/protected_branch_spec.rb
@@ -171,8 +171,8 @@ RSpec.describe ProtectedBranch do
let_it_be(:project) { create(:project, :repository) }
let_it_be(:protected_branch) { create(:protected_branch, project: project, name: "“jawn”") }
- let(:feature_flag) { true }
- let(:dry_run) { true }
+ let(:use_new_cache_implementation) { true }
+ let(:rely_on_new_cache) { true }
shared_examples_for 'hash based cache implementation' do
it 'calls only hash based cache implementation' do
@@ -182,19 +182,22 @@ RSpec.describe ProtectedBranch do
expect(Rails.cache).not_to receive(:fetch)
- described_class.protected?(project, 'missing-branch', dry_run: dry_run)
+ described_class.protected?(project, 'missing-branch')
end
end
before do
- stub_feature_flags(hash_based_cache_for_protected_branches: feature_flag)
+ stub_feature_flags(hash_based_cache_for_protected_branches: use_new_cache_implementation)
+ stub_feature_flags(rely_on_protected_branches_cache: rely_on_new_cache)
allow(described_class).to receive(:matching).and_call_original
# the original call works and warms the cache
- described_class.protected?(project, protected_branch.name, dry_run: dry_run)
+ described_class.protected?(project, protected_branch.name)
end
- context 'Dry-run: true' do
+ context 'Dry-run: true (rely_on_protected_branches_cache is off, new hash-based is used)' do
+ let(:rely_on_new_cache) { false }
+
it 'recalculates a fresh value every time in order to check the cache is not returning stale data' do
expect(described_class).to receive(:matching).with(protected_branch.name, protected_refs: anything).twice
@@ -204,21 +207,21 @@ RSpec.describe ProtectedBranch do
it_behaves_like 'hash based cache implementation'
end
- context 'Dry-run: false' do
- let(:dry_run) { false }
+ context 'Dry-run: false (rely_on_protected_branches_cache is enabled, new hash-based cache is used)' do
+ let(:rely_on_new_cache) { true }
it 'correctly invalidates a cache' do
expect(described_class).to receive(:matching).with(protected_branch.name, protected_refs: anything).exactly(3).times.and_call_original
create_params = { name: 'bar', merge_access_levels_attributes: [{ access_level: Gitlab::Access::DEVELOPER }] }
branch = ProtectedBranches::CreateService.new(project, project.owner, create_params).execute
- expect(described_class.protected?(project, protected_branch.name, dry_run: dry_run)).to eq(true)
+ expect(described_class.protected?(project, protected_branch.name)).to eq(true)
ProtectedBranches::UpdateService.new(project, project.owner, name: 'ber').execute(branch)
- expect(described_class.protected?(project, protected_branch.name, dry_run: dry_run)).to eq(true)
+ expect(described_class.protected?(project, protected_branch.name)).to eq(true)
ProtectedBranches::DestroyService.new(project, project.owner).execute(branch)
- expect(described_class.protected?(project, protected_branch.name, dry_run: dry_run)).to eq(true)
+ expect(described_class.protected?(project, protected_branch.name)).to eq(true)
end
it_behaves_like 'hash based cache implementation'
@@ -229,7 +232,7 @@ RSpec.describe ProtectedBranch do
project.touch
- described_class.protected?(project, protected_branch.name, dry_run: dry_run)
+ described_class.protected?(project, protected_branch.name)
end
end
@@ -240,19 +243,19 @@ RSpec.describe ProtectedBranch do
another_project = create(:project)
ProtectedBranches::CreateService.new(another_project, another_project.owner, name: 'bar').execute
- described_class.protected?(project, protected_branch.name, dry_run: dry_run)
+ described_class.protected?(project, protected_branch.name)
end
end
it 'correctly uses the cached version' do
expect(described_class).not_to receive(:matching)
- expect(described_class.protected?(project, protected_branch.name, dry_run: dry_run)).to eq(true)
+ expect(described_class.protected?(project, protected_branch.name)).to eq(true)
end
end
context 'when feature flag hash_based_cache_for_protected_branches is off' do
- let(:feature_flag) { false }
+ let(:use_new_cache_implementation) { false }
it 'does not call hash based cache implementation' do
expect(ProtectedBranches::CacheService).not_to receive(:new)