diff options
Diffstat (limited to 'spec/lib/gitlab/ci/status/bridge')
-rw-r--r-- | spec/lib/gitlab/ci/status/bridge/common_spec.rb | 9 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/status/bridge/factory_spec.rb | 61 |
2 files changed, 59 insertions, 11 deletions
diff --git a/spec/lib/gitlab/ci/status/bridge/common_spec.rb b/spec/lib/gitlab/ci/status/bridge/common_spec.rb index 92600b21afc..37524afc83d 100644 --- a/spec/lib/gitlab/ci/status/bridge/common_spec.rb +++ b/spec/lib/gitlab/ci/status/bridge/common_spec.rb @@ -30,15 +30,6 @@ RSpec.describe Gitlab::Ci::Status::Bridge::Common do it { expect(subject).to have_details } it { expect(subject.details_path).to include "pipelines/#{downstream_pipeline.id}" } - - context 'when ci_bridge_pipeline_details is disabled' do - before do - stub_feature_flags(ci_bridge_pipeline_details: false) - end - - it { expect(subject).not_to have_details } - it { expect(subject.details_path).to be_nil } - end end context 'when user does not have access to read downstream pipeline' do diff --git a/spec/lib/gitlab/ci/status/bridge/factory_spec.rb b/spec/lib/gitlab/ci/status/bridge/factory_spec.rb index 021b777a0ff..d27bb98ba9a 100644 --- a/spec/lib/gitlab/ci/status/bridge/factory_spec.rb +++ b/spec/lib/gitlab/ci/status/bridge/factory_spec.rb @@ -15,7 +15,7 @@ RSpec.describe Gitlab::Ci::Status::Bridge::Factory do end context 'when bridge is created' do - let(:bridge) { create(:ci_bridge) } + let(:bridge) { create_bridge(:created) } it 'matches correct core status' do expect(factory.core_status).to be_a Gitlab::Ci::Status::Created @@ -32,7 +32,7 @@ RSpec.describe Gitlab::Ci::Status::Bridge::Factory do end context 'when bridge is failed' do - let(:bridge) { create(:ci_bridge, :failed) } + let(:bridge) { create_bridge(:failed) } it 'matches correct core status' do expect(factory.core_status).to be_a Gitlab::Ci::Status::Failed @@ -70,4 +70,61 @@ RSpec.describe Gitlab::Ci::Status::Bridge::Factory do end end end + + context 'when bridge is a manual action' do + let(:bridge) { create_bridge(:playable) } + + it 'matches correct core status' do + expect(factory.core_status).to be_a Gitlab::Ci::Status::Manual + end + + it 'matches correct extended statuses' do + expect(factory.extended_statuses) + .to eq [Gitlab::Ci::Status::Bridge::Manual, + Gitlab::Ci::Status::Bridge::Play, + Gitlab::Ci::Status::Bridge::Action] + end + + it 'fabricates action detailed status' do + expect(status).to be_a Gitlab::Ci::Status::Bridge::Action + end + + it 'fabricates status with correct details' do + expect(status.text).to eq s_('CiStatusText|manual') + expect(status.group).to eq 'manual' + expect(status.icon).to eq 'status_manual' + expect(status.favicon).to eq 'favicon_status_manual' + expect(status.illustration).to include(:image, :size, :title, :content) + expect(status.label).to include 'manual play action' + expect(status).not_to have_details + expect(status.action_path).to include 'play' + end + + context 'when user has ability to play action' do + before do + bridge.downstream_project.add_developer(user) + end + + it 'fabricates status that has action' do + expect(status).to have_action + end + end + + context 'when user does not have ability to play action' do + it 'fabricates status that has no action' do + expect(status).not_to have_action + end + end + end + + private + + def create_bridge(trait) + upstream_project = create(:project, :repository) + downstream_project = create(:project, :repository) + upstream_pipeline = create(:ci_pipeline, :running, project: upstream_project) + trigger = { trigger: { project: downstream_project.full_path, branch: 'feature' } } + + create(:ci_bridge, trait, options: trigger, pipeline: upstream_pipeline) + end end |