discourse/spec/system/page_objects/pages/admin_site_settings.rb
Martin Brennan 7111d5e4bf
DEV: Fix flaky admin confirmation spec (#27784)
Waiting for the dialog to close was not enough,
need to wait for the overridden indicator to
show on the site setting.
2024-07-09 12:05:31 +10:00

96 lines
2.7 KiB
Ruby

# 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 find_setting(setting_name, overridden: false)
find(
".admin-detail .row.setting[data-setting='#{setting_name}']#{overridden ? ".overridden" : ""}",
)
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)
find_setting(setting_name, overridden: true)
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