From 182966312f88be877d290dd5606a8ab38efaf05c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Tue, 2 Oct 2018 11:45:48 +0200 Subject: [QA] Improve admin hashed-storage settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../_repository_storage.html.haml | 4 +-- .../application_settings/repository.html.haml | 2 +- .../admin/application_settings/show.html.haml | 2 +- app/views/layouts/nav/sidebar/_admin.html.haml | 8 ++--- qa/qa.rb | 7 +++-- .../admin/settings/component/repository_storage.rb | 26 ++++++++++++++++ qa/qa/page/admin/settings/main.rb | 21 ------------- qa/qa/page/admin/settings/repository.rb | 23 ++++++++++++++ qa/qa/page/admin/settings/repository_storage.rb | 23 -------------- qa/qa/page/base.rb | 8 +++++ qa/qa/page/menu/admin.rb | 36 ++++++++++++++++++++-- qa/spec/page/validator_spec.rb | 2 +- 12 files changed, 104 insertions(+), 58 deletions(-) create mode 100644 qa/qa/page/admin/settings/component/repository_storage.rb delete mode 100644 qa/qa/page/admin/settings/main.rb create mode 100644 qa/qa/page/admin/settings/repository.rb delete mode 100644 qa/qa/page/admin/settings/repository_storage.rb diff --git a/app/views/admin/application_settings/_repository_storage.html.haml b/app/views/admin/application_settings/_repository_storage.html.haml index 4523332493b..908b30cc3ce 100644 --- a/app/views/admin/application_settings/_repository_storage.html.haml +++ b/app/views/admin/application_settings/_repository_storage.html.haml @@ -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" diff --git a/app/views/admin/application_settings/repository.html.haml b/app/views/admin/application_settings/repository.html.haml index d8029e0c54a..be13138a764 100644 --- a/app/views/admin/application_settings/repository.html.haml +++ b/app/views/admin/application_settings/repository.html.haml @@ -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') diff --git a/app/views/admin/application_settings/show.html.haml b/app/views/admin/application_settings/show.html.haml index e2043183a97..52731f97062 100644 --- a/app/views/admin/application_settings/show.html.haml +++ b/app/views/admin/application_settings/show.html.haml @@ -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') diff --git a/app/views/layouts/nav/sidebar/_admin.html.haml b/app/views/layouts/nav/sidebar/_admin.html.haml index f912a32ee1a..5f15ba87729 100644 --- a/app/views/layouts/nav/sidebar/_admin.html.haml +++ b/app/views/layouts/nav/sidebar/_admin.html.haml @@ -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') diff --git a/qa/qa.rb b/qa/qa.rb index 952084085d5..227d4424b09 100644 --- a/qa/qa.rb +++ b/qa/qa.rb @@ -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 diff --git a/qa/qa/page/admin/settings/component/repository_storage.rb b/qa/qa/page/admin/settings/component/repository_storage.rb new file mode 100644 index 00000000000..2ed0cd73aa3 --- /dev/null +++ b/qa/qa/page/admin/settings/component/repository_storage.rb @@ -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 diff --git a/qa/qa/page/admin/settings/main.rb b/qa/qa/page/admin/settings/main.rb deleted file mode 100644 index 73034ffe0d8..00000000000 --- a/qa/qa/page/admin/settings/main.rb +++ /dev/null @@ -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 diff --git a/qa/qa/page/admin/settings/repository.rb b/qa/qa/page/admin/settings/repository.rb new file mode 100644 index 00000000000..b7f1deb21bd --- /dev/null +++ b/qa/qa/page/admin/settings/repository.rb @@ -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 diff --git a/qa/qa/page/admin/settings/repository_storage.rb b/qa/qa/page/admin/settings/repository_storage.rb deleted file mode 100644 index 68dd23a41e1..00000000000 --- a/qa/qa/page/admin/settings/repository_storage.rb +++ /dev/null @@ -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 diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb index a87536671c6..142707521df 100644 --- a/qa/qa/page/base.rb +++ b/qa/qa/page/base.rb @@ -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 diff --git a/qa/qa/page/menu/admin.rb b/qa/qa/page/menu/admin.rb index 573b98f7386..bf05a912bc6 100644 --- a/qa/qa/page/menu/admin.rb +++ b/qa/qa/page/menu/admin.rb @@ -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 diff --git a/qa/spec/page/validator_spec.rb b/qa/spec/page/validator_spec.rb index 55957649904..0ae6e66d767 100644 --- a/qa/spec/page/validator_spec.rb +++ b/qa/spec/page/validator_spec.rb @@ -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 -- cgit v1.2.3