2020-03-13 15:44:24 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require 'spec_helper'
|
|
|
|
|
2023-05-27 22:25:52 +05:30
|
|
|
RSpec.describe Ci::PipelineBridgeStatusService, feature_category: :continuous_integration do
|
2020-03-13 15:44:24 +05:30
|
|
|
let(:user) { build(:user) }
|
2020-06-23 00:09:42 +05:30
|
|
|
let_it_be(:project) { create(:project) }
|
2021-06-08 01:23:25 +05:30
|
|
|
|
2020-03-13 15:44:24 +05:30
|
|
|
let(:pipeline) { build(:ci_pipeline, project: project) }
|
|
|
|
|
|
|
|
describe '#execute' do
|
|
|
|
subject { described_class.new(project, user).execute(pipeline) }
|
|
|
|
|
|
|
|
context 'when pipeline has upstream bridge' do
|
|
|
|
let(:bridge) { build(:ci_bridge) }
|
|
|
|
|
|
|
|
before do
|
|
|
|
pipeline.source_bridge = bridge
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'calls inherit_status_from_downstream on upstream bridge' do
|
|
|
|
expect(bridge).to receive(:inherit_status_from_downstream!).with(pipeline)
|
|
|
|
|
|
|
|
subject
|
|
|
|
end
|
2020-04-08 14:13:33 +05:30
|
|
|
|
|
|
|
context 'when bridge job status raises state machine errors' do
|
|
|
|
before do
|
|
|
|
pipeline.drop!
|
|
|
|
bridge.drop!
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'tracks the exception' do
|
|
|
|
expect(Gitlab::ErrorTracking)
|
|
|
|
.to receive(:track_exception)
|
|
|
|
.with(
|
|
|
|
instance_of(Ci::Bridge::InvalidTransitionError),
|
|
|
|
bridge_id: bridge.id,
|
|
|
|
downstream_pipeline_id: pipeline.id)
|
|
|
|
|
|
|
|
subject
|
|
|
|
end
|
|
|
|
end
|
2020-03-13 15:44:24 +05:30
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|