diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2017-02-15 19:16:12 +0800 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2017-02-15 19:16:12 +0800 |
commit | 3856a3daa14bdfc2abed28d355a5244e32a81d6a (patch) | |
tree | 826069d8edcde05ac84c491c05c4502b5e31934c | |
parent | a065ee341c599f9500cd0b52a873cdb71a0bce55 (diff) | |
download | gitlab-ce-3856a3daa14bdfc2abed28d355a5244e32a81d6a.tar.gz |
Add some tests for admin/project runners page
-rw-r--r-- | spec/controllers/admin/runners_controller_spec.rb | 85 | ||||
-rw-r--r-- | spec/controllers/projects/runners_controller_spec.rb | 75 |
2 files changed, 160 insertions, 0 deletions
diff --git a/spec/controllers/admin/runners_controller_spec.rb b/spec/controllers/admin/runners_controller_spec.rb new file mode 100644 index 00000000000..ae55ce87f0b --- /dev/null +++ b/spec/controllers/admin/runners_controller_spec.rb @@ -0,0 +1,85 @@ +require 'spec_helper' + +describe Admin::RunnersController do + let(:runner) { create(:ci_runner) } + + before do + sign_in(create(:admin)) + end + + describe '#index' do + it 'lists all runners' do + get :index + + expect(response).to have_http_status(200) + end + end + + describe '#show' do + it 'shows a particular runner' do + get :show, id: runner.id + + expect(response).to have_http_status(200) + end + + it 'shows 404 for unknown runner' do + get :show, id: 0 + + expect(response).to have_http_status(404) + end + end + + describe '#update' do + it 'updates the runner and ticks the queue' do + old_tick = runner.ensure_runner_queue_value + new_desc = runner.description.swapcase + + post :update, id: runner.id, runner: { description: new_desc } + + runner.reload + + expect(response).to have_http_status(302) + expect(runner.description).to eq(new_desc) + expect(runner.ensure_runner_queue_value).not_to eq(old_tick) + end + end + + describe '#destroy' do + it 'destroys the runner' do + delete :destroy, id: runner.id + + expect(response).to have_http_status(302) + expect(Ci::Runner.find_by(id: runner.id)).to be_nil + end + end + + describe '#resume' do + it 'marks the runner as active and ticks the queue' do + old_tick = runner.ensure_runner_queue_value + runner.update(active: false) + + post :resume, id: runner.id + + runner.reload + + expect(response).to have_http_status(302) + expect(runner.active).to eq(true) + expect(runner.ensure_runner_queue_value).not_to eq(old_tick) + end + end + + describe '#pause' do + it 'marks the runner as inactive and ticks the queue' do + old_tick = runner.ensure_runner_queue_value + runner.update(active: true) + + post :pause, id: runner.id + + runner.reload + + expect(response).to have_http_status(302) + expect(runner.active).to eq(false) + expect(runner.ensure_runner_queue_value).not_to eq(old_tick) + end + end +end diff --git a/spec/controllers/projects/runners_controller_spec.rb b/spec/controllers/projects/runners_controller_spec.rb new file mode 100644 index 00000000000..6dec12f1815 --- /dev/null +++ b/spec/controllers/projects/runners_controller_spec.rb @@ -0,0 +1,75 @@ +require 'spec_helper' + +describe Projects::RunnersController do + let(:user) { create(:user) } + let(:project) { create(:empty_project) } + let(:runner) { create(:ci_runner) } + + let(:params) do + { + namespace_id: project.namespace, + project_id: project, + id: runner + } + end + + before do + sign_in(user) + project.add_master(user) + project.runners << runner + end + + describe '#update' do + it 'updates the runner and ticks the queue' do + old_tick = runner.ensure_runner_queue_value + new_desc = runner.description.swapcase + + post :update, params.merge(runner: { description: new_desc } ) + + runner.reload + + expect(response).to have_http_status(302) + expect(runner.description).to eq(new_desc) + expect(runner.ensure_runner_queue_value).not_to eq(old_tick) + end + end + + describe '#destroy' do + it 'destroys the runner' do + delete :destroy, params + + expect(response).to have_http_status(302) + expect(Ci::Runner.find_by(id: runner.id)).to be_nil + end + end + + describe '#resume' do + it 'marks the runner as active and ticks the queue' do + old_tick = runner.ensure_runner_queue_value + runner.update(active: false) + + post :resume, params + + runner.reload + + expect(response).to have_http_status(302) + expect(runner.active).to eq(true) + expect(runner.ensure_runner_queue_value).not_to eq(old_tick) + end + end + + describe '#pause' do + it 'marks the runner as inactive and ticks the queue' do + old_tick = runner.ensure_runner_queue_value + runner.update(active: true) + + post :pause, params + + runner.reload + + expect(response).to have_http_status(302) + expect(runner.active).to eq(false) + expect(runner.ensure_runner_queue_value).not_to eq(old_tick) + end + end +end |