mirror of
https://github.com/discourse/discourse.git
synced 2026-08-11 02:59:07 +08:00
Certain upcoming changes do not make sense to enable for "Everyone", like changes that will only affect the admin UI. We currently have a disallow_enabled_for_groups option that changes the "Enabled for" dropdown to only show Everyone and No one, but this is a bit of a blunt instrument. This change adds an `allow_enabled_for` option for upcoming changes which is a YAML array: * When omitted, the "Enabled for" dropdown will show Everyone, Staff, Specific group(s) and No one. * When set to everyone, the dropdown will only show Everyone and No one. * When set to staff, the dropdown will only show Staff and No one. * It can also be set to staff and specific_groups This commit also changes the reporting_improvements upcoming change to be staff, specific_groups and adds a DB migration to account for this.
105 lines
2.6 KiB
Ruby
Vendored
105 lines
2.6 KiB
Ruby
Vendored
# frozen_string_literal: true
|
|
|
|
module PageObjects
|
|
module Components
|
|
class AdminUpcomingChangeItem < PageObjects::Components::Base
|
|
def initialize(setting_name)
|
|
@setting_name = setting_name
|
|
end
|
|
|
|
def has_text?(text)
|
|
find_item(@setting_name).has_text?(text)
|
|
end
|
|
|
|
def find_item(setting_name)
|
|
page.find(change_item_selector(setting_name))
|
|
end
|
|
|
|
def exists?
|
|
page.has_css?(change_item_selector(@setting_name))
|
|
end
|
|
|
|
def does_not_exist?
|
|
page.has_no_css?(change_item_selector(@setting_name))
|
|
end
|
|
|
|
def change_item_selector(setting_name)
|
|
".upcoming-change-row[data-upcoming-change='#{setting_name}']"
|
|
end
|
|
|
|
def has_status?(status)
|
|
find_item(@setting_name).has_css?(".upcoming-change__badge.--status-#{status}")
|
|
end
|
|
|
|
def has_impact_role?(impact_type)
|
|
find_item(@setting_name).has_css?(".upcoming-change__badge.--impact-role-#{impact_type}")
|
|
end
|
|
|
|
def has_plugin_name?(plugin_name)
|
|
find_item(@setting_name).find(".upcoming-change__plugin").has_text?(plugin_name)
|
|
end
|
|
|
|
def has_permanent_soon_notice?
|
|
find_item(@setting_name).has_css?(".upcoming-change__status-notice")
|
|
end
|
|
|
|
def has_no_permanent_soon_notice?
|
|
find_item(@setting_name).has_no_css?(".upcoming-change__status-notice")
|
|
end
|
|
|
|
def select_enabled_for(option)
|
|
enabled_for_dropdown.select(option)
|
|
end
|
|
|
|
def save_groups
|
|
find_item(@setting_name).find(".upcoming-change__save-groups").click
|
|
end
|
|
|
|
def enabled?
|
|
enabled_for != "no_one"
|
|
end
|
|
|
|
def disabled?
|
|
enabled_for == "no_one"
|
|
end
|
|
|
|
def enabled_for
|
|
enabled_for_dropdown.value
|
|
end
|
|
|
|
def enabled_for_dropdown
|
|
PageObjects::Components::DSelect.new(
|
|
"#{change_item_selector(@setting_name)} .upcoming-change__enabled-for",
|
|
)
|
|
end
|
|
|
|
def enabled_for_options
|
|
enabled_for_dropdown.select_element.all("option").map { |o| o["value"] }
|
|
end
|
|
|
|
def group_selector
|
|
PageObjects::Components::GroupSelector.new(change_item_selector(@setting_name))
|
|
end
|
|
|
|
def has_no_group_selector?
|
|
expect(group_selector).to be_hidden
|
|
end
|
|
|
|
def has_groups?(*group_names)
|
|
group_selector.has_selected_groups?(*group_names)
|
|
end
|
|
|
|
def has_no_groups?
|
|
group_selector.has_no_selected_groups?
|
|
end
|
|
|
|
def add_group(group_name)
|
|
group_selector.add_group(group_name)
|
|
end
|
|
|
|
def remove_group(group_name)
|
|
group_selector.remove_group(group_name)
|
|
end
|
|
end
|
|
end
|
|
end
|