Wrap updating of cache after pipeline transition in class method
This commit is contained in:
		
							parent
							
								
									47abf00b24
								
							
						
					
					
						commit
						a6d313001a
					
				|  | @ -393,7 +393,7 @@ module Ci | |||
|     end | ||||
| 
 | ||||
|     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 | ||||
| 
 | ||||
|     private | ||||
|  |  | |||
|  | @ -15,6 +15,10 @@ module Gitlab | |||
|           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) | ||||
|           @project = project | ||||
|           @sha = sha | ||||
|  |  | |||
|  | @ -12,6 +12,20 @@ describe Gitlab::Cache::Ci::ProjectBuildStatus do | |||
|     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 | ||||
|     it "is false when the status wasn't loaded yet" do | ||||
|       expect(pipeline_status.has_status?).to be_falsy | ||||
|  |  | |||
|  | @ -1083,12 +1083,8 @@ describe Ci::Pipeline, models: true do | |||
|     let(:pipeline) { create(:ci_pipeline, sha: '123456') } | ||||
| 
 | ||||
|     it 'updates the cached status' do | ||||
|       fake_status = double | ||||
|       expect(Gitlab::Cache::Ci::ProjectBuildStatus).to receive(:new). | ||||
|                                                          with(pipeline.project, sha: '123456', status: 'manual'). | ||||
|                                                          and_return(fake_status) | ||||
| 
 | ||||
|       expect(fake_status).to receive(:store_in_cache_if_needed) | ||||
|       expect(Gitlab::Cache::Ci::ProjectBuildStatus).to receive(:update_for_pipeline). | ||||
|                                                          with(pipeline) | ||||
| 
 | ||||
|       pipeline.block | ||||
|     end | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue