Adds some specs for stage optimistic locking

This commit is contained in:
Grzegorz Bizon 2017-07-24 11:22:01 +02:00
parent 0aefb51693
commit d3814ad698
3 changed files with 21 additions and 1 deletions

View File

@ -220,6 +220,7 @@ Ci::Stage:
- id
- name
- status
- lock_version
- project_id
- pipeline_id
- created_at

View File

@ -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

View File

@ -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