From 4bb3c4644734a8f23bcfbe97018431f3a2bafedb Mon Sep 17 00:00:00 2001
From: Semyon Pupkov <mail@semyonpupkov.com>
Date: Mon, 12 Dec 2016 14:57:46 +0500
Subject: [PATCH] Move admin active tab spinach tests to rspec

https://gitlab.com/gitlab-org/gitlab-ce/issues/23036
---
 ...dmin-active-tab-spinach-tests-to-rspec.yml |  4 +
 features/admin/active_tab.feature             | 54 -----------
 features/steps/admin/active_tab.rb            | 41 ---------
 spec/features/admin/admin_active_tab_spec.rb  | 90 +++++++++++++++++++
 4 files changed, 94 insertions(+), 95 deletions(-)
 create mode 100644 changelogs/unreleased/move-admin-active-tab-spinach-tests-to-rspec.yml
 delete mode 100644 features/admin/active_tab.feature
 delete mode 100644 features/steps/admin/active_tab.rb
 create mode 100644 spec/features/admin/admin_active_tab_spec.rb

diff --git a/changelogs/unreleased/move-admin-active-tab-spinach-tests-to-rspec.yml b/changelogs/unreleased/move-admin-active-tab-spinach-tests-to-rspec.yml
new file mode 100644
index 00000000000..11250643a23
--- /dev/null
+++ b/changelogs/unreleased/move-admin-active-tab-spinach-tests-to-rspec.yml
@@ -0,0 +1,4 @@
+---
+title: Move admin active tab spinach tests to rspec
+merge_request: 8037
+author: Semyon Pupkov
diff --git a/features/admin/active_tab.feature b/features/admin/active_tab.feature
deleted file mode 100644
index f5bb06dea7d..00000000000
--- a/features/admin/active_tab.feature
+++ /dev/null
@@ -1,54 +0,0 @@
-@admin
-Feature: Admin Active Tab
-  Background:
-    Given I sign in as an admin
-
-  Scenario: On Admin Home
-    Given I visit admin page
-    Then the active main tab should be Overview
-    And no other main tabs should be active
-
-  Scenario: On Admin Projects
-    Given I visit admin projects page
-    Then the active main tab should be Overview
-    And the active sub tab should be Projects
-    And no other main tabs should be active
-    And no other sub tabs should be active
-
-  Scenario: On Admin Groups
-    Given I visit admin groups page
-    Then the active main tab should be Overview
-    And the active sub tab should be Groups
-    And no other main tabs should be active
-    And no other sub tabs should be active
-
-  Scenario: On Admin Users
-    Given I visit admin users page
-    Then the active main tab should be Overview
-    And the active sub tab should be Users
-    And no other main tabs should be active
-    And no other sub tabs should be active
-
-  Scenario: On Admin Logs
-    Given I visit admin logs page
-    Then the active main tab should be Monitoring
-    And the active sub tab should be Logs
-    And no other main tabs should be active
-    And no other sub tabs should be active
-
-  Scenario: On Admin Messages
-    Given I visit admin messages page
-    Then the active main tab should be Messages
-    And no other main tabs should be active
-
-  Scenario: On Admin Hooks
-    Given I visit admin hooks page
-    Then the active main tab should be Hooks
-    And no other main tabs should be active
-
-  Scenario: On Admin Resque
-    Given I visit admin Resque page
-    Then the active main tab should be Monitoring
-    And the active sub tab should be Resque
-    And no other main tabs should be active
-    And no other sub tabs should be active
diff --git a/features/steps/admin/active_tab.rb b/features/steps/admin/active_tab.rb
deleted file mode 100644
index 9b1689a8198..00000000000
--- a/features/steps/admin/active_tab.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-class Spinach::Features::AdminActiveTab < Spinach::FeatureSteps
-  include SharedAuthentication
-  include SharedPaths
-  include SharedActiveTab
-
-  step 'the active main tab should be Overview' do
-    ensure_active_main_tab('Overview')
-  end
-
-  step 'the active sub tab should be Projects' do
-    ensure_active_sub_tab('Projects')
-  end
-
-  step 'the active sub tab should be Groups' do
-    ensure_active_sub_tab('Groups')
-  end
-
-  step 'the active sub tab should be Users' do
-    ensure_active_sub_tab('Users')
-  end
-
-  step 'the active main tab should be Hooks' do
-    ensure_active_main_tab('Hooks')
-  end
-
-  step 'the active main tab should be Monitoring' do
-    ensure_active_main_tab('Monitoring')
-  end
-
-  step 'the active sub tab should be Resque' do
-    ensure_active_sub_tab('Background Jobs')
-  end
-
-  step 'the active sub tab should be Logs' do
-    ensure_active_sub_tab('Logs')
-  end
-
-  step 'the active main tab should be Messages' do
-    ensure_active_main_tab('Messages')
-  end
-end
diff --git a/spec/features/admin/admin_active_tab_spec.rb b/spec/features/admin/admin_active_tab_spec.rb
new file mode 100644
index 00000000000..f2eecc5b552
--- /dev/null
+++ b/spec/features/admin/admin_active_tab_spec.rb
@@ -0,0 +1,90 @@
+require 'spec_helper'
+
+RSpec.describe 'admin active tab' do
+  before do
+    login_as :admin
+  end
+
+  shared_examples 'page has active tab' do |title|
+    it "activates #{title} tab" do
+      expect(page).to have_selector('.layout-nav .nav-links > li.active', count: 1)
+      expect(page.find('.layout-nav li.active')).to have_content(title)
+    end
+  end
+
+  shared_examples 'page has active sub tab' do |title|
+    it "activates #{title} sub tab" do
+      expect(page).to have_selector('.sub-nav li.active', count: 1)
+      expect(page.find('.sub-nav li.active')).to have_content(title)
+    end
+  end
+
+  context 'on home page' do
+    before do
+      visit admin_root_path
+    end
+
+    it_behaves_like 'page has active tab', 'Overview'
+  end
+
+  context 'on projects' do
+    before do
+      visit admin_namespaces_projects_path
+    end
+
+    it_behaves_like 'page has active tab', 'Overview'
+    it_behaves_like 'page has active sub tab', 'Projects'
+  end
+
+  context 'on groups' do
+    before do
+      visit admin_groups_path
+    end
+
+    it_behaves_like 'page has active tab', 'Overview'
+    it_behaves_like 'page has active sub tab', 'Groups'
+  end
+
+  context 'on users' do
+    before do
+      visit admin_users_path
+    end
+
+    it_behaves_like 'page has active tab', 'Overview'
+    it_behaves_like 'page has active sub tab', 'Users'
+  end
+
+  context 'on logs' do
+    before do
+      visit admin_logs_path
+    end
+
+    it_behaves_like 'page has active tab', 'Monitoring'
+    it_behaves_like 'page has active sub tab', 'Logs'
+  end
+
+  context 'on messages' do
+    before do
+      visit admin_broadcast_messages_path
+    end
+
+    it_behaves_like 'page has active tab', 'Messages'
+  end
+
+  context 'on hooks' do
+    before do
+      visit admin_hooks_path
+    end
+
+    it_behaves_like 'page has active tab', 'Hooks'
+  end
+
+  context 'on background jobs' do
+    before do
+      visit admin_background_jobs_path
+    end
+
+    it_behaves_like 'page has active tab', 'Monitoring'
+    it_behaves_like 'page has active sub tab', 'Background Jobs'
+  end
+end
-- 
GitLab