gitlab-org--gitlab-foss/spec/features/runners_spec.rb

147 lines
4.5 KiB
Ruby
Raw Normal View History

require 'spec_helper'
describe "Runners" do
include GitlabRoutingHelper
let(:user) { create(:user) }
before { login_as(user) }
describe "specific runners" do
before do
2015-12-04 06:55:23 -05:00
@project = FactoryGirl.create :empty_project, shared_runners_enabled: false
@project.team << [user, :master]
2015-12-04 06:55:23 -05:00
@project2 = FactoryGirl.create :empty_project
@project2.team << [user, :master]
2015-12-04 06:55:23 -05:00
@project3 = FactoryGirl.create :empty_project
@project3.team << [user, :developer]
2016-02-17 16:56:33 -05:00
@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
2015-12-04 06:55:23 -05:00
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
2015-12-04 06:55:23 -05:00
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
2015-12-04 06:55:23 -05:00
@project = FactoryGirl.create :empty_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
2016-04-15 09:51:41 -04:00
describe "shared runners description" do
2016-04-19 07:39:53 -04:00
let(:shared_runners_text) { 'custom **shared** runners description' }
let(:shared_runners_html) { 'custom shared runners description' }
2016-04-15 09:51:41 -04:00
before do
2016-04-18 09:56:38 -04:00
stub_application_setting(shared_runners_text: shared_runners_text)
project = FactoryGirl.create :empty_project, shared_runners_enabled: false
project.team << [user, :master]
visit runners_path(project)
2016-04-15 09:51:41 -04:00
end
it "sees shared runners description" do
2016-04-19 07:39:53 -04:00
expect(page.find(".shared-runners-description")).to have_content(shared_runners_html)
2016-04-15 09:51:41 -04:00
end
end
describe "show page" do
before do
2015-12-04 06:55:23 -05:00
@project = FactoryGirl.create :empty_project
@project.team << [user, :master]
2016-02-17 16:56:33 -05:00
@specific_runner = FactoryGirl.create :ci_runner
@project.runners << @specific_runner
end
it "shows runner information" do
2015-12-04 06:55:23 -05:00
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(:empty_project) }
given(:runner) { create(:ci_runner) }
background do
project.team << [user, :master]
project.runners << runner
end
scenario 'user checks default configuration' do
visit namespace_project_runner_path(project.namespace, project, runner)
expect(page).to have_content 'Can run untagged jobs Yes'
end
context 'when runner has tags' do
before { runner.update_attribute(:tag_list, ['tag']) }
2016-05-19 15:27:52 -04:00
scenario 'user wants to prevent runner from running untagged job' do
visit runners_path(project)
page.within('.activated-specific-runners') do
first('small > a').click
end
uncheck 'runner_run_untagged'
click_button 'Save changes'
expect(page).to have_content 'Can run untagged jobs No'
expect(runner.reload.run_untagged?).to eq false
end
end
end
end