summaryrefslogtreecommitdiff
path: root/spec/models/repository_spec.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-12 18:09:21 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-12 18:09:21 +0000
commit43e3dc2f95a25c600e08f65d4f1c406a1a63ed3d (patch)
treedb5c72020c7c8916020c8aff7c1b7128028d650b /spec/models/repository_spec.rb
parent2c89e169769ead722394a79ed67fcd08e96863dd (diff)
downloadgitlab-ce-43e3dc2f95a25c600e08f65d4f1c406a1a63ed3d.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models/repository_spec.rb')
-rw-r--r--spec/models/repository_spec.rb59
1 files changed, 38 insertions, 21 deletions
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb
index 1e558131dc6..77114696fd2 100644
--- a/spec/models/repository_spec.rb
+++ b/spec/models/repository_spec.rb
@@ -500,45 +500,62 @@ describe Repository do
let(:branch_names) { %w(test beep boop definitely_merged) }
let(:already_merged) { Set.new(["definitely_merged"]) }
- let(:merge_state_hash) do
+ let(:write_hash) do
{
- "test" => false,
- "beep" => false,
- "boop" => false,
- "definitely_merged" => true
+ "test" => Gitlab::Redis::Boolean.new(false).to_s,
+ "beep" => Gitlab::Redis::Boolean.new(false).to_s,
+ "boop" => Gitlab::Redis::Boolean.new(false).to_s,
+ "definitely_merged" => Gitlab::Redis::Boolean.new(true).to_s
}
end
- let_it_be(:cache) do
- caching_config_hash = Gitlab::Redis::Cache.params
- ActiveSupport::Cache.lookup_store(:redis_cache_store, caching_config_hash)
- end
-
- let(:repository_cache) do
- Gitlab::RepositoryCache.new(repository, backend: Rails.cache)
+ let(:read_hash) do
+ {
+ "test" => Gitlab::Redis::Boolean.new(false).to_s,
+ "beep" => Gitlab::Redis::Boolean.new(false).to_s,
+ "boop" => Gitlab::Redis::Boolean.new(false).to_s,
+ "definitely_merged" => Gitlab::Redis::Boolean.new(true).to_s
+ }
end
- let(:cache_key) { repository_cache.cache_key(:merged_branch_names) }
+ let(:cache) { repository.send(:redis_hash_cache) }
+ let(:cache_key) { cache.cache_key(:merged_branch_names) }
before do
- allow(Rails).to receive(:cache) { cache }
- allow(repository).to receive(:cache) { repository_cache }
allow(repository.raw_repository).to receive(:merged_branch_names).with(branch_names).and_return(already_merged)
end
it { is_expected.to eq(already_merged) }
it { is_expected.to be_a(Set) }
+ describe "cache expiry" do
+ before do
+ allow(cache).to receive(:delete).with(anything)
+ end
+
+ it "is expired when the branches caches are expired" do
+ expect(cache).to receive(:delete).with(:merged_branch_names).at_least(:once)
+
+ repository.send(:expire_branches_cache)
+ end
+
+ it "is expired when the repository caches are expired" do
+ expect(cache).to receive(:delete).with(:merged_branch_names).at_least(:once)
+
+ repository.send(:expire_all_method_caches)
+ end
+ end
+
context "cache is empty" do
before do
- cache.delete(cache_key)
+ cache.delete(:merged_branch_names)
end
it { is_expected.to eq(already_merged) }
describe "cache values" do
it "writes the values to redis" do
- expect(cache).to receive(:write).with(cache_key, merge_state_hash, expires_in: Repository::MERGED_BRANCH_NAMES_CACHE_DURATION)
+ expect(cache).to receive(:write).with(:merged_branch_names, write_hash)
subject
end
@@ -546,14 +563,14 @@ describe Repository do
it "matches the supplied hash" do
subject
- expect(cache.read(cache_key)).to eq(merge_state_hash)
+ expect(cache.read_members(:merged_branch_names, branch_names)).to eq(read_hash)
end
end
end
context "cache is not empty" do
before do
- cache.write(cache_key, merge_state_hash)
+ cache.write(:merged_branch_names, write_hash)
end
it { is_expected.to eq(already_merged) }
@@ -568,8 +585,8 @@ describe Repository do
context "cache is partially complete" do
before do
allow(repository.raw_repository).to receive(:merged_branch_names).with(["boop"]).and_return([])
- hash = merge_state_hash.except("boop")
- cache.write(cache_key, hash)
+ hash = write_hash.except("boop")
+ cache.write(:merged_branch_names, hash)
end
it { is_expected.to eq(already_merged) }