diff --git a/lib/gitlab/ci/status/build/success.rb b/lib/gitlab/ci/status/build/erased.rb similarity index 80% rename from lib/gitlab/ci/status/build/success.rb rename to lib/gitlab/ci/status/build/erased.rb index daf43315c9061aa3d35af402f6dad41f9c46cc15..3a5113b16b65a68bff5dc4f49f44e3aff6139040 100644 --- a/lib/gitlab/ci/status/build/success.rb +++ b/lib/gitlab/ci/status/build/erased.rb @@ -2,7 +2,7 @@ module Gitlab module Ci module Status module Build - class Success < Status::Extended + class Erased < Status::Extended def illustration { image: 'illustrations/skipped-job_empty.svg', @@ -12,7 +12,7 @@ module Gitlab end def self.matches?(build, user) - !build.has_trace? && build.success? + build.erased? end end end diff --git a/lib/gitlab/ci/status/build/factory.rb b/lib/gitlab/ci/status/build/factory.rb index d3a34384f6fc4d949e172176190b00e654899e57..466a0a989ad41e4ba43ac1ff89134570e2dfec4c 100644 --- a/lib/gitlab/ci/status/build/factory.rb +++ b/lib/gitlab/ci/status/build/factory.rb @@ -9,7 +9,7 @@ module Gitlab Status::Build::Created, Status::Build::Pending, Status::Build::Skipped, - Status::Build::Success], + Status::Build::Erased], [Status::Build::Cancelable, Status::Build::Retryable], [Status::Build::FailedAllowed, diff --git a/spec/lib/gitlab/ci/status/build/success_spec.rb b/spec/lib/gitlab/ci/status/build/erased_spec.rb similarity index 62% rename from spec/lib/gitlab/ci/status/build/success_spec.rb rename to spec/lib/gitlab/ci/status/build/erased_spec.rb index e67ab461463690463a1d51ff3e63ecdd2b4300a6..0acd271e375f4abb5aa9a2d5f1eb527a97950570 100644 --- a/spec/lib/gitlab/ci/status/build/success_spec.rb +++ b/spec/lib/gitlab/ci/status/build/erased_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe Gitlab::Ci::Status::Build::Success do +describe Gitlab::Ci::Status::Build::Erased do let(:user) { create(:user) } subject do @@ -14,18 +14,16 @@ describe Gitlab::Ci::Status::Build::Success do describe '.matches?' do subject { described_class.matches?(build, user) } - context 'when build succeeded but does not have trace' do - let(:build) { create(:ci_build, :success) } + context 'when build is erased' do + let(:build) { create(:ci_build, :success, :erased) } it 'is a correct match' do - build.erase - expect(subject).to be true end end - context 'when build succeed but has trace' do - let!(:build) { create(:ci_build, :success, :trace_artifact) } + context 'when build is not erased' do + let(:build) { create(:ci_build, :success, :trace_artifact) } it 'does not match' do expect(subject).to be false diff --git a/spec/lib/gitlab/ci/status/build/factory_spec.rb b/spec/lib/gitlab/ci/status/build/factory_spec.rb index d68d8f6f105ea19fccdc88ea01a1213bb574058b..94eedc50bb29c545b2856731a2840137187f9564 100644 --- a/spec/lib/gitlab/ci/status/build/factory_spec.rb +++ b/spec/lib/gitlab/ci/status/build/factory_spec.rb @@ -36,21 +36,32 @@ describe Gitlab::Ci::Status::Build::Factory do expect(status).to have_details expect(status).to have_action end + end - context 'when job log gets erased' do - before do - build.erase - end + context 'when build is erased' do + let(:build) { create(:ci_build, :success, :erased) } - it 'matches correct extended statuses' do - expect(factory.extended_statuses) - .to eq [Gitlab::Ci::Status::Build::Success, - Gitlab::Ci::Status::Build::Retryable] - end + it 'matches correct core status' do + expect(factory.core_status).to be_a Gitlab::Ci::Status::Success + end - it 'fabricates a retryable build status' do - expect(status).to be_a Gitlab::Ci::Status::Build::Retryable - end + it 'matches correct extended statuses' do + expect(factory.extended_statuses) + .to eq [Gitlab::Ci::Status::Build::Erased, + Gitlab::Ci::Status::Build::Retryable] + end + + it 'fabricates a retryable build status' do + expect(status).to be_a Gitlab::Ci::Status::Build::Retryable + end + + it 'fabricates status with correct details' do + expect(status.text).to eq 'passed' + expect(status.icon).to eq 'status_success' + expect(status.favicon).to eq 'favicon_status_success' + expect(status.label).to eq 'passed' + expect(status).to have_details + expect(status).to have_action end end