0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-14 13:58:53 +08:00
discourse/spec/system/page_objects/pages/category.rb
chapoi 3fc0e679d9
UX: Edit category scope fix (#41116)
`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`
2026-06-23 12:53:01 +02:00

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