diff options
Diffstat (limited to 'spec/lib/gitlab/ci/status/bridge')
-rw-r--r-- | spec/lib/gitlab/ci/status/bridge/factory_spec.rb | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/spec/lib/gitlab/ci/status/bridge/factory_spec.rb b/spec/lib/gitlab/ci/status/bridge/factory_spec.rb new file mode 100644 index 00000000000..1f417781988 --- /dev/null +++ b/spec/lib/gitlab/ci/status/bridge/factory_spec.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Gitlab::Ci::Status::Bridge::Factory do + let(:user) { create(:user) } + let(:project) { bridge.project } + let(:status) { factory.fabricate! } + let(:factory) { described_class.new(bridge, user) } + + before do + stub_not_protect_default_branch + + project.add_developer(user) + end + + context 'when bridge is created' do + let(:bridge) { create(:ci_bridge) } + + it 'matches correct core status' do + expect(factory.core_status).to be_a Gitlab::Ci::Status::Created + end + + it 'fabricates status with correct details' do + expect(status.text).to eq s_('CiStatusText|created') + expect(status.icon).to eq 'status_created' + expect(status.favicon).to eq 'favicon_status_created' + expect(status.label).to be_nil + expect(status).not_to have_details + expect(status).not_to have_action + end + end + + context 'when bridge is failed' do + let(:bridge) { create(:ci_bridge, :failed) } + + it 'matches correct core status' do + expect(factory.core_status).to be_a Gitlab::Ci::Status::Failed + end + + it 'matches correct extended statuses' do + expect(factory.extended_statuses) + .to eq [Gitlab::Ci::Status::Bridge::Failed] + end + + it 'fabricates a failed bridge status' do + expect(status).to be_a Gitlab::Ci::Status::Bridge::Failed + end + + it 'fabricates status with correct details' do + expect(status.text).to eq s_('CiStatusText|failed') + expect(status.icon).to eq 'status_failed' + expect(status.favicon).to eq 'favicon_status_failed' + expect(status.label).to be_nil + expect(status.status_tooltip).to eq "#{s_('CiStatusText|failed')} - (unknown failure)" + expect(status).not_to have_details + expect(status).not_to have_action + end + + context 'failed with downstream_pipeline_creation_failed' do + before do + bridge.failure_reason = 'downstream_pipeline_creation_failed' + end + + it 'fabricates correct status_tooltip' do + expect(status.status_tooltip).to eq( + "#{s_('CiStatusText|failed')} - (downstream pipeline can not be created)" + ) + end + end + end +end |