discourse/spec/system/page_objects/pages/admin_permalinks.rb
Ted Johansson 4682919744
DEV: Add base admin page page object (#30814)
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.
2025-01-16 12:52:41 +08:00

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