summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatija Čupić <matteeyah@gmail.com>2018-04-04 21:00:32 +0200
committerMatija Čupić <matteeyah@gmail.com>2018-04-04 21:00:32 +0200
commitd883fe1cce01f53a3acc442e8b94ca20540e0525 (patch)
tree47d93dc076ffc7ffd9f7729beb0725bea41e4bdd
parent75f8a45f6a202aa5bec00613dcd16573fc1cc46a (diff)
downloadgitlab-ce-d883fe1cce01f53a3acc442e8b94ca20540e0525.tar.gz
Add success CI Build empty state status
-rw-r--r--lib/gitlab/ci/status/build/factory.rb3
-rw-r--r--lib/gitlab/ci/status/build/success.rb21
-rw-r--r--spec/lib/gitlab/ci/status/build/factory_spec.rb16
-rw-r--r--spec/lib/gitlab/ci/status/build/success_spec.rb33
4 files changed, 72 insertions, 1 deletions
diff --git a/lib/gitlab/ci/status/build/factory.rb b/lib/gitlab/ci/status/build/factory.rb
index b809a9cf766..d3a34384f6f 100644
--- a/lib/gitlab/ci/status/build/factory.rb
+++ b/lib/gitlab/ci/status/build/factory.rb
@@ -8,7 +8,8 @@ module Gitlab
Status::Build::Canceled,
Status::Build::Created,
Status::Build::Pending,
- Status::Build::Skipped],
+ Status::Build::Skipped,
+ Status::Build::Success],
[Status::Build::Cancelable,
Status::Build::Retryable],
[Status::Build::FailedAllowed,
diff --git a/lib/gitlab/ci/status/build/success.rb b/lib/gitlab/ci/status/build/success.rb
new file mode 100644
index 00000000000..bafc1b2f93a
--- /dev/null
+++ b/lib/gitlab/ci/status/build/success.rb
@@ -0,0 +1,21 @@
+module Gitlab
+ module Ci
+ module Status
+ module Build
+ class Success < Status::Extended
+ def illustration
+ {
+ image: 'illustrations/skipped-job_empty.svg',
+ size: 'svg-430',
+ title: _('Job has been erased')
+ }
+ end
+
+ def self.matches?(build, user)
+ build.success?
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/spec/lib/gitlab/ci/status/build/factory_spec.rb b/spec/lib/gitlab/ci/status/build/factory_spec.rb
index a68fed0a41c..28166d08c02 100644
--- a/spec/lib/gitlab/ci/status/build/factory_spec.rb
+++ b/spec/lib/gitlab/ci/status/build/factory_spec.rb
@@ -36,6 +36,22 @@ describe Gitlab::Ci::Status::Build::Factory do
expect(status).to have_details
expect(status).to have_action
end
+
+ context 'when job log gets erased' do
+ before do
+ build.trace.set(nil)
+ end
+
+ it 'matches correct extended statuses' do
+ expect(factory.extended_statuses)
+ .to eq [Gitlab::Ci::Status::Build::Success,
+ Gitlab::Ci::Status::Build::Retryable]
+ end
+
+ it 'fabricates a retryable build status' do
+ expect(status).to be_a Gitlab::Ci::Status::Build::Retryable
+ end
+ end
end
context 'when build is failed' do
diff --git a/spec/lib/gitlab/ci/status/build/success_spec.rb b/spec/lib/gitlab/ci/status/build/success_spec.rb
new file mode 100644
index 00000000000..730cd7aefbc
--- /dev/null
+++ b/spec/lib/gitlab/ci/status/build/success_spec.rb
@@ -0,0 +1,33 @@
+require 'spec_helper'
+
+describe Gitlab::Ci::Status::Build::Success do
+ let(:user) { create(:user) }
+
+ subject do
+ described_class.new(double('subject'))
+ end
+
+ describe '#illustration' do
+ it { expect(subject.illustration).to include(:image, :size, :title) }
+ end
+
+ describe '.matches?' do
+ subject {described_class.matches?(build, user) }
+
+ context 'when build succeeded' do
+ let(:build) { create(:ci_build, :success) }
+
+ it 'is a correct match' do
+ expect(subject).to be true
+ end
+ end
+
+ context 'when build did not succeed' do
+ let(:build) { create(:ci_build, :skipped) }
+
+ it 'does not match' do
+ expect(subject).to be false
+ end
+ end
+ end
+end