mirror of
https://github.com/discourse/discourse.git
synced 2026-08-14 13:58:53 +08:00
`edit-category` was already in use for the button on the mainpage: <img width="1087" height="72" alt="CleanShot 2026-06-23 at 11 59 07" src="https://github.com/user-attachments/assets/45f673a9-f077-4560-81e4-03b7db72a9cf" /> And conflicted with the `edit-category` container used for the new category pages. Changed this to `edit-category-page`
226 lines
6 KiB
Ruby
Vendored
226 lines
6 KiB
Ruby
Vendored
# frozen_string_literal: true
|
|
|
|
module PageObjects
|
|
module Pages
|
|
class Category < PageObjects::Pages::Base
|
|
def visit(category)
|
|
page.visit("/c/#{category.id}")
|
|
self
|
|
end
|
|
|
|
def visit_settings(category)
|
|
page.visit("/c/#{category.slug}/edit/settings")
|
|
self
|
|
end
|
|
|
|
def visit_moderation(category)
|
|
page.visit("/c/#{category.slug}/edit/moderation")
|
|
self
|
|
end
|
|
|
|
def visit_general(category, subcategory = nil)
|
|
if subcategory
|
|
page.visit("/c/#{category.slug}/#{subcategory.slug}/edit/general")
|
|
else
|
|
page.visit("/c/#{category.slug}/edit/general")
|
|
end
|
|
self
|
|
end
|
|
|
|
def visit_edit_template(category)
|
|
page.visit("/c/#{category.slug}/edit/topic-template")
|
|
self
|
|
end
|
|
|
|
def visit_edit_localizations(category)
|
|
page.visit("/c/#{category.slug}/edit/localizations")
|
|
end
|
|
|
|
def visit_categories
|
|
page.visit("/categories")
|
|
self
|
|
end
|
|
|
|
def visit_new_category
|
|
page.visit("/new-category/setup")
|
|
self
|
|
end
|
|
|
|
def visit_security(category)
|
|
page.visit("/c/#{category.slug}/edit/security")
|
|
self
|
|
end
|
|
|
|
def visit_tags(category)
|
|
page.visit("/c/#{category.slug}/edit/tags")
|
|
self
|
|
end
|
|
|
|
def visit_appearance(category)
|
|
visit_images(category)
|
|
self
|
|
end
|
|
|
|
def visit_images(category)
|
|
page.visit("/c/#{category.slug}/edit/images")
|
|
self
|
|
end
|
|
|
|
def back_to_category
|
|
find(".edit-category-page .back-button").click
|
|
self
|
|
end
|
|
|
|
def save_settings
|
|
if page.has_css?(".admin-changes-banner", wait: 0)
|
|
find(".admin-changes-banner .btn-primary").click
|
|
else
|
|
find("#save-category").click
|
|
end
|
|
self
|
|
end
|
|
|
|
def toggle_setting(setting, text = "")
|
|
find(".edit-category-tab .#{setting} label.checkbox-label", text: text, visible: :all).click
|
|
self
|
|
end
|
|
|
|
def has_form_template_enabled?
|
|
find(".d-toggle-switch .toggle-template-type", visible: false)["aria-checked"] == "true"
|
|
end
|
|
|
|
D_EDITOR_SELECTOR = ".d-editor"
|
|
|
|
def has_d_editor?
|
|
page.has_selector?(D_EDITOR_SELECTOR)
|
|
end
|
|
|
|
def has_no_d_editor?
|
|
page.has_no_selector?(D_EDITOR_SELECTOR)
|
|
end
|
|
|
|
def has_selected_template?(template_name)
|
|
has_css?(".select-category-template .select-kit-header[data-name='#{template_name}']")
|
|
end
|
|
|
|
def toggle_form_templates
|
|
PageObjects::Components::DToggleSwitch.new(".toggle-template-type").toggle
|
|
self
|
|
end
|
|
|
|
def toggle_advanced_settings
|
|
PageObjects::Components::DToggleSwitch.new(".d-toggle-switch__checkbox").toggle
|
|
self
|
|
end
|
|
|
|
def toggle_checkbox(label_text)
|
|
find("label.checkbox-label", text: label_text).click
|
|
self
|
|
end
|
|
|
|
def toggle_form_container(title)
|
|
find(".form-kit__container", text: title).find("label.d-toggle-switch__label").click
|
|
self
|
|
end
|
|
|
|
def select_form_template(template_name)
|
|
find(".select-category-template").click
|
|
find(".select-kit-collection .select-kit-row", text: template_name).click
|
|
find(".select-category-template").click
|
|
end
|
|
|
|
def new_topic_button
|
|
find("#create-topic")
|
|
end
|
|
|
|
def category_box(category)
|
|
find(".category-boxes .category-box[data-category-id='#{category.id}']")
|
|
end
|
|
|
|
CATEGORY_NAVIGATION_NEW_NAV_ITEM_SELECTOR = ".category-navigation .nav-item_new"
|
|
|
|
def has_no_new_topics?
|
|
page.has_no_css?(CATEGORY_NAVIGATION_NEW_NAV_ITEM_SELECTOR)
|
|
end
|
|
|
|
def has_new_topics?
|
|
page.has_css?(CATEGORY_NAVIGATION_NEW_NAV_ITEM_SELECTOR)
|
|
end
|
|
|
|
def click_new
|
|
page.find(CATEGORY_NAVIGATION_NEW_NAV_ITEM_SELECTOR).click
|
|
end
|
|
|
|
def click_edit_category
|
|
find(".navigation-controls .edit-category").click
|
|
self
|
|
end
|
|
|
|
def has_public_access_message?
|
|
page.has_content?(
|
|
I18n.t(
|
|
"js.category.permissions.everyone_full_access",
|
|
everyone_group: ::Group[:everyone].name,
|
|
),
|
|
)
|
|
end
|
|
|
|
def has_no_public_access_message?
|
|
page.has_no_content?(
|
|
I18n.t(
|
|
"js.category.permissions.everyone_full_access",
|
|
everyone_group: ::Group[:everyone].name,
|
|
),
|
|
)
|
|
end
|
|
|
|
def has_setting_tab?(tab_name)
|
|
tab_css = ".edit-category-#{tab_name}"
|
|
page.has_css?(tab_css)
|
|
end
|
|
|
|
def has_no_setting_tab?(tab_name)
|
|
tab_css = ".edit-category-#{tab_name}"
|
|
page.has_no_css?(tab_css)
|
|
end
|
|
|
|
def has_category_title?(title)
|
|
page.has_css?(".category-header h1", text: title)
|
|
end
|
|
|
|
def topic_posting_review_mode_chooser(simplified: true)
|
|
if simplified
|
|
PageObjects::Components::SelectKit.new(
|
|
".form-kit__field[data-name='category_setting.topic_posting_review_mode'] .combo-box",
|
|
)
|
|
else
|
|
PageObjects::Components::SelectKit.new(".topic-posting-review-mode .combo-box")
|
|
end
|
|
end
|
|
|
|
def topic_posting_review_group_chooser(simplified: true)
|
|
if simplified
|
|
PageObjects::Components::SelectKit.new(".form-kit .group-chooser")
|
|
else
|
|
PageObjects::Components::SelectKit.new(".topic-posting-review-mode .group-chooser")
|
|
end
|
|
end
|
|
|
|
def has_posting_review_groups_error?
|
|
page.has_content?(I18n.t("js.category.validations.groups_required"))
|
|
end
|
|
|
|
def has_no_posting_review_groups_error?
|
|
page.has_no_content?(I18n.t("js.category.validations.groups_required"))
|
|
end
|
|
|
|
def has_topic_posting_review_mode?(mode, simplified: true)
|
|
topic_posting_review_mode_chooser(simplified: simplified).has_selected_value?(mode)
|
|
end
|
|
|
|
def has_topic_posting_review_groups?(group, simplified: true)
|
|
topic_posting_review_group_chooser(simplified: simplified).has_selected_value?(group.id)
|
|
end
|
|
end
|
|
end
|
|
end
|