summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSemyon Pupkov <mail@semyonpupkov.com>2018-03-08 00:10:58 +0100
committerSemyon Pupkov <mail@semyonpupkov.com>2018-03-08 00:10:58 +0100
commitfa7b9f50ffaad924260f6cd120ca3c4ed13ca5bd (patch)
treeb8e01f0160b5d184022b25d25c994476034353fc
parent2e87923dcb1cf7984690f5b5fdfc61bddfba923e (diff)
downloadgitlab-ce-fa7b9f50ffaad924260f6cd120ca3c4ed13ca5bd.tar.gz
Move project active tab spinach tests to RSpec
https://gitlab.com/gitlab-org/gitlab-ce/issues/23036
-rw-r--r--features/project/active_tab.feature138
-rw-r--r--features/steps/project/active_tab.rb127
-rw-r--r--spec/features/projects/actve_tabs_spec.rb137
3 files changed, 137 insertions, 265 deletions
diff --git a/features/project/active_tab.feature b/features/project/active_tab.feature
deleted file mode 100644
index 3ea0aab5a67..00000000000
--- a/features/project/active_tab.feature
+++ /dev/null
@@ -1,138 +0,0 @@
-Feature: Project Active Tab
- Background:
- Given I sign in as a user
- And I own a project
-
- # Main Tabs
-
- Scenario: On Project Home
- Given I visit my project's home page
- Then the active sub tab should be Home
- And no other sub tabs should be active
- And the active main tab should be Project
-
- Scenario: On Project Repository
- Given I visit my project's files page
- Then the active main tab should be Repository
- And no other main tabs should be active
-
- Scenario: On Project Issues
- Given I visit my project's issues page
- Then the active main tab should be Issues
- And no other main tabs should be active
-
- Scenario: On Project Merge Requests
- Given I visit my project's merge requests page
- Then the active main tab should be Merge Requests
- And no other main tabs should be active
-
- Scenario: On Project Wiki
- Given I visit my project's wiki page
- Then the active main tab should be Wiki
- And no other main tabs should be active
-
- Scenario: On Project Members
- Given I visit my project's members page
- Then the active main tab should be Members
- And no other main tabs should be active
-
- # Sub Tabs: Home
-
- Scenario: On Project Home/Show
- Given I visit my project's home page
- Then the active sub tab should be Home
- And no other sub tabs should be active
- And the active main tab should be Project
- And no other main tabs should be active
-
- Scenario: On Project Home/Activity
- Given I visit my project's home page
- And I click the "Activity" tab
- Then the active sub tab should be Activity
- And no other sub tabs should be active
- And the active main tab should be Project
-
- # Sub Tabs: Settings
-
- Scenario: On Project Settings/Integrations
- Given I visit my project's settings page
- And I click the "Integrations" tab
- Then the active sub tab should be Integrations
- And no other sub tabs should be active
- And the active main tab should be Settings
-
- Scenario: On Project Settings/Repository
- Given I visit my project's settings page
- And I click the "Repository" tab
- Then the active sub tab should be Repository
- And no other sub tabs should be active
- And the active main tab should be Settings
-
- # Sub Tabs: Repository
-
- Scenario: On Project Repository/Files
- Given I visit my project's files page
- Then the active sub tab should be Files
- And no other sub tabs should be active
- And the active main tab should be Repository
-
- Scenario: On Project Repository/Commits
- Given I visit my project's commits page
- Then the active sub tab should be Commits
- And no other sub tabs should be active
- And the active main tab should be Repository
-
- Scenario: On Project Repository/Graph
- Given I visit my project's graph page
- Then the active sub tab should be Graph
- And no other sub tabs should be active
- And the active main tab should be Repository
-
- Scenario: On Project Repository/Compare
- Given I visit my project's commits page
- And I click the "Compare" tab
- Then the active sub tab should be Compare
- And no other sub tabs should be active
- And the active main tab should be Repository
-
- Scenario: On Project Repository/Charts
- Given I visit my project's commits page
- And I click the "Charts" tab
- Then the active sub tab should be Charts
- And no other sub tabs should be active
- And the active main tab should be Repository
-
- Scenario: On Project Repository/Branches
- Given I visit my project's commits page
- And I click the "Branches" tab
- Then the active sub tab should be Branches
- And no other sub tabs should be active
- And the active main tab should be Repository
-
- Scenario: On Project Repository/Tags
- Given I visit my project's commits page
- And I click the "Tags" tab
- Then the active sub tab should be Tags
- And no other sub tabs should be active
- And the active main tab should be Repository
-
- Scenario: On Project Issues/Browse
- Given I visit my project's issues page
- Then the active main tab should be Issues
- And no other main tabs should be active
-
- Scenario: On Project Issues/Milestones
- Given I visit my project's issues page
- And I click the "Milestones" sub tab
- Then the active main tab should be Issues
- Then the active sub tab should be Milestones
- And no other main tabs should be active
- And no other sub tabs should be active
-
- Scenario: On Project Issues/Labels
- Given I visit my project's issues page
- And I click the "Labels" sub tab
- Then the active main tab should be Issues
- Then the active sub tab should be Labels
- And no other main tabs should be active
- And no other sub tabs should be active
diff --git a/features/steps/project/active_tab.rb b/features/steps/project/active_tab.rb
deleted file mode 100644
index 1a18f1d7065..00000000000
--- a/features/steps/project/active_tab.rb
+++ /dev/null
@@ -1,127 +0,0 @@
-class Spinach::Features::ProjectActiveTab < Spinach::FeatureSteps
- include SharedAuthentication
- include SharedPaths
- include SharedProject
- include SharedActiveTab
- include SharedProjectTab
-
- # Sub Tabs: Home
-
- step 'I click the "Team" tab' do
- click_link('Members')
- end
-
- step 'I click the "Attachments" tab' do
- click_link('Attachments')
- end
-
- step 'I click the "Snippets" tab' do
- page.within('.layout-nav') do
- click_link('Snippets')
- end
- end
-
- step 'I click the "Edit Project"' do
- page.within '.nav-sidebar' do
- click_link('Edit Project')
- end
- end
-
- step 'I click the "Integrations" tab' do
- page.within '.nav-sidebar' do
- click_link('Integrations')
- end
- end
-
- step 'I click the "Repository" tab' do
- page.within '.sidebar-top-level-items > .active' do
- click_link('Repository')
- end
- end
-
- step 'I click the "Activity" tab' do
- page.within '.sidebar-top-level-items > .active' do
- click_link('Activity')
- end
- end
-
- step 'the active sub tab should be Members' do
- ensure_active_sub_tab('Members')
- end
-
- step 'the active sub tab should be Integrations' do
- ensure_active_sub_tab('Integrations')
- end
-
- step 'the active sub tab should be Repository' do
- ensure_active_sub_tab('Repository')
- end
-
- step 'the active sub tab should be Pages' do
- ensure_active_sub_tab('Pages')
- end
-
- step 'the active sub tab should be Activity' do
- ensure_active_sub_tab('Activity')
- end
-
- # Sub Tabs: Commits
-
- step 'I click the "Compare" tab' do
- click_link('Compare')
- end
-
- step 'I click the "Branches" tab' do
- page.within '.nav-sidebar' do
- click_link('Branches')
- end
- end
-
- step 'I click the "Tags" tab' do
- click_link('Tags')
- end
-
- step 'I click the "Charts" tab' do
- page.within('.sidebar-top-level-items > .active') do
- click_link('Charts')
- end
- end
-
- step 'the active sub tab should be Compare' do
- ensure_active_sub_tab('Compare')
- end
-
- step 'the active sub tab should be Branches' do
- ensure_active_sub_tab('Branches')
- end
-
- step 'the active sub tab should be Tags' do
- ensure_active_sub_tab('Tags')
- end
-
- # Sub Tabs: Issues
-
- step 'I click the "Milestones" sub tab' do
- page.within('.nav-sidebar') do
- click_link('Milestones')
- end
- end
-
- step 'I click the "Labels" sub tab' do
- page.within('.nav-sidebar') do
- click_link('Labels')
- end
- end
-
- step 'the active sub tab should be Issues' do
- ensure_active_sub_tab('Issues')
- end
-
- step 'the active sub tab should be Milestones' do
- ensure_active_sub_tab('Milestones')
- end
-
- step 'the active sub tab should be Labels' do
- ensure_active_sub_tab('Labels')
- end
-end
diff --git a/spec/features/projects/actve_tabs_spec.rb b/spec/features/projects/actve_tabs_spec.rb
new file mode 100644
index 00000000000..0bda68b83e7
--- /dev/null
+++ b/spec/features/projects/actve_tabs_spec.rb
@@ -0,0 +1,137 @@
+require 'spec_helper'
+
+describe 'Project active tab' do
+ let(:user) { create :user }
+ let(:project) { create(:project, :repository) }
+
+ before do
+ project.add_master(user)
+ sign_in(user)
+ end
+
+ def click_tab(title)
+ page.within '.sidebar-top-level-items > .active' do
+ click_link(title)
+ end
+ end
+
+ shared_examples 'page has active tab' do |title|
+ it "activates #{title} tab" do
+ expect(page).to have_selector('.sidebar-top-level-items > li.active', count: 1)
+ expect(find('.sidebar-top-level-items > 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('.sidebar-sub-level-items > li.active:not(.fly-out-top-item)', count: 1)
+ expect(find('.sidebar-sub-level-items > li.active:not(.fly-out-top-item)'))
+ .to have_content(title)
+ end
+ end
+
+ context 'on project Home' do
+ before do
+ visit project_path(project)
+ end
+
+ it_behaves_like 'page has active tab', 'Overview'
+ it_behaves_like 'page has active sub tab', 'Details'
+
+ context 'on project Home/Activity' do
+ before do
+ click_tab('Activity')
+ end
+
+ it_behaves_like 'page has active tab', 'Overview'
+ it_behaves_like 'page has active sub tab', 'Activity'
+ end
+ end
+
+ context 'on project Repository' do
+ before do
+ root_ref = project.repository.root_ref
+ visit project_tree_path(project, root_ref)
+ end
+
+ it_behaves_like 'page has active tab', 'Repository'
+
+ %w(Files Commits Graph Compare Charts Branches Tags).each do |sub_menu|
+ context "on project Repository/#{sub_menu}" do
+ before do
+ click_tab(sub_menu)
+ end
+
+ it_behaves_like 'page has active tab', 'Repository'
+ it_behaves_like 'page has active sub tab', sub_menu
+ end
+ end
+ end
+
+ context 'on project Issues' do
+ before do
+ visit project_issues_path(project)
+ end
+
+ it_behaves_like 'page has active tab', 'Issues'
+
+ %w(Milestones Labels).each do |sub_menu|
+ context "on project Issues/#{sub_menu}" do
+ before do
+ click_tab(sub_menu)
+ end
+
+ it_behaves_like 'page has active tab', 'Issues'
+ it_behaves_like 'page has active sub tab', sub_menu
+ end
+ end
+ end
+
+ context 'on project Merge Requests' do
+ before do
+ visit project_merge_requests_path(project)
+ end
+
+ it_behaves_like 'page has active tab', 'Merge Requests'
+ end
+
+ context 'on project Wiki' do
+ before do
+ visit project_wiki_path(project, :home)
+ end
+
+ it_behaves_like 'page has active tab', 'Wiki'
+ end
+
+ context 'on project Members' do
+ before do
+ visit project_project_members_path(project)
+ end
+
+ it_behaves_like 'page has active tab', 'Members'
+ end
+
+ context 'on project Settings' do
+ before do
+ visit edit_project_path(project)
+ end
+
+ context 'on project Settings/Integrations' do
+ before do
+ click_tab('Integrations')
+ end
+
+ it_behaves_like 'page has active tab', 'Settings'
+ it_behaves_like 'page has active sub tab', 'Integrations'
+ end
+
+ context 'on project Settings/Repository' do
+ before do
+ click_tab('Repository')
+ end
+
+ it_behaves_like 'page has active tab', 'Settings'
+ it_behaves_like 'page has active sub tab', 'Repository'
+ end
+ end
+end