From 720ef51bd97f478dba2d2c1b59df958dabd7500a Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Sun, 27 Mar 2016 06:17:49 -0700 Subject: [PATCH] Check if repo exists before attempting to update cache info Closes #14361 --- app/workers/project_cache_worker.rb | 3 +++ spec/workers/project_cache_worker_spec.rb | 27 +++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 spec/workers/project_cache_worker_spec.rb diff --git a/app/workers/project_cache_worker.rb b/app/workers/project_cache_worker.rb index 55cb6af232..ccefd0f71a 100644 --- a/app/workers/project_cache_worker.rb +++ b/app/workers/project_cache_worker.rb @@ -5,6 +5,9 @@ class ProjectCacheWorker def perform(project_id) project = Project.find(project_id) + + return unless project.repository.exists? + project.update_repository_size project.update_commit_count diff --git a/spec/workers/project_cache_worker_spec.rb b/spec/workers/project_cache_worker_spec.rb new file mode 100644 index 0000000000..7e59bd2fce --- /dev/null +++ b/spec/workers/project_cache_worker_spec.rb @@ -0,0 +1,27 @@ +require 'spec_helper' + +describe ProjectCacheWorker do + let(:project) { create(:project) } + + subject { described_class.new } + + describe '#perform' do + it 'updates project cache data' do + + expect_any_instance_of(Repository).to receive(:size) + expect_any_instance_of(Repository).to receive(:commit_count) + + expect_any_instance_of(Project).to receive(:update_repository_size) + expect_any_instance_of(Project).to receive(:update_commit_count) + + subject.perform(project.id) + end + + it 'handles missing repository data' do + expect_any_instance_of(Repository).to receive(:exists?).and_return(false) + expect_any_instance_of(Repository).not_to receive(:size) + + subject.perform(project.id) + end + end +end