[QA] Improve admin hashed-storage settings

This was introduced by https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/7371
for which no QA was run, even though QA files were changed.

This is a follow-up to
https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/7531.

Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
Rémy Coutable 2018-10-02 11:45:48 +02:00
parent 7287fd09e2
commit 182966312f
No known key found for this signature in database
GPG key ID: 98DFFD1C0C62B70B
12 changed files with 104 additions and 58 deletions

View file

@ -5,7 +5,7 @@
.sub-section
.form-group
.form-check
= f.check_box :hashed_storage_enabled, class: 'form-check-input'
= f.check_box :hashed_storage_enabled, class: 'form-check-input qa-hashed-storage-checkbox'
= f.label :hashed_storage_enabled, class: 'form-check-label' do
Use hashed storage paths for newly created and renamed projects
.form-text.text-muted
@ -48,4 +48,4 @@
.form-text.text-muted
= circuitbreaker_failure_reset_time_help_text
= f.submit 'Save changes', class: "btn btn-success"
= f.submit 'Save changes', class: "btn btn-success qa-save-changes-button"

View file

@ -13,7 +13,7 @@
.settings-content
= render partial: 'repository_mirrors_form'
%section.settings.as-repository-storage.no-animate#js-repository-storage-settings{ class: ('expanded' if expanded_by_default?) }
%section.settings.qa-repository-storage-settings.as-repository-storage.no-animate#js-repository-storage-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Repository storage')

View file

@ -46,7 +46,7 @@
.settings-content
= render 'signin'
%section.qa-terms-settings.settings.as-terms.no-animate#js-terms-settings{ class: ('expanded' if expanded_by_default?) }
%section.settings.as-terms.no-animate#js-terms-settings{ class: ('expanded' if expanded_by_default?) }
.settings-header
%h4
= _('Terms of Service and Privacy Policy')

View file

@ -1,4 +1,4 @@
.nav-sidebar{ class: ("sidebar-collapsed-desktop" if collapsed_sidebar?) }
.nav-sidebar.qa-admin-sidebar{ class: ("sidebar-collapsed-desktop" if collapsed_sidebar?) }
.nav-sidebar-inner-scroll
.context-header
= link_to admin_root_path, title: _('Admin Overview') do
@ -197,10 +197,10 @@
= link_to admin_application_settings_path do
.nav-icon-container
= sprite_icon('settings')
%span.nav-item-name
%span.nav-item-name.qa-admin-settings-item
= _('Settings')
%ul.sidebar-sub-level-items
%ul.sidebar-sub-level-items.qa-admin-sidebar-submenu
= nav_link(controller: :application_settings, html_options: { class: "fly-out-top-item" } ) do
= link_to admin_application_settings_path do
%strong.fly-out-top-item-name
@ -215,7 +215,7 @@
%span
= _('Integrations')
= nav_link(path: 'application_settings#repository') do
= link_to repository_admin_application_settings_path, title: _('Repository') do
= link_to repository_admin_application_settings_path, title: _('Repository'), class: 'qa-admin-settings-repository-item' do
%span
= _('Repository')
- if template_exists?('admin/application_settings/templates')

View file

@ -236,8 +236,11 @@ module QA
module Admin
module Settings
autoload :RepositoryStorage, 'qa/page/admin/settings/repository_storage'
autoload :Main, 'qa/page/admin/settings/main'
autoload :Repository, 'qa/page/admin/settings/repository'
module Component
autoload :RepositoryStorage, 'qa/page/admin/settings/component/repository_storage'
end
end
end

View file

@ -0,0 +1,26 @@
# frozen_string_literal: true
module QA
module Page
module Admin
module Settings
module Component
class RepositoryStorage < Page::Base
view 'app/views/admin/application_settings/_repository_storage.html.haml' do
element :hashed_storage_checkbox
element :save_changes_button
end
def enable_hashed_storage
check_element :hashed_storage_checkbox
end
def save_settings
click_element :save_changes_button
end
end
end
end
end
end
end

View file

@ -1,21 +0,0 @@
module QA
module Page
module Admin
module Settings
class Main < Page::Base
include QA::Page::Settings::Common
view 'app/views/admin/application_settings/show.html.haml' do
element :terms_settings
end
def expand_repository_storage(&block)
expand_section(:terms_settings) do
RepositoryStorage.perform(&block)
end
end
end
end
end
end
end

View file

@ -0,0 +1,23 @@
# frozen_string_literal: true
module QA
module Page
module Admin
module Settings
class Repository < Page::Base
include QA::Page::Settings::Common
view 'app/views/admin/application_settings/repository.html.haml' do
element :repository_storage_settings
end
def expand_repository_storage(&block)
expand_section(:repository_storage_settings) do
Component::RepositoryStorage.perform(&block)
end
end
end
end
end
end
end

View file

@ -1,23 +0,0 @@
module QA
module Page
module Admin
module Settings
class RepositoryStorage < Page::Base
view 'app/views/admin/application_settings/_repository_storage.html.haml' do
element :submit, "submit 'Save changes'"
element :hashed_storage,
'Use hashed storage paths for newly created and renamed projects'
end
def enable_hashed_storage
check 'Use hashed storage paths for newly created and renamed projects'
end
def save_settings
click_button 'Save changes'
end
end
end
end
end
end

View file

@ -68,6 +68,10 @@ module QA
all(element_selector_css(name))
end
def check_element(name)
find_element(name).set(true)
end
def click_element(name)
find_element(name).click
end
@ -86,6 +90,10 @@ module QA
end
end
def scroll_to_element(name, *args)
scroll_to(element_selector_css(name), *args)
end
def element_selector_css(name)
Page::Element.new(name).selector_css
end

View file

@ -3,11 +3,41 @@ module QA
module Menu
class Admin < Page::Base
view 'app/views/layouts/nav/sidebar/_admin.html.haml' do
element :settings, "_('Settings')"
element :admin_sidebar
element :admin_sidebar_submenu
element :admin_settings_item
element :admin_settings_repository_item
end
def go_to_settings
click_link 'Settings'
def go_to_repository_settings
hover_settings do
within_submenu do
click_element :admin_settings_repository_item
end
end
end
private
def hover_settings
within_sidebar do
scroll_to_element(:admin_settings_item)
find_element(:admin_settings_item).hover
yield
end
end
def within_sidebar
within_element(:admin_sidebar) do
yield
end
end
def within_submenu
within_element(:admin_sidebar_submenu) do
yield
end
end
end
end

View file

@ -30,7 +30,7 @@ describe QA::Page::Validator do
let(:view) { spy('view') }
before do
allow(QA::Page::Admin::Settings::Main)
allow(QA::Page::Admin::Settings::Repository)
.to receive(:views).and_return([view])
end