mirror of
https://github.com/discourse/discourse.git
synced 2024-11-29 20:47:07 +08:00
367040024b
DEV: unparallel flags system spec Because of the global flag cache, those specs should not run in parallel. We need to execute them sequentially.
179 lines
5.7 KiB
Ruby
179 lines
5.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe "Admin Flags Page", type: :system do
|
|
fab!(:admin)
|
|
fab!(:topic)
|
|
fab!(:post) { Fabricate(:post, topic: topic) }
|
|
|
|
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(:sidebar) { PageObjects::Components::NavigationMenu::Sidebar.new }
|
|
|
|
before { sign_in(admin) }
|
|
|
|
it "allows admin to disable, change order, create, update and delete flags" do
|
|
# disable
|
|
topic_page.visit_topic(post.topic)
|
|
topic_page.open_flag_topic_modal
|
|
expect(all(".flag-action-type-details strong").map(&:text)).to eq(
|
|
["It's Inappropriate", "It's Spam", "It's Illegal", "Something Else"],
|
|
)
|
|
|
|
visit "/admin/config/flags"
|
|
admin_flags_page.toggle("spam")
|
|
expect(page).not_to have_css(".admin-flag-item.spam.saving")
|
|
|
|
topic_page.visit_topic(post.topic)
|
|
topic_page.open_flag_topic_modal
|
|
expect(all(".flag-action-type-details strong").map(&:text)).to eq(
|
|
["It's Inappropriate", "It's Illegal", "Something Else"],
|
|
)
|
|
|
|
Flag.system.where(name: "spam").update!(enabled: true)
|
|
|
|
# change order
|
|
topic_page.visit_topic(post.topic)
|
|
topic_page.open_flag_topic_modal
|
|
expect(all(".flag-action-type-details strong").map(&:text)).to eq(
|
|
["It's Inappropriate", "It's Spam", "It's Illegal", "Something Else"],
|
|
)
|
|
|
|
visit "/admin/config/flags"
|
|
admin_flags_page.move_down("spam")
|
|
expect(page).not_to have_css(".admin-flag-item.spam.saving")
|
|
|
|
topic_page.visit_topic(post.topic)
|
|
topic_page.open_flag_topic_modal
|
|
expect(all(".flag-action-type-details strong").map(&:text)).to eq(
|
|
["It's Inappropriate", "It's Illegal", "It's Spam", "Something Else"],
|
|
)
|
|
|
|
visit "/admin/config/flags"
|
|
admin_flags_page.move_up("spam")
|
|
expect(page).not_to have_css(".admin-flag-item.spam.saving")
|
|
|
|
topic_page.visit_topic(post.topic)
|
|
topic_page.open_flag_topic_modal
|
|
expect(all(".flag-action-type-details strong").map(&:text)).to eq(
|
|
["It's Inappropriate", "It's Spam", "It's Illegal", "Something Else"],
|
|
)
|
|
|
|
# create
|
|
topic_page.visit_topic(post.topic)
|
|
topic_page.open_flag_topic_modal
|
|
expect(all(".flag-action-type-details strong").map(&:text)).to eq(
|
|
["It's Inappropriate", "It's Spam", "It's Illegal", "Something Else"],
|
|
)
|
|
|
|
visit "/admin/config/flags"
|
|
|
|
admin_flags_page.click_add_flag
|
|
|
|
expect(admin_flag_form_page).to have_disabled_save_button
|
|
|
|
admin_flag_form_page.fill_in_name("Vulgar")
|
|
admin_flag_form_page.fill_in_description("New flag description")
|
|
admin_flag_form_page.fill_in_applies_to("Topic")
|
|
admin_flag_form_page.fill_in_applies_to("Post")
|
|
admin_flag_form_page.click_save
|
|
|
|
expect(all(".admin-flag-item__name").map(&:text)).to eq(
|
|
[
|
|
"Send @%{username} a message",
|
|
"Off-Topic",
|
|
"Inappropriate",
|
|
"Spam",
|
|
"Illegal",
|
|
"Something Else",
|
|
"Vulgar",
|
|
],
|
|
)
|
|
|
|
topic_page.visit_topic(post.topic)
|
|
topic_page.open_flag_topic_modal
|
|
expect(all(".flag-action-type-details strong").map(&:text)).to eq(
|
|
["It's Inappropriate", "It's Spam", "It's Illegal", "Something Else", "Vulgar"],
|
|
)
|
|
|
|
# update
|
|
visit "/admin/config/flags"
|
|
|
|
admin_flags_page.click_edit_flag("vulgar")
|
|
|
|
admin_flag_form_page.fill_in_name("Tasteless")
|
|
admin_flag_form_page.click_save
|
|
|
|
expect(all(".admin-flag-item__name").map(&:text)).to eq(
|
|
[
|
|
"Send @%{username} a message",
|
|
"Off-Topic",
|
|
"Inappropriate",
|
|
"Spam",
|
|
"Illegal",
|
|
"Something Else",
|
|
"Tasteless",
|
|
],
|
|
)
|
|
|
|
topic_page.visit_topic(post.topic)
|
|
topic_page.open_flag_topic_modal
|
|
expect(all(".flag-action-type-details strong").map(&:text)).to eq(
|
|
["It's Inappropriate", "It's Spam", "It's Illegal", "Something Else", "Tasteless"],
|
|
)
|
|
|
|
# delete
|
|
visit "/admin/config/flags"
|
|
admin_flags_page.click_delete_flag("tasteless")
|
|
admin_flags_page.confirm_delete
|
|
expect(page).not_to have_css(".admin-flag-item.tasteless.saving")
|
|
|
|
topic_page.visit_topic(post.topic)
|
|
topic_page.open_flag_topic_modal
|
|
expect(all(".flag-action-type-details strong").map(&:text)).to eq(
|
|
["It's Inappropriate", "It's Spam", "It's Illegal", "Something Else"],
|
|
)
|
|
end
|
|
|
|
it "does not allow to move notify user flag" do
|
|
visit "/admin/config/flags"
|
|
expect(page).not_to have_css(".notify_user .flag-menu-trigger")
|
|
end
|
|
|
|
it "does not allow bottom flag to move down" do
|
|
visit "/admin/config/flags"
|
|
admin_flags_page.open_flag_menu("notify_moderators")
|
|
expect(page).not_to have_css(".dropdown-menu__item .move-down")
|
|
end
|
|
|
|
it "does not allow to system flag to be edited" do
|
|
visit "/admin/config/flags"
|
|
expect(page).to have_css(".off_topic .admin-flag-item__edit[disabled]")
|
|
end
|
|
|
|
it "does not allow to system flag to be deleted" do
|
|
visit "/admin/config/flags"
|
|
admin_flags_page.open_flag_menu("notify_moderators")
|
|
expect(page).to have_css(".admin-flag-item__delete[disabled]")
|
|
end
|
|
|
|
it "does not allow top flag to move up" do
|
|
visit "/admin/config/flags"
|
|
admin_flags_page.open_flag_menu("off_topic")
|
|
expect(page).not_to have_css(".dropdown-menu__item .move-up")
|
|
end
|
|
|
|
it "does not show the moderation flags link in the sidebar by default" do
|
|
visit "/admin"
|
|
sidebar.toggle_all_sections
|
|
expect(sidebar).to have_no_section_link(
|
|
I18n.t("admin_js.admin.community.sidebar_link.moderation_flags"),
|
|
)
|
|
SiteSetting.experimental_flags_admin_page_enabled_groups = Group::AUTO_GROUPS[:admins]
|
|
visit "/admin"
|
|
expect(sidebar).to have_section_link(
|
|
I18n.t("admin_js.admin.community.sidebar_link.moderation_flags"),
|
|
)
|
|
end
|
|
end
|