pipelines_controller_spec.rb 2.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
require 'spec_helper'

describe Projects::PipelinesController do
  include ApiHelpers

  let(:user) { create(:user) }
  let(:project) { create(:empty_project, :public) }

  before do
    sign_in(user)
  end

13 14
  describe 'GET index.json' do
    before do
15 16 17 18
      create(:ci_empty_pipeline, status: 'pending', project: project)
      create(:ci_empty_pipeline, status: 'running', project: project)
      create(:ci_empty_pipeline, status: 'created', project: project)
      create(:ci_empty_pipeline, status: 'success', project: project)
19

20 21
      get :index, namespace_id: project.namespace,
                  project_id: project,
22 23 24 25 26 27 28
                  format: :json
    end

    it 'returns JSON with serialized pipelines' do
      expect(response).to have_http_status(:ok)

      expect(json_response).to include('pipelines')
29 30 31 32 33
      expect(json_response['pipelines'].count).to eq 4
      expect(json_response['count']['all']).to eq 4
      expect(json_response['count']['running']).to eq 1
      expect(json_response['count']['pending']).to eq 1
      expect(json_response['count']['finished']).to eq 1
34 35 36
    end
  end

37
  describe 'GET stages.json' do
38 39
    let(:pipeline) { create(:ci_pipeline, project: project) }

40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
    context 'when accessing existing stage' do
      before do
        create(:ci_build, pipeline: pipeline, stage: 'build')

        get_stage('build')
      end

      it 'returns html source for stage dropdown' do
        expect(response).to have_http_status(:ok)
        expect(response).to render_template('projects/pipelines/_stage')
        expect(json_response).to include('html')
      end
    end

    context 'when accessing unknown stage' do
      before do
        get_stage('test')
      end

59 60 61
      it 'responds with not found' do
        expect(response).to have_http_status(:not_found)
      end
62 63
    end

64
    def get_stage(name)
65 66
      get :stage, namespace_id: project.namespace,
                  project_id: project,
67 68 69 70
                  id: pipeline.id,
                  stage: name,
                  format: :json
    end
71
  end
S
Shinya Maeda 已提交
72 73 74

  describe 'GET status.json' do
    context 'when accessing status' do
S
Shinya Maeda 已提交
75 76 77 78
      let(:status) do
        Gitlab::Ci::Status::Success.new(double('object'), double('user'))
      end

S
Shinya Maeda 已提交
79
      before do
S
Shinya Maeda 已提交
80
        pipeline = create(:ci_pipeline, project: project, status: :success)
S
Shinya Maeda 已提交
81
        get :status, namespace_id: project.namespace,
S
Shinya Maeda 已提交
82 83 84
                     project_id: project,
                     id: pipeline.id,
                     format: :json
S
Shinya Maeda 已提交
85 86
      end

87
      it 'return a correct pipeline status' do
S
Shinya Maeda 已提交
88
        expect(response).to have_http_status(:ok)
S
Shinya Maeda 已提交
89 90 91
        expect(json_response['text']).to eq status.text
        expect(json_response['label']).to eq status.label
        expect(json_response['icon']).to eq status.icon
S
Shinya Maeda 已提交
92
        expect(json_response['favicon']).to eq status.favicon
S
Shinya Maeda 已提交
93 94 95
      end
    end
  end
96
end