Commit a6d31300 authored by Bob Van Landuyt's avatar Bob Van Landuyt

Wrap updating of cache after pipeline transition in class method

parent 47abf00b
...@@ -393,7 +393,7 @@ module Ci ...@@ -393,7 +393,7 @@ module Ci
end end
def refresh_project_build_status_cache def refresh_project_build_status_cache
Gitlab::Cache::Ci::ProjectBuildStatus.new(project, sha: sha, status: status).store_in_cache_if_needed Gitlab::Cache::Ci::ProjectBuildStatus.update_for_pipeline(self)
end end
private private
......
...@@ -15,6 +15,10 @@ module Gitlab ...@@ -15,6 +15,10 @@ module Gitlab
end end
end end
def self.update_for_pipeline(pipeline)
new(pipeline.project, sha: pipeline.sha, status: pipeline.status).store_in_cache_if_needed
end
def initialize(project, sha: nil, status: nil) def initialize(project, sha: nil, status: nil)
@project = project @project = project
@sha = sha @sha = sha
......
...@@ -12,6 +12,20 @@ describe Gitlab::Cache::Ci::ProjectBuildStatus do ...@@ -12,6 +12,20 @@ describe Gitlab::Cache::Ci::ProjectBuildStatus do
end end
end end
describe '.update_for_pipeline' do
it 'refreshes the cache if nescessary' do
pipeline = build_stubbed(:ci_pipeline, sha: '123456', status: 'success')
fake_status = double
expect(described_class).to receive(:new).
with(pipeline.project, sha: '123456', status: 'success').
and_return(fake_status)
expect(fake_status).to receive(:store_in_cache_if_needed)
described_class.update_for_pipeline(pipeline)
end
end
describe '#has_status?' do describe '#has_status?' do
it "is false when the status wasn't loaded yet" do it "is false when the status wasn't loaded yet" do
expect(pipeline_status.has_status?).to be_falsy expect(pipeline_status.has_status?).to be_falsy
......
...@@ -1083,12 +1083,8 @@ describe Ci::Pipeline, models: true do ...@@ -1083,12 +1083,8 @@ describe Ci::Pipeline, models: true do
let(:pipeline) { create(:ci_pipeline, sha: '123456') } let(:pipeline) { create(:ci_pipeline, sha: '123456') }
it 'updates the cached status' do it 'updates the cached status' do
fake_status = double expect(Gitlab::Cache::Ci::ProjectBuildStatus).to receive(:update_for_pipeline).
expect(Gitlab::Cache::Ci::ProjectBuildStatus).to receive(:new). with(pipeline)
with(pipeline.project, sha: '123456', status: 'manual').
and_return(fake_status)
expect(fake_status).to receive(:store_in_cache_if_needed)
pipeline.block pipeline.block
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment