diff options
Diffstat (limited to 'spec/lib/gitlab/repository_cache_adapter_spec.rb')
-rw-r--r-- | spec/lib/gitlab/repository_cache_adapter_spec.rb | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/spec/lib/gitlab/repository_cache_adapter_spec.rb b/spec/lib/gitlab/repository_cache_adapter_spec.rb index 625dcf11546..d14c3f44c6f 100644 --- a/spec/lib/gitlab/repository_cache_adapter_spec.rb +++ b/spec/lib/gitlab/repository_cache_adapter_spec.rb @@ -29,10 +29,19 @@ RSpec.describe Gitlab::RepositoryCacheAdapter do def project end + + def cached_methods + [:letters] + end + + def exists? + true + end end end let(:fake_repository) { klass.new } + let(:redis_set_cache) { fake_repository.redis_set_cache } context 'with an existing repository' do it 'caches the output, sorting the results' do @@ -42,47 +51,43 @@ RSpec.describe Gitlab::RepositoryCacheAdapter do expect(fake_repository.letters).to eq(%w(a b c)) end - expect(fake_repository.redis_set_cache.exist?(:letters)).to eq(true) + expect(redis_set_cache.exist?(:letters)).to eq(true) expect(fake_repository.instance_variable_get(:@letters)).to eq(%w(a b c)) end context 'membership checks' do context 'when the cache key does not exist' do it 'calls the original method and populates the cache' do - expect(fake_repository.redis_set_cache.exist?(:letters)).to eq(false) + expect(redis_set_cache.exist?(:letters)).to eq(false) expect(fake_repository).to receive(:_uncached_letters).once.and_call_original # This populates the cache and memoizes the full result expect(fake_repository.letters_include?('a')).to eq(true) expect(fake_repository.letters_include?('d')).to eq(false) - expect(fake_repository.redis_set_cache.exist?(:letters)).to eq(true) + expect(redis_set_cache.exist?(:letters)).to eq(true) end end context 'when the cache key exists' do before do - fake_repository.redis_set_cache.write(:letters, %w(b a c)) + redis_set_cache.write(:letters, %w(b a c)) end - it 'calls #include? on the set cache' do - expect(fake_repository.redis_set_cache) - .to receive(:include?).with(:letters, 'a').and_call_original - expect(fake_repository.redis_set_cache) - .to receive(:include?).with(:letters, 'd').and_call_original + it 'calls #try_include? on the set cache' do + expect(redis_set_cache).to receive(:try_include?).with(:letters, 'a').and_call_original + expect(redis_set_cache).to receive(:try_include?).with(:letters, 'd').and_call_original expect(fake_repository.letters_include?('a')).to eq(true) expect(fake_repository.letters_include?('d')).to eq(false) end it 'memoizes the result' do - expect(fake_repository.redis_set_cache) - .to receive(:include?).once.and_call_original + expect(redis_set_cache).to receive(:try_include?).once.and_call_original expect(fake_repository.letters_include?('a')).to eq(true) expect(fake_repository.letters_include?('a')).to eq(true) - expect(fake_repository.redis_set_cache) - .to receive(:include?).once.and_call_original + expect(redis_set_cache).to receive(:try_include?).once.and_call_original expect(fake_repository.letters_include?('d')).to eq(false) expect(fake_repository.letters_include?('d')).to eq(false) |