Commit cada511f8b88671bb8a99600ed314c3beb5a36f4

Authored by Robert Speicher
1 parent f814da38

Add features for checking the "Active Tab" across various pages

features/admin/active_tab.feature 0 → 100644
... ... @@ -0,0 +1,33 @@
  1 +Feature: Admin active tab
  2 + Background:
  3 + Given I sign in as an admin
  4 +
  5 + Scenario: On Admin Home
  6 + Given I visit admin page
  7 + Then the active main tab should be Home
  8 + And no other main tabs should be active
  9 +
  10 + Scenario: On Admin Projects
  11 + Given I visit admin projects page
  12 + Then the active main tab should be Projects
  13 + And no other main tabs should be active
  14 +
  15 + Scenario: On Admin Users
  16 + Given I visit admin users page
  17 + Then the active main tab should be Users
  18 + And no other main tabs should be active
  19 +
  20 + Scenario: On Admin Logs
  21 + Given I visit admin logs page
  22 + Then the active main tab should be Logs
  23 + And no other main tabs should be active
  24 +
  25 + Scenario: On Admin Hooks
  26 + Given I visit admin hooks page
  27 + Then the active main tab should be Hooks
  28 + And no other main tabs should be active
  29 +
  30 + Scenario: On Admin Resque
  31 + Given I visit admin Resque page
  32 + Then the active main tab should be Resque
  33 + And no other main tabs should be active
... ...
features/dashboard/active_tab.feature 0 → 100644
... ... @@ -0,0 +1,28 @@
  1 +Feature: Dashboard active tab
  2 + Background:
  3 + Given I sign in as a user
  4 +
  5 + Scenario: On Dashboard Home
  6 + Given I visit dashboard page
  7 + Then the active main tab should be Home
  8 + And no other main tabs should be active
  9 +
  10 + Scenario: On Dashboard Issues
  11 + Given I visit dashboard issues page
  12 + Then the active main tab should be Issues
  13 + And no other main tabs should be active
  14 +
  15 + Scenario: On Dashboard Merge Requests
  16 + Given I visit dashboard merge requests page
  17 + Then the active main tab should be Merge Requests
  18 + And no other main tabs should be active
  19 +
  20 + Scenario: On Dashboard Search
  21 + Given I visit dashboard search page
  22 + Then the active main tab should be Search
  23 + And no other main tabs should be active
  24 +
  25 + Scenario: On Dashboard Help
  26 + Given I visit dashboard help page
  27 + Then the active main tab should be Help
  28 + And no other main tabs should be active
... ...
features/profile/active_tab.feature 0 → 100644
... ... @@ -0,0 +1,28 @@
  1 +Feature: Profile active tab
  2 + Background:
  3 + Given I sign in as a user
  4 +
  5 + Scenario: On Profile Home
  6 + Given I visit profile page
  7 + Then the active main tab should be Home
  8 + And no other main tabs should be active
  9 +
  10 + Scenario: On Profile Account
  11 + Given I visit profile account page
  12 + Then the active main tab should be Account
  13 + And no other main tabs should be active
  14 +
  15 + Scenario: On Profile SSH Keys
  16 + Given I visit profile SSH keys page
  17 + Then the active main tab should be SSH Keys
  18 + And no other main tabs should be active
  19 +
  20 + Scenario: On Profile Design
  21 + Given I visit profile design page
  22 + Then the active main tab should be Design
  23 + And no other main tabs should be active
  24 +
  25 + Scenario: On Profile History
  26 + Given I visit profile history page
  27 + Then the active main tab should be History
  28 + And no other main tabs should be active
... ...
features/project/active_tab.feature 0 → 100644
... ... @@ -0,0 +1,147 @@
  1 +Feature: Project active tab
  2 + Background:
  3 + Given I sign in as a user
  4 + And I own a project
  5 +
  6 + # Main Tabs
  7 +
  8 + Scenario: On Project Home
  9 + Given I visit my project's home page
  10 + Then the active main tab should be Home
  11 + And no other main tabs should be active
  12 +
  13 + Scenario: On Project Files
  14 + Given I visit my project's files page
  15 + Then the active main tab should be Files
  16 + And no other main tabs should be active
  17 +
  18 + Scenario: On Project Commits
  19 + Given I visit my project's commits page
  20 + Then the active main tab should be Commits
  21 + And no other main tabs should be active
  22 +
  23 + Scenario: On Project Network
  24 + Given I visit my project's network page
  25 + Then the active main tab should be Network
  26 + And no other main tabs should be active
  27 +
  28 + Scenario: On Project Issues
  29 + Given I visit my project's issues page
  30 + Then the active main tab should be Issues
  31 + And no other main tabs should be active
  32 +
  33 + Scenario: On Project Merge Requests
  34 + Given I visit my project's merge requests page
  35 + Then the active main tab should be Merge Requests
  36 + And no other main tabs should be active
  37 +
  38 + Scenario: On Project Wall
  39 + Given I visit my project's wall page
  40 + Then the active main tab should be Wall
  41 + And no other main tabs should be active
  42 +
  43 + Scenario: On Project Wiki
  44 + Given I visit my project's wiki page
  45 + Then the active main tab should be Wiki
  46 + And no other main tabs should be active
  47 +
  48 + # Sub Tabs: Home
  49 +
  50 + Scenario: On Project Home/Show
  51 + Given I visit my project's home page
  52 + Then the active sub tab should be Show
  53 + And no other sub tabs should be active
  54 + And the active main tab should be Home
  55 +
  56 + Scenario: On Project Home/Team
  57 + Given I visit my project's home page
  58 + And I click the "Team" tab
  59 + Then the active sub tab should be Team
  60 + And no other sub tabs should be active
  61 + And the active main tab should be Home
  62 +
  63 + Scenario: On Project Home/Attachments
  64 + Given I visit my project's home page
  65 + And I click the "Attachments" tab
  66 + Then the active sub tab should be Attachments
  67 + And no other sub tabs should be active
  68 + And the active main tab should be Home
  69 +
  70 + Scenario: On Project Home/Snippets
  71 + Given I visit my project's home page
  72 + And I click the "Snippets" tab
  73 + Then the active sub tab should be Snippets
  74 + And no other sub tabs should be active
  75 + And the active main tab should be Home
  76 +
  77 + Scenario: On Project Home/Edit
  78 + Given I visit my project's home page
  79 + And I click the "Edit" tab
  80 + Then the active sub tab should be Edit
  81 + And no other sub tabs should be active
  82 + And the active main tab should be Home
  83 +
  84 + Scenario: On Project Home/Hooks
  85 + Given I visit my project's home page
  86 + And I click the "Hooks" tab
  87 + Then the active sub tab should be Hooks
  88 + And no other sub tabs should be active
  89 + And the active main tab should be Home
  90 +
  91 + Scenario: On Project Home/Deploy Keys
  92 + Given I visit my project's home page
  93 + And I click the "Deploy Keys" tab
  94 + Then the active sub tab should be Deploy Keys
  95 + And no other sub tabs should be active
  96 + And the active main tab should be Home
  97 +
  98 + # Sub Tabs: Commits
  99 +
  100 + Scenario: On Project Commits/Commits
  101 + Given I visit my project's commits page
  102 + Then the active sub tab should be Commits
  103 + And no other sub tabs should be active
  104 + And the active main tab should be Commits
  105 +
  106 + Scenario: On Project Commits/Compare
  107 + Given I visit my project's commits page
  108 + And I click the "Compare" tab
  109 + Then the active sub tab should be Compare
  110 + And no other sub tabs should be active
  111 + And the active main tab should be Commits
  112 +
  113 + Scenario: On Project Commits/Branches
  114 + Given I visit my project's commits page
  115 + And I click the "Branches" tab
  116 + Then the active sub tab should be Branches
  117 + And no other sub tabs should be active
  118 + And the active main tab should be Commits
  119 +
  120 + Scenario: On Project Commits/Tags
  121 + Given I visit my project's commits page
  122 + And I click the "Tags" tab
  123 + Then the active sub tab should be Tags
  124 + And no other sub tabs should be active
  125 + And the active main tab should be Commits
  126 +
  127 + # Sub Tabs: Issues
  128 +
  129 + Scenario: On Project Issues/Browse
  130 + Given I visit my project's issues page
  131 + Then the active sub tab should be Browse Issues
  132 + And no other sub tabs should be active
  133 + And the active main tab should be Issues
  134 +
  135 + Scenario: On Project Issues/Milestones
  136 + Given I visit my project's issues page
  137 + And I click the "Milestones" tab
  138 + Then the active sub tab should be Milestones
  139 + And no other sub tabs should be active
  140 + And the active main tab should be Issues
  141 +
  142 + Scenario: On Project Issues/Labels
  143 + Given I visit my project's issues page
  144 + And I click the "Labels" tab
  145 + Then the active sub tab should be Labels
  146 + And no other sub tabs should be active
  147 + And the active main tab should be Issues
... ...
features/steps/admin/admin_active_tab.rb 0 → 100644
... ... @@ -0,0 +1,29 @@
  1 +class AdminActiveTab < Spinach::FeatureSteps
  2 + include SharedAuthentication
  3 + include SharedPaths
  4 + include SharedActiveTab
  5 +
  6 + Then 'the active main tab should be Home' do
  7 + ensure_active_main_tab('Stats')
  8 + end
  9 +
  10 + Then 'the active main tab should be Projects' do
  11 + ensure_active_main_tab('Projects')
  12 + end
  13 +
  14 + Then 'the active main tab should be Users' do
  15 + ensure_active_main_tab('Users')
  16 + end
  17 +
  18 + Then 'the active main tab should be Logs' do
  19 + ensure_active_main_tab('Logs')
  20 + end
  21 +
  22 + Then 'the active main tab should be Hooks' do
  23 + ensure_active_main_tab('Hooks')
  24 + end
  25 +
  26 + Then 'the active main tab should be Resque' do
  27 + ensure_active_main_tab('Resque')
  28 + end
  29 +end
... ...
features/steps/dashboard/dashboard_active_tab.rb 0 → 100644
... ... @@ -0,0 +1,25 @@
  1 +class DashboardActiveTab < Spinach::FeatureSteps
  2 + include SharedAuthentication
  3 + include SharedPaths
  4 + include SharedActiveTab
  5 +
  6 + Then 'the active main tab should be Home' do
  7 + ensure_active_main_tab('Home')
  8 + end
  9 +
  10 + Then 'the active main tab should be Issues' do
  11 + ensure_active_main_tab('Issues')
  12 + end
  13 +
  14 + Then 'the active main tab should be Merge Requests' do
  15 + ensure_active_main_tab('Merge Requests')
  16 + end
  17 +
  18 + Then 'the active main tab should be Search' do
  19 + ensure_active_main_tab('Search')
  20 + end
  21 +
  22 + Then 'the active main tab should be Help' do
  23 + ensure_active_main_tab('Help')
  24 + end
  25 +end
... ...
features/steps/profile/profile_active_tab.rb 0 → 100644
... ... @@ -0,0 +1,25 @@
  1 +class ProfileActiveTab < Spinach::FeatureSteps
  2 + include SharedAuthentication
  3 + include SharedPaths
  4 + include SharedActiveTab
  5 +
  6 + Then 'the active main tab should be Home' do
  7 + ensure_active_main_tab('Profile')
  8 + end
  9 +
  10 + Then 'the active main tab should be Account' do
  11 + ensure_active_main_tab('Account')
  12 + end
  13 +
  14 + Then 'the active main tab should be SSH Keys' do
  15 + ensure_active_main_tab('SSH Keys')
  16 + end
  17 +
  18 + Then 'the active main tab should be Design' do
  19 + ensure_active_main_tab('Design')
  20 + end
  21 +
  22 + Then 'the active main tab should be History' do
  23 + ensure_active_main_tab('History')
  24 + end
  25 +end
... ...
features/steps/project/project_active_tab.rb 0 → 100644
... ... @@ -0,0 +1,146 @@
  1 +class ProjectActiveTab < Spinach::FeatureSteps
  2 + include SharedAuthentication
  3 + include SharedPaths
  4 + include SharedProject
  5 + include SharedActiveTab
  6 +
  7 + # Main Tabs
  8 +
  9 + Then 'the active main tab should be Home' do
  10 + ensure_active_main_tab(@project.name)
  11 + end
  12 +
  13 + Then 'the active main tab should be Files' do
  14 + ensure_active_main_tab('Files')
  15 + end
  16 +
  17 + Then 'the active main tab should be Commits' do
  18 + ensure_active_main_tab('Commits')
  19 + end
  20 +
  21 + Then 'the active main tab should be Network' do
  22 + ensure_active_main_tab('Network')
  23 + end
  24 +
  25 + Then 'the active main tab should be Issues' do
  26 + ensure_active_main_tab('Issues')
  27 + end
  28 +
  29 + Then 'the active main tab should be Merge Requests' do
  30 + ensure_active_main_tab('Merge Requests')
  31 + end
  32 +
  33 + Then 'the active main tab should be Wall' do
  34 + ensure_active_main_tab('Wall')
  35 + end
  36 +
  37 + Then 'the active main tab should be Wiki' do
  38 + ensure_active_main_tab('Wiki')
  39 + end
  40 +
  41 + # Sub Tabs: Home
  42 +
  43 + Given 'I click the "Team" tab' do
  44 + click_link('Team')
  45 + end
  46 +
  47 + Given 'I click the "Attachments" tab' do
  48 + click_link('Attachments')
  49 + end
  50 +
  51 + Given 'I click the "Snippets" tab' do
  52 + click_link('Snippets')
  53 + end
  54 +
  55 + Given 'I click the "Edit" tab' do
  56 + click_link('Edit')
  57 + end
  58 +
  59 + Given 'I click the "Hooks" tab' do
  60 + click_link('Hooks')
  61 + end
  62 +
  63 + Given 'I click the "Deploy Keys" tab' do
  64 + click_link('Deploy Keys')
  65 + end
  66 +
  67 + Then 'the active sub tab should be Show' do
  68 + ensure_active_sub_tab('Show')
  69 + end
  70 +
  71 + Then 'the active sub tab should be Team' do
  72 + ensure_active_sub_tab('Team')
  73 + end
  74 +
  75 + Then 'the active sub tab should be Attachments' do
  76 + ensure_active_sub_tab('Attachments')
  77 + end
  78 +
  79 + Then 'the active sub tab should be Snippets' do
  80 + ensure_active_sub_tab('Snippets')
  81 + end
  82 +
  83 + Then 'the active sub tab should be Edit' do
  84 + ensure_active_sub_tab('Edit')
  85 + end
  86 +
  87 + Then 'the active sub tab should be Hooks' do
  88 + ensure_active_sub_tab('Hooks')
  89 + end
  90 +
  91 + Then 'the active sub tab should be Deploy Keys' do
  92 + ensure_active_sub_tab('Deploy Keys')
  93 + end
  94 +
  95 + # Sub Tabs: Commits
  96 +
  97 + Given 'I click the "Compare" tab' do
  98 + click_link('Compare')
  99 + end
  100 +
  101 + Given 'I click the "Branches" tab' do
  102 + click_link('Branches')
  103 + end
  104 +
  105 + Given 'I click the "Tags" tab' do
  106 + click_link('Tags')
  107 + end
  108 +
  109 + Then 'the active sub tab should be Commits' do
  110 + ensure_active_sub_tab('Commits')
  111 + end
  112 +
  113 + Then 'the active sub tab should be Compare' do
  114 + ensure_active_sub_tab('Compare')
  115 + end
  116 +
  117 + Then 'the active sub tab should be Branches' do
  118 + ensure_active_sub_tab('Branches')
  119 + end
  120 +
  121 + Then 'the active sub tab should be Tags' do
  122 + ensure_active_sub_tab('Tags')
  123 + end
  124 +
  125 + # Sub Tabs: Issues
  126 +
  127 + Given 'I click the "Milestones" tab' do
  128 + click_link('Milestones')
  129 + end
  130 +
  131 + Given 'I click the "Labels" tab' do
  132 + click_link('Labels')
  133 + end
  134 +
  135 + Then 'the active sub tab should be Browse Issues' do
  136 + ensure_active_sub_tab('Browse Issues')
  137 + end
  138 +
  139 + Then 'the active sub tab should be Milestones' do
  140 + ensure_active_sub_tab('Milestones')
  141 + end
  142 +
  143 + Then 'the active sub tab should be Labels' do
  144 + ensure_active_sub_tab('Labels')
  145 + end
  146 +end
... ...
features/steps/shared/active_tab.rb 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +module SharedActiveTab
  2 + include Spinach::DSL
  3 +
  4 + def ensure_active_main_tab(content)
  5 + page.find('ul.main_menu li.current').should have_content(content)
  6 + end
  7 +
  8 + And 'no other main tabs should be active' do
  9 + page.should have_selector('ul.main_menu li.current', count: 1)
  10 + end
  11 +end
... ...
features/steps/shared/authentication.rb
... ... @@ -7,4 +7,8 @@ module SharedAuthentication
7 7 Given 'I sign in as a user' do
8 8 login_as :user
9 9 end
  10 +
  11 + Given 'I sign in as an admin' do
  12 + login_as :admin
  13 + end
10 14 end
... ...
features/steps/shared/paths.rb
1 1 module SharedPaths
2 2 include Spinach::DSL
3 3  
4   - And 'I visit dashboard search page' do
5   - visit search_path
  4 + # ----------------------------------------
  5 + # Dashboard
  6 + # ----------------------------------------
  7 +
  8 + Given 'I visit dashboard page' do
  9 + visit dashboard_path
  10 + end
  11 +
  12 + Given 'I visit dashboard issues page' do
  13 + visit dashboard_issues_path
6 14 end
7 15  
8   - And 'I visit dashboard merge requests page' do
  16 + Given 'I visit dashboard merge requests page' do
9 17 visit dashboard_merge_requests_path
10 18 end
11 19  
12   - And 'I visit dashboard issues page' do
13   - visit dashboard_issues_path
  20 + Given 'I visit dashboard search page' do
  21 + visit search_path
14 22 end
15 23  
16   - When 'I visit dashboard page' do
17   - visit dashboard_path
  24 + Given 'I visit dashboard help page' do
  25 + visit help_path
18 26 end
19 27  
  28 + # ----------------------------------------
  29 + # Profile
  30 + # ----------------------------------------
  31 +
20 32 Given 'I visit profile page' do
21 33 visit profile_path
22 34 end
... ... @@ -25,10 +37,50 @@ module SharedPaths
25 37 visit profile_account_path
26 38 end
27 39  
  40 + Given 'I visit profile SSH keys page' do
  41 + visit keys_path
  42 + end
  43 +
  44 + Given 'I visit profile design page' do
  45 + visit profile_design_path
  46 + end
  47 +
  48 + Given 'I visit profile history page' do
  49 + visit profile_history_path
  50 + end
  51 +
28 52 Given 'I visit profile token page' do
29 53 visit profile_token_path
30 54 end
31 55  
  56 + # ----------------------------------------
  57 + # Admin
  58 + # ----------------------------------------
  59 +
  60 + Given 'I visit admin page' do
  61 + visit admin_root_path
  62 + end
  63 +
  64 + Given 'I visit admin projects page' do
  65 + visit admin_projects_path
  66 + end
  67 +
  68 + Given 'I visit admin users page' do
  69 + visit admin_users_path
  70 + end
  71 +
  72 + Given 'I visit admin logs page' do
  73 + visit admin_logs_path
  74 + end
  75 +
  76 + Given 'I visit admin hooks page' do
  77 + visit admin_hooks_path
  78 + end
  79 +
  80 + Given 'I visit admin Resque page' do
  81 + visit admin_resque_path
  82 + end
  83 +
32 84 When 'I visit new project page' do
33 85 visit new_project_path
34 86 end
... ...