Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/ci/status/bridge/factory_spec.rb')
-rw-r--r--spec/lib/gitlab/ci/status/bridge/factory_spec.rb61
1 files changed, 59 insertions, 2 deletions
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