Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzegorz@gitlab.com>2018-09-14 12:03:44 +0300
committerGrzegorz Bizon <grzegorz@gitlab.com>2018-09-14 12:03:44 +0300
commit55c23a09352e8e6b4d0059ad47a76426bb0d7799 (patch)
tree2560a5fd450ebd2a5d19398786f6a9067984dd8e /spec/features
parentf076358491400008dfaa1c4b4c545acc66236706 (diff)
parentf7ef78a7b5529a345d06b31df067f73c0b6c5833 (diff)
Merge branch 'feature/runner-state-filter-for-admin-view' into 'master'
Feature: State filter for admin runners view See merge request gitlab-org/gitlab-ce!19625
Diffstat (limited to 'spec/features')
-rw-r--r--spec/features/admin/admin_runners_spec.rb111
1 files changed, 91 insertions, 20 deletions
diff --git a/spec/features/admin/admin_runners_spec.rb b/spec/features/admin/admin_runners_spec.rb
index 5623e47eadf..026dea8d22c 100644
--- a/spec/features/admin/admin_runners_spec.rb
+++ b/spec/features/admin/admin_runners_spec.rb
@@ -2,6 +2,8 @@ require 'spec_helper'
describe "Admin Runners" do
include StubENV
+ include FilteredSearchHelpers
+ include SortingHelper
before do
stub_env('IN_MEMORY_APPLICATION_SETTINGS', 'false')
@@ -12,40 +14,109 @@ describe "Admin Runners" do
let(:pipeline) { create(:ci_pipeline) }
context "when there are runners" do
- before do
- runner = FactoryBot.create(:ci_runner, contacted_at: Time.now)
- FactoryBot.create(:ci_build, pipeline: pipeline, runner_id: runner.id)
+ it 'has all necessary texts' do
+ runner = create(:ci_runner, contacted_at: Time.now)
+ create(:ci_build, pipeline: pipeline, runner_id: runner.id)
visit admin_runners_path
- end
- it 'has all necessary texts' do
expect(page).to have_text "Setup a shared Runner manually"
expect(page).to have_text "Runners currently online: 1"
end
- describe 'search' do
+ describe 'search', :js do
before do
- FactoryBot.create :ci_runner, description: 'runner-foo'
- FactoryBot.create :ci_runner, description: 'runner-bar'
+ create(:ci_runner, description: 'runner-foo')
+ create(:ci_runner, description: 'runner-bar')
+
+ visit admin_runners_path
end
it 'shows correct runner when description matches' do
- search_form = find('#runners-search')
- search_form.fill_in 'search', with: 'runner-foo'
- search_form.click_button 'Search'
+ input_filtered_search_keys('runner-foo')
expect(page).to have_content("runner-foo")
expect(page).not_to have_content("runner-bar")
end
it 'shows no runner when description does not match' do
- search_form = find('#runners-search')
- search_form.fill_in 'search', with: 'runner-baz'
- search_form.click_button 'Search'
+ input_filtered_search_keys('runner-baz')
expect(page).to have_text 'No runners found'
end
end
+
+ describe 'filter by status', :js do
+ it 'shows correct runner when status matches' do
+ create(:ci_runner, description: 'runner-active', active: true)
+ create(:ci_runner, description: 'runner-paused', active: false)
+
+ visit admin_runners_path
+
+ expect(page).to have_content 'runner-active'
+ expect(page).to have_content 'runner-paused'
+
+ input_filtered_search_keys('status:active')
+ expect(page).to have_content 'runner-active'
+ expect(page).not_to have_content 'runner-paused'
+ end
+
+ it 'shows no runner when status does not match' do
+ create(:ci_runner, :online, description: 'runner-active', active: true)
+ create(:ci_runner, :online, description: 'runner-paused', active: false)
+
+ visit admin_runners_path
+
+ input_filtered_search_keys('status:offline')
+
+ expect(page).not_to have_content 'runner-active'
+ expect(page).not_to have_content 'runner-paused'
+
+ expect(page).to have_text 'No runners found'
+ end
+ end
+
+ it 'shows correct runner when status is selected and search term is entered', :js do
+ create(:ci_runner, description: 'runner-a-1', active: true)
+ create(:ci_runner, description: 'runner-a-2', active: false)
+ create(:ci_runner, description: 'runner-b-1', active: true)
+
+ visit admin_runners_path
+
+ input_filtered_search_keys('status:active')
+ expect(page).to have_content 'runner-a-1'
+ expect(page).to have_content 'runner-b-1'
+ expect(page).not_to have_content 'runner-a-2'
+
+ input_filtered_search_keys('status:active runner-a')
+ expect(page).to have_content 'runner-a-1'
+ expect(page).not_to have_content 'runner-b-1'
+ expect(page).not_to have_content 'runner-a-2'
+ end
+
+ it 'sorts by last contact date', :js do
+ create(:ci_runner, description: 'runner-1', created_at: '2018-07-12 15:37', contacted_at: '2018-07-12 15:37')
+ create(:ci_runner, description: 'runner-2', created_at: '2018-07-12 16:37', contacted_at: '2018-07-12 16:37')
+
+ visit admin_runners_path
+
+ within '.runners-content .gl-responsive-table-row:nth-child(2)' do
+ expect(page).to have_content 'runner-2'
+ end
+
+ within '.runners-content .gl-responsive-table-row:nth-child(3)' do
+ expect(page).to have_content 'runner-1'
+ end
+
+ sorting_by 'Last Contact'
+
+ within '.runners-content .gl-responsive-table-row:nth-child(2)' do
+ expect(page).to have_content 'runner-1'
+ end
+
+ within '.runners-content .gl-responsive-table-row:nth-child(3)' do
+ expect(page).to have_content 'runner-2'
+ end
+ end
end
context "when there are no runners" do
@@ -76,7 +147,7 @@ describe "Admin Runners" do
context 'shared runner' do
it 'shows the label and does not show the project count' do
- runner = create :ci_runner, :instance
+ runner = create(:ci_runner, :instance)
visit admin_runners_path
@@ -89,8 +160,8 @@ describe "Admin Runners" do
context 'specific runner' do
it 'shows the label and the project count' do
- project = create :project
- runner = create :ci_runner, :project, projects: [project]
+ project = create(:project)
+ runner = create(:ci_runner, :project, projects: [project])
visit admin_runners_path
@@ -103,11 +174,11 @@ describe "Admin Runners" do
end
describe "Runner show page" do
- let(:runner) { FactoryBot.create :ci_runner }
+ let(:runner) { create(:ci_runner) }
before do
- @project1 = FactoryBot.create(:project)
- @project2 = FactoryBot.create(:project)
+ @project1 = create(:project)
+ @project2 = create(:project)
visit admin_runner_path(runner)
end