mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-25 11:26:25 +08:00
This builds onto #32013 in two major ways: - Unsaved changes are now persisted when you browse categories inside "All site settings". - If you're about to navigate away (and lose edits) you will be prompted if you want to save or discard changes. (This applies to individual category site setting pages as well.
119 lines
3.4 KiB
Ruby
Vendored
119 lines
3.4 KiB
Ruby
Vendored
# frozen_string_literal: true
|
|
|
|
module PageObjects
|
|
module Pages
|
|
class AdminSiteSettings < PageObjects::Pages::Base
|
|
def visit_filtered_plugin_setting(filter)
|
|
page.visit("/admin/site_settings/category/plugins?filter=#{filter}")
|
|
self
|
|
end
|
|
|
|
def visit(filter = nil)
|
|
if filter.present?
|
|
page.visit("/admin/site_settings?filter=#{filter}")
|
|
else
|
|
page.visit("/admin/site_settings")
|
|
end
|
|
self
|
|
end
|
|
|
|
def visit_category(category)
|
|
page.visit("/admin/site_settings/category/#{category}")
|
|
self
|
|
end
|
|
|
|
def navigate_to_category(category)
|
|
page.find("a.#{category}").click
|
|
self
|
|
end
|
|
|
|
def setting_row_selector(setting_name)
|
|
".row.setting[data-setting='#{setting_name}']"
|
|
end
|
|
|
|
def has_setting?(setting_name)
|
|
has_css?(".row.setting[data-setting=\"#{setting_name}\"]")
|
|
end
|
|
|
|
def find_setting(setting_name, overridden: false)
|
|
find(
|
|
".admin-detail #{setting_row_selector(setting_name)}#{overridden ? ".overridden" : ""}",
|
|
)
|
|
end
|
|
|
|
def fill_setting(setting_name, value)
|
|
setting = find_setting(setting_name)
|
|
setting.fill_in(with: value)
|
|
end
|
|
|
|
def toggle_setting(setting_name, text = "")
|
|
setting = find_setting(setting_name)
|
|
setting.find(".setting-value span", text: text).click
|
|
save_setting(setting)
|
|
end
|
|
|
|
def change_number_setting(setting_name, value, save_changes = true)
|
|
setting = find_setting(setting_name)
|
|
setting.fill_in(with: value)
|
|
save_setting(setting) if save_changes
|
|
end
|
|
|
|
def select_from_emoji_list(setting_name, text = "", save_changes = true)
|
|
setting = find(".admin-detail .row.setting[data-setting='#{setting_name}']")
|
|
setting.find(".setting-value .value-list > .value button").click
|
|
setting.find(".setting-value .emoji-picker .emoji[title='#{text}']").click
|
|
save_setting(setting) if save_changes
|
|
end
|
|
|
|
def save_setting(setting_element)
|
|
setting_element.find(".setting-controls button.ok").click
|
|
end
|
|
|
|
def has_overridden_setting?(setting_name, value: nil)
|
|
setting_field = find_setting(setting_name, overridden: true)
|
|
return setting_field.find(".setting-value input").value == value.to_s if value
|
|
true
|
|
end
|
|
|
|
def has_no_overridden_setting?(setting_name)
|
|
find_setting(setting_name, overridden: false)
|
|
end
|
|
|
|
def values_in_list(setting_name)
|
|
vals = []
|
|
setting = find(".admin-detail .row.setting[data-setting='#{setting_name}']")
|
|
setting
|
|
.all(:css, ".setting-value .values .value .value-input span")
|
|
.map { |e| vals << e.text }
|
|
vals
|
|
end
|
|
|
|
def type_in_search(input)
|
|
find("input#setting-filter").send_keys(input)
|
|
self
|
|
end
|
|
|
|
def clear_search
|
|
find("#setting-filter").click
|
|
self
|
|
end
|
|
|
|
def toggle_only_show_overridden
|
|
find("#setting-filter-toggle-overridden").click
|
|
self
|
|
end
|
|
|
|
def has_search_result?(setting)
|
|
has_css?("div[data-setting='#{setting}']")
|
|
end
|
|
|
|
def has_n_results?(count)
|
|
has_css?(".admin-detail .row.setting", count: count)
|
|
end
|
|
|
|
def has_greater_than_n_results?(count)
|
|
assert_selector(".admin-detail .row.setting", minimum: count)
|
|
end
|
|
end
|
|
end
|
|
end
|