Add a workaround for a tmp job -> stage relation
We still didn't migrate `ci_builds.stage_id`, so we can't use a belongs_to association. We also have `ci_builds.stage` string attribute, that we need to phase out in favor of `ci_stages.name`.
This commit is contained in:
parent
22d8460b5d
commit
b3ee172b4e
|
@ -38,6 +38,15 @@ class CommitStatus < ActiveRecord::Base
|
|||
scope :retried_ordered, -> { retried.ordered.includes(project: :namespace) }
|
||||
scope :after_stage, -> (index) { where('stage_idx > ?', index) }
|
||||
|
||||
##
|
||||
# TODO, we will change this to `belongs_to :stage` when we phase out
|
||||
# `ci_builds.stage` attribute and migrate `ci_builds.stage_id` reference in
|
||||
# one of upcoming releases.
|
||||
#
|
||||
def stage_entity
|
||||
Ci::Stage.find_by(pipeline: pipeline, name: stage)
|
||||
end
|
||||
|
||||
state_machine :status do
|
||||
event :enqueue do
|
||||
transition [:created, :skipped, :manual] => :pending
|
||||
|
|
|
@ -7,10 +7,10 @@ describe CommitStatus, :models do
|
|||
create(:ci_pipeline, project: project, sha: project.commit.id)
|
||||
end
|
||||
|
||||
let(:commit_status) { create_status }
|
||||
let(:commit_status) { create_status(stage: 'test') }
|
||||
|
||||
def create_status(args = {})
|
||||
create(:commit_status, args.merge(pipeline: pipeline))
|
||||
def create_status(**opts)
|
||||
create(:commit_status, pipeline: pipeline, **opts)
|
||||
end
|
||||
|
||||
it { is_expected.to belong_to(:pipeline) }
|
||||
|
@ -408,6 +408,18 @@ describe CommitStatus, :models do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#stage_entity' do
|
||||
let!(:stage) do
|
||||
create(:ci_stage_entity, pipeline: commit_status.pipeline,
|
||||
name: commit_status.stage)
|
||||
end
|
||||
|
||||
it 'has a correct association with persisted stage' do
|
||||
expect(commit_status.stage_entity).to eq stage
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
describe '#locking_enabled?' do
|
||||
before do
|
||||
commit_status.lock_version = 100
|
||||
|
|
Loading…
Reference in New Issue