pipelines_controller_spec.rb 1.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 15 16 17 18 19 20 21 22 23 24 25 26 27
  describe 'GET index.json' do
    before do
      create_list(:ci_empty_pipeline, 2, project: project)

      get :index, namespace_id: project.namespace.path,
                  project_id: project.path,
                  format: :json
    end

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

      expect(json_response).to include('pipelines')
      expect(json_response['pipelines'].count).to eq 2
      expect(json_response['count']['all']).to eq 2
28 29 30
      expect(json_response['count']['running']).to eq 0
      expect(json_response['count']['pending']).to eq 2
      expect(json_response['count']['finished']).to eq 0
31 32 33
    end
  end

34
  describe 'GET stages.json' do
35 36
    let(:pipeline) { create(:ci_pipeline, project: project) }

37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
    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

56 57 58
      it 'responds with not found' do
        expect(response).to have_http_status(:not_found)
      end
59 60
    end

61 62 63 64 65 66 67
    def get_stage(name)
      get :stage, namespace_id: project.namespace.path,
                  project_id: project.path,
                  id: pipeline.id,
                  stage: name,
                  format: :json
    end
68 69
  end
end