Commit 805715cc authored by Grzegorz Bizon's avatar Grzegorz Bizon

Add stage seed class that represents attributes

parent 325b2d93
...@@ -81,8 +81,7 @@ module Ci ...@@ -81,8 +81,7 @@ module Ci
dependencies: job[:dependencies], dependencies: job[:dependencies],
after_script: job[:after_script], after_script: job[:after_script],
environment: job[:environment] environment: job[:environment]
}.compact }.compact }
}
end end
def self.validation_message(content) def self.validation_message(content)
......
module Gitlab
module Ci
module Stage
class Seed
attr_reader :name, :builds
def initialize(name:, builds:)
@name = name
@builds = builds
end
def pipeline=(pipeline)
trigger_request = pipeline.trigger_requests.first
@builds.each do |attributes|
attributes.merge!(
pipeline: pipeline,
project: pipeline.project,
ref: pipeline.ref,
tag: pipeline.tag,
trigger_request: trigger_request
)
end
end
def user=(current_user)
@builds.each do |attributes|
attributes.merge!(user: current_user)
end
end
def to_attributes
{ name: @name, builds_attributes: @builds }
end
end
end
end
end
require 'spec_helper'
describe Gitlab::Ci::Stage::Seed do
subject do
described_class.new(name: 'test', builds: builds)
end
let(:builds) do
[{ name: 'rspec' }, { name: 'spinach' }]
end
describe '#pipeline=' do
let(:pipeline) do
create(:ci_empty_pipeline, ref: 'feature', tag: true)
end
it 'assignes relevant pipeline attributes' do
trigger_request = pipeline.trigger_requests.first
subject.pipeline = pipeline
expect(subject.builds).to all(include(pipeline: pipeline))
expect(subject.builds).to all(include(project: pipeline.project))
expect(subject.builds).to all(include(ref: 'feature'))
expect(subject.builds).to all(include(tag: true))
expect(subject.builds).to all(include(trigger_request: trigger_request))
end
end
describe '#user=' do
let(:user) { create(:user) }
it 'assignes relevant pipeline attributes' do
subject.user = user
expect(subject.builds).to all(include(user: user))
end
end
describe '#to_attributes' do
it 'exposes stage attributes with nested jobs' do
expect(subject.to_attributes).to be_a Hash
expect(subject.to_attributes).to include(name: 'test')
expect(subject.to_attributes).to include(builds_attributes: builds)
end
end
end
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