mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 03:57:24 +08:00

This PR introduces a base page object for admin pages. Since we're standardizing using components, this makes writing tests easier by abstracting away details about selectors.
71 lines
1.6 KiB
Ruby
71 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module PageObjects
|
|
module Pages
|
|
class AdminPermalinks < AdminBase
|
|
def visit
|
|
page.visit("/admin/config/permalinks")
|
|
self
|
|
end
|
|
|
|
def toggle(key)
|
|
PageObjects::Components::DToggleSwitch.new(".admin-flag-item__toggle.#{key}").toggle
|
|
has_saved_flag?(key)
|
|
self
|
|
end
|
|
|
|
def click_add_permalink
|
|
find(".admin-permalinks__header-add-permalink").click
|
|
self
|
|
end
|
|
|
|
def click_edit_permalink(url)
|
|
find("tr.#{url} .admin-permalink-item__edit").click
|
|
self
|
|
end
|
|
|
|
def click_delete_permalink(url)
|
|
open_permalink_menu(url)
|
|
find(".admin-permalink-item__delete").click
|
|
find(".dialog-footer .btn-primary").click
|
|
expect(page).to have_no_css(".dialog-body")
|
|
has_closed_permalink_menu?
|
|
self
|
|
end
|
|
|
|
def has_permalinks?(*permalinks)
|
|
all(".admin-permalink-item__url").map(&:text) == permalinks
|
|
end
|
|
|
|
def has_no_permalinks?
|
|
has_no_css?(".admin-permalink-item__url")
|
|
end
|
|
|
|
def has_no_filter?
|
|
has_no_css?(".permalink-search")
|
|
end
|
|
|
|
def has_filter?
|
|
has_css?(".permalink-search")
|
|
end
|
|
|
|
def filter(text)
|
|
find(".permalink-search").fill_in with: text
|
|
end
|
|
|
|
def has_no_results?
|
|
has_css?(".permalink-results__no-result")
|
|
end
|
|
|
|
def open_permalink_menu(url)
|
|
find("tr.#{url} .permalink-menu-trigger").click
|
|
self
|
|
end
|
|
|
|
def has_closed_permalink_menu?
|
|
has_no_css?(".permalink-menu-content")
|
|
end
|
|
end
|
|
end
|
|
end
|