require 'spec_helper' describe Ci::PipelinePresenter do let(:project) { create(: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 'does not have a status title' do expect(presenter.status_title).to be_nil end end end context '#failure_reason' do context 'when pipeline has failure reason' do it 'represents a failure reason sentence' do pipeline.failure_reason = :config_error expect(presenter.failure_reason) .to eq 'CI/CD YAML configuration error!' end end context 'when pipeline does not have failure reason' do it 'returns nil' do expect(presenter.failure_reason).to be_nil end end end end