diff options
| author | Yorick Peterse <yorickpeterse@gmail.com> | 2016-03-08 17:38:23 +0100 |
|---|---|---|
| committer | Yorick Peterse <yorickpeterse@gmail.com> | 2016-03-08 18:19:40 +0100 |
| commit | cb5a5ba09588af866aed595d960755bf4ced4483 (patch) | |
| tree | 138d5dd36460bf07ed2665f42c8a8d9534ae821e /spec/models | |
| parent | 149a52b10f5d5715ad5868add8ae0d4d6389d46d (diff) | |
| download | gitlab-ce-cb5a5ba09588af866aed595d960755bf4ced4483.tar.gz | |
Cache & flush tag/branch counts
The methods used for this are Repository#tag_count and
Repository#branch_count which cache their output in Redis as well as
memoizing it in an instance variable. Both methods have a corresponding
methods/hooks to flush the caches at the right time.
Diffstat (limited to 'spec/models')
| -rw-r--r-- | spec/models/repository_spec.rb | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index 150422ac349..7af80704690 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -405,7 +405,7 @@ describe Repository, models: true do end end - describe '#expire_branch_ache' do + describe '#expire_branch_cache' do # This method is private but we need it for testing purposes. Sadly there's # no other proper way of testing caching operations. let(:cache) { repository.send(:cache) } @@ -556,11 +556,12 @@ describe Repository, models: true do end end - describe '#before_create_tag' do + describe '#before_push_tag' do it 'flushes the cache' do expect(repository).to receive(:expire_cache) + expect(repository).to receive(:expire_tag_count_cache) - repository.before_create_tag + repository.before_push_tag end end @@ -607,4 +608,44 @@ describe Repository, models: true do expect(repository.main_language).to be_nil end end + + describe '#before_remove_tag' do + it 'flushes the tag cache' do + expect(repository).to receive(:expire_tag_count_cache) + + repository.before_remove_tag + end + end + + describe '#branch_count' do + it 'returns the number of branches' do + expect(repository.branch_count).to be_an_instance_of(Fixnum) + end + end + + describe '#tag_count' do + it 'returns the number of tags' do + expect(repository.tag_count).to be_an_instance_of(Fixnum) + end + end + + describe '#expire_branch_count_cache' do + let(:cache) { repository.send(:cache) } + + it 'expires the cache' do + expect(cache).to receive(:expire).with(:branch_count) + + repository.expire_branch_count_cache + end + end + + describe '#expire_tag_count_cache' do + let(:cache) { repository.send(:cache) } + + it 'expires the cache' do + expect(cache).to receive(:expire).with(:tag_count) + + repository.expire_tag_count_cache + end + end end |
