Adds some specs for stage optimistic locking
This commit is contained in:
parent
0aefb51693
commit
d3814ad698
3 changed files with 21 additions and 1 deletions
|
@ -220,6 +220,7 @@ Ci::Stage:
|
||||||
- id
|
- id
|
||||||
- name
|
- name
|
||||||
- status
|
- status
|
||||||
|
- lock_version
|
||||||
- project_id
|
- project_id
|
||||||
- pipeline_id
|
- pipeline_id
|
||||||
- created_at
|
- created_at
|
||||||
|
|
|
@ -54,7 +54,26 @@ describe Ci::Stage, :models do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when stage is skipped' do
|
||||||
|
it 'updates status to skipped' do
|
||||||
|
expect { stage.update! }
|
||||||
|
.to change { stage.reload.status }
|
||||||
|
.to 'skipped'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'when stage object is locked' do
|
context 'when stage object is locked' do
|
||||||
|
before do
|
||||||
|
create(:ci_build, :failed, stage_id: stage.id)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'retries a lock to update a stage status' do
|
||||||
|
stage.lock_version = 100
|
||||||
|
|
||||||
|
stage.update!
|
||||||
|
|
||||||
|
expect(stage.reload).to be_failed
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -22,7 +22,7 @@ describe Ci::RetryBuildService, :services do
|
||||||
%i[type lock_version target_url base_tags
|
%i[type lock_version target_url base_tags
|
||||||
commit_id deployments erased_by_id last_deployment project_id
|
commit_id deployments erased_by_id last_deployment project_id
|
||||||
runner_id tag_taggings taggings tags trigger_request_id
|
runner_id tag_taggings taggings tags trigger_request_id
|
||||||
user_id auto_canceled_by_id retried].freeze
|
user_id auto_canceled_by_id retried stage_entity].freeze
|
||||||
|
|
||||||
shared_examples 'build duplication' do
|
shared_examples 'build duplication' do
|
||||||
let(:stage) do
|
let(:stage) do
|
||||||
|
|
Loading…
Reference in a new issue