diff options
Diffstat (limited to 'www/wiki/extensions/Translate/tests/browser/features/support/pages/manage_translator_sandbox_page.rb')
-rw-r--r-- | www/wiki/extensions/Translate/tests/browser/features/support/pages/manage_translator_sandbox_page.rb | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/tests/browser/features/support/pages/manage_translator_sandbox_page.rb b/www/wiki/extensions/Translate/tests/browser/features/support/pages/manage_translator_sandbox_page.rb new file mode 100644 index 00000000..a37171f4 --- /dev/null +++ b/www/wiki/extensions/Translate/tests/browser/features/support/pages/manage_translator_sandbox_page.rb @@ -0,0 +1,141 @@ +require 'json' + +class ManageTranslatorSandboxPage + include PageObject + + page_url 'Special:ManageTranslatorSandbox?<%=params[:extra]%>' + + button(:clear_language_selector, class: 'clear-language-selector') + + div(:details, class: 'details') + + text_field(:language_filter, id: 'languagefilter') + button(:language_selector_button, class: 'language-selector') + + a(:older_requests_indicator, class: 'older-requests-indicator') + + div(:request_count, class: 'request-count') + span(:reminder_status, class: 'reminder-status') + + span(:selected_counter, class: 'selected-counter') + + text_field(:search, class: 'request-filter-box') + + checkbox(:select_all_checkbox, class: 'request-selector-all') + + div(:signup_comment_text, class: 'signup-comment-text') + + # This must be reloaded every time, because it may change during the test + def details_header + browser.element(class: 'tsb-header') + end + + def details_button(label) + button_class = label.downcase.gsub(' ', '-') + browser.button(class: button_class) + end + + def details_no_translations + browser.divs(class: 'tsb-details-no-translations') + end + + def visible_request_selectors_element + browser.elements(css: '.row.request:not(.hide) .request-selector') + end + + def visible_users_element + browser.elements(css: '.row.request:not(.hide) .username') + end + + def visible_requests_element + browser.elements(css: '.row.request:not(.hide)') + end + + def hidden_users_element + browser.elements(css: '.requests .request.hide') + end + + def request_with_username(username) + browser.div(id: "tsb-request-#{username}") + end + + def requests_without_username(username) + browser.elements(css: ".row.request:not(#tsb-request-#{username})") + end + + def translation_elements + browser.elements(css: '.details .translation') + end + + def checkbox_for_request_with_username(username) + browser.div(id: "tsb-request-#{username}").checkbox(class: 'request-selector') + end + + def visible_users_start_with?(prefix) + Watir::Wait.until { hidden_users_element.size > 0 } + visible_users_element.all? do |element| + element.text.match(/^#{prefix}/i) + end + end + + def the_first_column_has_username_starting_with?(prefix) + visible_users_element.any? do |element| + element.text.match(/^#{prefix}/i) + end + end + + def all_visible_requests_translate_to?(language) + Watir::Wait.until { hidden_users_element.size > 0 } + visible_requests_element.all? do |element| + user_data = JSON.parse(element.attribute_value('data-data')) + user_data['languagepreferences']['languages'].include?(language) + end + end + + def username_in_request(index) + visible_users_element[index].text + end + + def requests_are_sorted_by_translation_count_and_date? + expected_usernames = [] + Array(0..4).each do |num| + %w(Pupu Orava).each do |name| + expected_usernames.unshift("#{name}#{num}") + end + end + expected_usernames.unshift('Kissa') + usernames = visible_users_element.collect { |element| element.text } + + expected_usernames == usernames + end + + def details_autonym + browser.elements(css: '.details.pane .languages span')[0] + end + + def translations_languages_are_sorted? + expected_langs = %w(bn fi he nl uk) + langs = translations_autonyms.collect { |element| element.attribute_value('lang') } + + expected_langs == langs + end + + def translations_autonyms + browser.elements(css: '.details.pane .translations .info.autonym') + end + + def click_button(label) + details_button(label).click + + # It takes a few moments until Accept and Reject buttons + # finish performing the action, and this action always + # removes the currently displayed users and changes the header + Watir::Wait.while { browser.execute_script 'return window.tsbUpdatingUsers' } + end + + def only_request_with_username_is_selected?(username) + requests_without_username(username).all? do |element| + !element.attribute_value('class').split(' ').include?('selected') + end + end +end |