gitlab-org--gitlab-foss/spec/controllers/projects/pipelines_controller_spec.rb

90 lines
2.5 KiB
Ruby
Raw Normal View History

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
describe 'GET index.json' do
before do
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)
get :index, namespace_id: project.namespace,
project_id: project,
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 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
end
end
describe 'GET stages.json' do
let(:pipeline) { create(:ci_pipeline, project: project) }
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
it 'responds with not found' do
expect(response).to have_http_status(:not_found)
end
end
def get_stage(name)
get :stage, namespace_id: project.namespace,
project_id: project,
id: pipeline.id,
stage: name,
format: :json
end
end
2017-03-06 07:01:18 -05:00
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,
2017-03-06 10:42:39 -05:00
project_id: project,
id: pipeline.id,
format: :json
2017-03-06 07:01:18 -05:00
end
it 'return a correct pipeline status' do
2017-03-06 07:01:18 -05:00
expect(response).to have_http_status(:ok)
expect(json_response['details']['status']['text']).to eq 'passed'
end
end
end
end