pipelines_controller_spec.rb 2.5 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 75 76 77 78 79 80 81 82 83 84 85 86 87 88

  describe 'GET status.json' do
    context 'when accessing status' do
      before do
        pipeline = create(:ci_pipeline, project: project, status: 'success')
        get :status, namespace_id: project.namespace,
                  project_id: project,
                  id: pipeline.id,
                  format: :json
      end

      it 'returns pipeline status via PipelineSerializer' do
        expect(response).to have_http_status(:ok)
        expect(json_response['details']['status']['text']).to eq 'passed'
      end
    end
  end
89
end