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
|
||||
- name
|
||||
- status
|
||||
- lock_version
|
||||
- project_id
|
||||
- pipeline_id
|
||||
- created_at
|
||||
|
|
|
@ -54,7 +54,26 @@ describe Ci::Stage, :models do
|
|||
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
|
||||
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
|
||||
|
|
|
@ -22,7 +22,7 @@ describe Ci::RetryBuildService, :services do
|
|||
%i[type lock_version target_url base_tags
|
||||
commit_id deployments erased_by_id last_deployment project_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
|
||||
let(:stage) do
|
||||
|
|
Loading…
Reference in a new issue