Add test for presenters
This commit is contained in:
parent
6bf1780aa8
commit
e258e6f147
4 changed files with 90 additions and 4 deletions
|
@ -219,6 +219,10 @@ module Ci
|
|||
statuses.cancelable.any?
|
||||
end
|
||||
|
||||
def auto_canceled?
|
||||
canceled? && auto_canceled_by_id?
|
||||
end
|
||||
|
||||
def cancel_running
|
||||
Gitlab::OptimisticLocking.retry_lock(
|
||||
statuses.cancelable) do |cancelable|
|
||||
|
|
|
@ -2,10 +2,6 @@ module Ci
|
|||
class PipelinePresenter < Gitlab::View::Presenter::Delegated
|
||||
presents :pipeline
|
||||
|
||||
def auto_canceled?
|
||||
canceled? && auto_canceled_by_id?
|
||||
end
|
||||
|
||||
def status_title
|
||||
"Pipeline is redundant and is auto-canceled by Pipeline ##{auto_canceled_by_id}" if auto_canceled?
|
||||
end
|
||||
|
|
|
@ -57,6 +57,38 @@ describe Ci::BuildPresenter do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#status_title' do
|
||||
context 'when build is canceled' do
|
||||
before do
|
||||
expect(presenter).to receive(:canceled?).and_return(true)
|
||||
end
|
||||
|
||||
context 'when pipeline is auto-canceled' do
|
||||
before do
|
||||
expect(pipeline).to receive(:auto_canceled?).and_return(true)
|
||||
expect(pipeline).to receive(:auto_canceled_by_id).and_return(1)
|
||||
end
|
||||
|
||||
it 'shows that the job is auto-canceled' do
|
||||
status_title = presenter.status_title
|
||||
|
||||
expect(status_title).to include('auto-canceled')
|
||||
expect(status_title).to include('Pipeline #1')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when pipeline is not auto-canceled' do
|
||||
before do
|
||||
expect(pipeline).to receive(:auto_canceled?).and_return(false)
|
||||
end
|
||||
|
||||
it 'shows that the job is auto-canceled' do
|
||||
expect(presenter.status_title).to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'quack like a Ci::Build permission-wise' do
|
||||
context 'user is not allowed' do
|
||||
let(:project) { build_stubbed(:empty_project, public_builds: false) }
|
||||
|
|
54
spec/presenters/ci/pipeline_presenter_spec.rb
Normal file
54
spec/presenters/ci/pipeline_presenter_spec.rb
Normal file
|
@ -0,0 +1,54 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Ci::PipelinePresenter do
|
||||
let(:project) { create(:empty_project) }
|
||||
let(:pipeline) { create(:ci_pipeline, project: project) }
|
||||
|
||||
subject(:presenter) do
|
||||
described_class.new(pipeline)
|
||||
end
|
||||
|
||||
it 'inherits from Gitlab::View::Presenter::Delegated' do
|
||||
expect(described_class.superclass).to eq(Gitlab::View::Presenter::Delegated)
|
||||
end
|
||||
|
||||
describe '#initialize' do
|
||||
it 'takes a pipeline and optional params' do
|
||||
expect { presenter }.not_to raise_error
|
||||
end
|
||||
|
||||
it 'exposes pipeline' do
|
||||
expect(presenter.pipeline).to eq(pipeline)
|
||||
end
|
||||
|
||||
it 'forwards missing methods to pipeline' do
|
||||
expect(presenter.ref).to eq(pipeline.ref)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#status_title' do
|
||||
context 'when pipeline is auto-canceled' do
|
||||
before do
|
||||
expect(pipeline).to receive(:auto_canceled?).and_return(true)
|
||||
expect(pipeline).to receive(:auto_canceled_by_id).and_return(1)
|
||||
end
|
||||
|
||||
it 'shows that the pipeline is auto-canceled' do
|
||||
status_title = presenter.status_title
|
||||
|
||||
expect(status_title).to include('auto-canceled')
|
||||
expect(status_title).to include('Pipeline #1')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when pipeline is not auto-canceled' do
|
||||
before do
|
||||
expect(pipeline).to receive(:auto_canceled?).and_return(false)
|
||||
end
|
||||
|
||||
it 'shows that the job is auto-canceled' do
|
||||
expect(presenter.status_title).to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue