Refurbish spec/features/runners_spec.rb
This commit is contained in:
parent
0f74ba9672
commit
438e18d809
2 changed files with 114 additions and 131 deletions
|
@ -8,7 +8,7 @@
|
||||||
- if runner.locked?
|
- if runner.locked?
|
||||||
= icon('lock', class: 'has-tooltip', title: 'Locked to current projects')
|
= icon('lock', class: 'has-tooltip', title: 'Locked to current projects')
|
||||||
|
|
||||||
%small
|
%small.edit-runner
|
||||||
= link_to edit_project_runner_path(@project, runner) do
|
= link_to edit_project_runner_path(@project, runner) do
|
||||||
%i.fa.fa-edit.btn
|
%i.fa.fa-edit.btn
|
||||||
- else
|
- else
|
||||||
|
|
|
@ -1,149 +1,132 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
describe "Runners" do
|
feature 'Runners' do
|
||||||
let(:user) { create(:user) }
|
given(:user) { create(:user) }
|
||||||
|
|
||||||
before do
|
background do
|
||||||
sign_in(user)
|
sign_in(user)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "specific runners" do
|
context 'when a project has enabled shared_runners' do
|
||||||
before do
|
|
||||||
@project = FactoryGirl.create :project, shared_runners_enabled: false
|
|
||||||
@project.team << [user, :master]
|
|
||||||
|
|
||||||
@project2 = FactoryGirl.create :project
|
|
||||||
@project2.team << [user, :master]
|
|
||||||
|
|
||||||
@project3 = FactoryGirl.create :project
|
|
||||||
@project3.team << [user, :developer]
|
|
||||||
|
|
||||||
@shared_runner = FactoryGirl.create :ci_runner, :shared
|
|
||||||
@specific_runner = FactoryGirl.create :ci_runner
|
|
||||||
@specific_runner2 = FactoryGirl.create :ci_runner
|
|
||||||
@specific_runner3 = FactoryGirl.create :ci_runner
|
|
||||||
@project.runners << @specific_runner
|
|
||||||
@project2.runners << @specific_runner2
|
|
||||||
@project3.runners << @specific_runner3
|
|
||||||
|
|
||||||
visit runners_path(@project)
|
|
||||||
end
|
|
||||||
|
|
||||||
before do
|
|
||||||
expect(page).not_to have_content(@specific_runner3.display_name)
|
|
||||||
expect(page).not_to have_content(@specific_runner3.display_name)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "places runners in right places" do
|
|
||||||
expect(page.find(".available-specific-runners")).to have_content(@specific_runner2.display_name)
|
|
||||||
expect(page.find(".activated-specific-runners")).to have_content(@specific_runner.display_name)
|
|
||||||
expect(page.find(".available-shared-runners")).to have_content(@shared_runner.display_name)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "enables specific runner for project" do
|
|
||||||
within ".available-specific-runners" do
|
|
||||||
click_on "Enable for this project"
|
|
||||||
end
|
|
||||||
|
|
||||||
expect(page.find(".activated-specific-runners")).to have_content(@specific_runner2.display_name)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "disables specific runner for project" do
|
|
||||||
@project2.runners << @specific_runner
|
|
||||||
visit runners_path(@project)
|
|
||||||
|
|
||||||
within ".activated-specific-runners" do
|
|
||||||
click_on "Disable for this project"
|
|
||||||
end
|
|
||||||
|
|
||||||
expect(page.find(".available-specific-runners")).to have_content(@specific_runner.display_name)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "removes specific runner for project if this is last project for that runners" do
|
|
||||||
within ".activated-specific-runners" do
|
|
||||||
click_on "Remove Runner"
|
|
||||||
end
|
|
||||||
|
|
||||||
expect(Ci::Runner.exists?(id: @specific_runner)).to be_falsey
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "shared runners" do
|
|
||||||
before do
|
|
||||||
@project = FactoryGirl.create :project, shared_runners_enabled: false
|
|
||||||
@project.team << [user, :master]
|
|
||||||
visit runners_path(@project)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "enables shared runners" do
|
|
||||||
click_on "Enable shared Runners"
|
|
||||||
expect(@project.reload.shared_runners_enabled).to be_truthy
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "shared runners description" do
|
|
||||||
let(:shared_runners_text) { 'custom **shared** runners description' }
|
|
||||||
let(:shared_runners_html) { 'custom shared runners description' }
|
|
||||||
|
|
||||||
before do
|
|
||||||
stub_application_setting(shared_runners_text: shared_runners_text)
|
|
||||||
project = FactoryGirl.create :project, shared_runners_enabled: false
|
|
||||||
project.team << [user, :master]
|
|
||||||
visit runners_path(project)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "sees shared runners description" do
|
|
||||||
expect(page.find(".shared-runners-description")).to have_content(shared_runners_html)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe "show page" do
|
|
||||||
before do
|
|
||||||
@project = FactoryGirl.create :project
|
|
||||||
@project.team << [user, :master]
|
|
||||||
@specific_runner = FactoryGirl.create :ci_runner
|
|
||||||
@project.runners << @specific_runner
|
|
||||||
end
|
|
||||||
|
|
||||||
it "shows runner information" do
|
|
||||||
visit runners_path(@project)
|
|
||||||
click_on @specific_runner.short_sha
|
|
||||||
expect(page).to have_content(@specific_runner.platform)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
feature 'configuring runners ability to picking untagged jobs' do
|
|
||||||
given(:project) { create(:project) }
|
given(:project) { create(:project) }
|
||||||
given(:runner) { create(:ci_runner) }
|
|
||||||
|
context 'when a specific runner is activated on the project' do
|
||||||
|
given(:specific_runner) { create(:ci_runner, :specific) }
|
||||||
|
|
||||||
background do
|
background do
|
||||||
project.team << [user, :master]
|
project.add_master(user)
|
||||||
project.runners << runner
|
project.runners << specific_runner
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'user checks default configuration' do
|
scenario 'user sees the specific runner' do
|
||||||
visit project_runner_path(project, runner)
|
|
||||||
|
|
||||||
expect(page).to have_content 'Can run untagged jobs Yes'
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when runner has tags' do
|
|
||||||
before do
|
|
||||||
runner.update_attribute(:tag_list, ['tag'])
|
|
||||||
end
|
|
||||||
|
|
||||||
scenario 'user wants to prevent runner from running untagged job' do
|
|
||||||
visit runners_path(project)
|
visit runners_path(project)
|
||||||
page.within('.activated-specific-runners') do
|
|
||||||
first('small > a').click
|
within '.activated-specific-runners' do
|
||||||
|
expect(page).to have_content(specific_runner.display_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
click_on specific_runner.short_sha
|
||||||
|
|
||||||
|
expect(page).to have_content(specific_runner.platform)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'user removes an activated specific runner' do
|
||||||
|
visit runners_path(project)
|
||||||
|
|
||||||
|
within '.activated-specific-runners' do
|
||||||
|
click_on 'Remove Runner'
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(page).to have_no_css('.activated-specific-runners')
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when a runner has a tag' do
|
||||||
|
background do
|
||||||
|
specific_runner.update_attribute(:tag_list, ['tag'])
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'user edits runner not to run untagged jobs' do
|
||||||
|
visit runners_path(project)
|
||||||
|
|
||||||
|
within '.activated-specific-runners' do
|
||||||
|
first('.edit-runner > a').click
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(page.find_field('runner[run_untagged]')).to be_checked
|
||||||
|
|
||||||
uncheck 'runner_run_untagged'
|
uncheck 'runner_run_untagged'
|
||||||
click_button 'Save changes'
|
click_button 'Save changes'
|
||||||
|
|
||||||
expect(page).to have_content 'Can run untagged jobs No'
|
expect(page).to have_content 'Can run untagged jobs No'
|
||||||
expect(runner.reload.run_untagged?).to eq false
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when a specific runner exists in another project' do
|
||||||
|
given(:another_project) { create(:project) }
|
||||||
|
given(:specific_runner2) { create(:ci_runner, :specific) }
|
||||||
|
|
||||||
|
background do
|
||||||
|
another_project.add_master(user)
|
||||||
|
another_project.runners << specific_runner2
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'user enables and disables a specific runner' do
|
||||||
|
visit runners_path(project)
|
||||||
|
|
||||||
|
within '.available-specific-runners' do
|
||||||
|
click_on 'Enable for this project'
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(page.find('.activated-specific-runners')).to have_content(specific_runner2.display_name)
|
||||||
|
|
||||||
|
within '.activated-specific-runners' do
|
||||||
|
click_on 'Disable for this project'
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(page.find('.activated-specific-runners')).not_to have_content(specific_runner2.display_name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when a shared runner is activated on the project' do
|
||||||
|
given!(:shared_runner) { create(:ci_runner, :shared) }
|
||||||
|
|
||||||
|
scenario 'user sees CI/CD setting page' do
|
||||||
|
visit runners_path(project)
|
||||||
|
|
||||||
|
expect(page.find('.available-shared-runners')).to have_content(shared_runner.display_name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when application settings have shared_runners_text' do
|
||||||
|
given(:shared_runners_text) { 'custom **shared** runners description' }
|
||||||
|
given(:shared_runners_html) { 'custom shared runners description' }
|
||||||
|
|
||||||
|
background do
|
||||||
|
project.add_master(user)
|
||||||
|
stub_application_setting(shared_runners_text: shared_runners_text)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'user sees shared runners description' do
|
||||||
|
visit runners_path(project)
|
||||||
|
|
||||||
|
expect(page.find('.shared-runners-description')).to have_content(shared_runners_html)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when a project has disabled shared_runners' do
|
||||||
|
given(:project) { create(:project, shared_runners_enabled: false) }
|
||||||
|
|
||||||
|
background do
|
||||||
|
project.add_master(user)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'user enables shared runners' do
|
||||||
|
visit runners_path(project)
|
||||||
|
|
||||||
|
click_on 'Enable shared Runners'
|
||||||
|
expect(page.find('.shared-runners-description')).to have_content('Disable shared Runners')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue