Commit b3ee172b authored by Grzegorz Bizon's avatar Grzegorz Bizon

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`.
parent 22d8460b
......@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment