summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-12-12 14:53:05 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-12-12 14:53:05 +0100
commitf91e8269c18ac80d6f43fdd7b87362e5c9ccbc94 (patch)
treebcf59eecbbb4e3506d8a31a818231bcead34b606
parentffafd0973100a53efc46011ca4415e8385e0cc07 (diff)
downloadgitlab-ce-f91e8269c18ac80d6f43fdd7b87362e5c9ccbc94.tar.gz
Add tests for build play extended detailed status
-rw-r--r--spec/factories/ci/builds.rb13
-rw-r--r--spec/lib/gitlab/ci/status/build/play_spec.rb59
2 files changed, 69 insertions, 3 deletions
diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb
index c443af09075..62466c06194 100644
--- a/spec/factories/ci/builds.rb
+++ b/spec/factories/ci/builds.rb
@@ -12,12 +12,14 @@ FactoryGirl.define do
started_at 'Di 29. Okt 09:51:28 CET 2013'
finished_at 'Di 29. Okt 09:53:28 CET 2013'
commands 'ls -a'
+
options do
{
image: "ruby:2.1",
services: ["postgres"]
}
end
+
yaml_variables do
[
{ key: :DB_NAME, value: 'postgres', public: true }
@@ -60,15 +62,20 @@ FactoryGirl.define do
end
trait :teardown_environment do
- options do
- { environment: { action: 'stop' } }
- end
+ environment 'staging'
+ options environment: { name: 'staging',
+ action: 'stop' }
end
trait :allowed_to_fail do
allow_failure true
end
+ trait :playable do
+ skipped
+ manual
+ end
+
after(:build) do |build, evaluator|
build.project = build.pipeline.project
end
diff --git a/spec/lib/gitlab/ci/status/build/play_spec.rb b/spec/lib/gitlab/ci/status/build/play_spec.rb
new file mode 100644
index 00000000000..ae103d8993d
--- /dev/null
+++ b/spec/lib/gitlab/ci/status/build/play_spec.rb
@@ -0,0 +1,59 @@
+require 'spec_helper'
+
+describe Gitlab::Ci::Status::Build::Play do
+ let(:core_status) { double('core status') }
+ let(:user) { double('user') }
+
+ subject do
+ described_class.new(core_status)
+ end
+
+ describe '#text' do
+ it { expect(subject.text).to eq 'play' }
+ end
+
+ describe '#label' do
+ it { expect(subject.label).to eq 'play' }
+ end
+
+ describe '#icon' do
+ it 'does not override core status icon' do
+ expect(core_status).to receive(:icon)
+
+ subject.icon
+ end
+ end
+
+ describe '.matches?' do
+ context 'build is playable' do
+ context 'when build stops an environment' do
+ let(:build) do
+ create(:ci_build, :playable, :teardown_environment)
+ end
+
+ it 'does not match' do
+ expect(described_class.matches?(build, user))
+ .to be false
+ end
+ end
+
+ context 'when build does not stop an environment' do
+ let(:build) { create(:ci_build, :playable) }
+
+ it 'is a correct match' do
+ expect(described_class.matches?(build, user))
+ .to be true
+ end
+ end
+ end
+
+ context 'when build is not playable' do
+ let(:build) { create(:ci_build) }
+
+ it 'does not match' do
+ expect(described_class.matches?(build, user))
+ .to be false
+ end
+ end
+ end
+end