2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-03-03 23:54:20 +08:00
discourse/spec/system/admin_flags_spec.rb
Alan Guo Xiang Tan eef0b47b43
DEV: Fix broken test (#33403)
Follow-up to 40256ecc1c
2025-07-01 12:56:19 +08:00

180 lines
4.9 KiB
Ruby

# frozen_string_literal: true
describe "Admin Flags Page", type: :system do
fab!(:admin)
fab!(:post)
let(:topic_page) { PageObjects::Pages::Topic.new }
let(:admin_flags_page) { PageObjects::Pages::AdminFlags.new }
let(:admin_flag_form_page) { PageObjects::Pages::AdminFlagForm.new }
let(:flag_modal) { PageObjects::Modals::Flag.new }
let(:d_page_header) { PageObjects::Components::DPageHeader.new }
before { sign_in(admin) }
it "allows admin to disable, change order, create, update and delete flags" do
SiteSetting.custom_flags_limit = 4
custom_flag =
Fabricate(:flag, name: "flag1", description: "custom flag 1", applies_to: %w[Post Topic])
custom_flag_2 =
Fabricate(:flag, name: "flag2", description: "custom flag 2", applies_to: %w[Post Topic])
custom_flag_3 =
Fabricate(:flag, name: "flag3", description: "custom flag 3", applies_to: %w[Post Topic])
admin_flags_page.visit
expect(d_page_header).to be_visible
expect(admin_flags_page).to have_flags(
"Send @%{username} a message",
"Off-Topic",
"Inappropriate",
"Spam",
"Illegal",
"Something Else",
"flag1",
"flag2",
"flag3",
)
# disable flag
admin_flags_page.toggle("spam")
# change order
admin_flags_page.move_down("illegal").move_up("custom_flag1")
expect(admin_flags_page).to have_flags(
"Send @%{username} a message",
"Off-Topic",
"Inappropriate",
"Spam",
"Something Else",
"flag1",
"Illegal",
"flag2",
"flag3",
)
# create flag
admin_flags_page.click_add_flag
expect(d_page_header).to be_hidden
expect(admin_flag_form_page).to have_text(
I18n.t("admin_js.admin.config_areas.flags.form.create_warning"),
)
admin_flag_form_page
.fill_in_name("flag4")
.fill_in_description("custom flag 4")
.select_applies_to("Topic")
.select_applies_to("Post")
.click_save
expect(admin_flags_page).to have_add_flag_button_disabled
expect(admin_flags_page).to have_flags(
"Send @%{username} a message",
"Off-Topic",
"Inappropriate",
"Spam",
"Something Else",
"flag1",
"Illegal",
"flag2",
"flag3",
"flag4",
)
# update flag
admin_flags_page.visit.click_edit_flag("custom_flag1")
expect(d_page_header).to be_hidden
expect(admin_flag_form_page).to have_text(
I18n.t("admin_js.admin.config_areas.flags.form.edit_warning"),
)
admin_flag_form_page.fill_in_name("flag edited").click_save
# delete flag
admin_flags_page.visit.click_delete_flag("custom_flag3").confirm_delete
expect(admin_flags_page).to have_no_flag("custom_flag3")
topic_page.visit_topic(post.topic).open_flag_topic_modal
expect(flag_modal).to have_choices(
"It's Inappropriate",
"Something Else",
"flag edited",
"It's Illegal",
"flag2",
"flag4",
)
end
it "has settings tab" do
admin_flags_page.visit
expect(admin_flags_page).to have_tabs(
[I18n.t("admin_js.settings"), I18n.t("admin_js.admin.config_areas.flags.flags_tab")],
)
admin_flags_page.click_tab("settings")
expect(page.all(".setting-label h3").map(&:text).map(&:downcase)).to eq(
[
"flag post allowed groups",
"allow all users to flag illegal content",
"email address to report illegal content",
"silence new user sensitivity",
"num users to silence new user",
"flag sockpuppets",
"num flaggers to close topic",
"auto respond to flag actions",
"high trust flaggers auto hide posts",
"max flags per day",
"tl2 additional flags per day multiplier",
"tl3 additional flags per day multiplier",
"tl4 additional flags per day multiplier",
],
)
end
it "allows to create custom flag with same name as system flag" do
admin_flags_page.visit
admin_flags_page.click_add_flag
admin_flag_form_page
.fill_in_name("Inappropriate")
.fill_in_description("New flag description")
.select_applies_to("Topic")
.select_applies_to("Post")
.click_save
expect(admin_flags_page).to have_flags(
"Send @%{username} a message",
"Off-Topic",
"Inappropriate",
"Spam",
"Illegal",
"Something Else",
"Inappropriate",
)
end
it "restricts actions on certain flags" do
admin_flags_page.visit
expect(admin_flags_page).to have_no_action_for_flag("notify_user")
expect(admin_flags_page).to have_disabled_edit_for_flag("off_topic")
admin_flags_page.toggle_flag_menu("notify_moderators")
expect(admin_flags_page).to have_no_item_action("move-down")
expect(admin_flags_page).to have_disabled_item_action("delete")
admin_flags_page.toggle_flag_menu("notify_moderators")
admin_flags_page.visit.toggle_flag_menu("off_topic")
expect(admin_flags_page).to have_no_item_action("move-up")
end
end