create_spec.rb 1.3 KB
Newer Older
1 2 3 4 5 6 7
require 'spec_helper'

describe Gitlab::Ci::Pipeline::Chain::Create do
  set(:project) { create(:project) }
  set(:user) { create(:user) }

  let(:pipeline) do
8
    build(:ci_empty_pipeline, project: project, ref: 'master')
9 10 11
  end

  let(:command) do
12
    Gitlab::Ci::Pipeline::Chain::Command.new(
13
      project: project, current_user: user)
14 15 16 17 18
  end

  let(:step) { described_class.new(pipeline, command) }

  context 'when pipeline is ready to be saved' do
19
    before do
20
      pipeline.stages.build(name: 'test', position: 0, project: project)
21 22 23 24

      step.perform!
    end

25 26 27 28 29 30 31 32 33 34
    it 'saves a pipeline' do
      expect(pipeline).to be_persisted
    end

    it 'does not break the chain' do
      expect(step.break?).to be false
    end

    it 'creates stages' do
      expect(pipeline.reload.stages).to be_one
35
      expect(pipeline.stages.first).to be_persisted
36 37 38 39
    end
  end

  context 'when pipeline has validation errors' do
40 41 42 43
    context 'when ref is nil' do
      let(:pipeline) do
        build(:ci_pipeline, project: project, ref: nil)
      end
44

45 46 47
      before do
        step.perform!
      end
48

49 50
      it 'breaks the chain' do
        expect(step.break?).to be true
51 52
      end

53 54 55 56
      it 'appends validation error' do
        expect(pipeline.errors.to_a)
          .to include /Failed to persist the pipeline/
      end
57 58 59
    end
  end
end