diff --git a/lib/gitlab/ci/status/build/stop.rb b/lib/gitlab/ci/status/build/stop.rb index 76c66fab3233e592993a1738e7eb23c80b93fbb4..a4966a558923063ceeecb8c6ed87f7b21f5e3bc8 100644 --- a/lib/gitlab/ci/status/build/stop.rb +++ b/lib/gitlab/ci/status/build/stop.rb @@ -13,10 +13,6 @@ module Gitlab 'stop' end - def icon - 'icon_status_skipped' - end - def has_action? can?(user, :update_build, subject) end diff --git a/spec/lib/gitlab/ci/status/build/stop_spec.rb b/spec/lib/gitlab/ci/status/build/stop_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..f2121210417e847d5fd01c5daeae871a27d72a27 --- /dev/null +++ b/spec/lib/gitlab/ci/status/build/stop_spec.rb @@ -0,0 +1,59 @@ +require 'spec_helper' + +describe Gitlab::Ci::Status::Build::Stop 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 'stop' } + end + + describe '#label' do + it { expect(subject.label).to eq 'stop' } + 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 'is a correct match' do + expect(described_class.matches?(build, user)) + .to be true + end + end + + context 'when build does not stop an environment' do + let(:build) { create(:ci_build, :playable) } + + it 'does not match' do + expect(described_class.matches?(build, user)) + .to be false + 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