spec/gitlab/qa/component/pipeline_ops_spec.rb (57 lines of code) (raw):
# frozen_string_literal: true
# spec/lib/gitlab/qa/component/pipeline_ops_spec.rb
require 'spec_helper'
module Gitlab
module QA
describe Component::PipelineOps do
let(:pipeline_ops) { described_class.new }
let(:docker) { instance_double(Gitlab::QA::Docker::Engine) }
let(:gitlab) do
instance_double(
Gitlab::QA::Component::Gitlab,
address: "http://gitlab.example.com",
class: Struct.new(:name).new("Gitlab::QA::Component::Gitlab")
)
end
let(:project_name) { 'test-project' }
before do
allow(gitlab).to receive_messages(docker: docker, name: 'gitlab-container')
end
describe '#start' do
it 'executes pipeline command with correct parameters' do
expect(docker).to receive(:exec).with('gitlab-container', /PROJECT_NAME='test-project' gitlab-rails runner/)
expect(docker).to receive(:copy).with('gitlab-container', File.join(Dir.pwd, 'support', 'pipeline'), '/tmp/setup-scripts')
pipeline_ops.start(gitlab, project_name)
end
end
describe '#check_status' do
context 'when pipeline succeeds' do
it 'returns successfully' do
expect(docker).to receive(:exec).and_return('success')
expect { pipeline_ops.check_status(gitlab) }.not_to raise_error
end
end
context 'when pipeline fails' do
it 'raises an error' do
expect(docker).to receive(:exec).and_return('failed')
expect { pipeline_ops.check_status(gitlab) }.to raise_error(StandardError, "Pipeline failed.")
end
end
end
describe '#create_and_execute_pipeline_script' do
let(:expected_src_path) { File.expand_path('../../../../support/pipeline', __dir__) }
let(:expected_dest_path) { '/tmp/setup-scripts' }
it 'copies pipeline scripts to the docker container' do
expect(docker).to receive(:copy).with(
'gitlab-container',
expected_src_path,
expected_dest_path
)
expect(docker).to receive(:exec).with(
'gitlab-container',
"PROJECT_NAME='#{project_name}' gitlab-rails runner #{expected_dest_path}/create_for_projectname.rb"
)
subject.send(:create_and_execute_pipeline_script, gitlab, project_name)
end
end
end
end
end