0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-21 17:00:29 +01:00

DEV: Add exception to display all categories for admin and staff

Dieser Commit ist enthalten in:
jumagura 2023-10-06 16:24:05 -04:00
Ursprung 6d6ffa5ea7
Commit 362c74cb44
2 geänderte Dateien mit 155 neuen und 8 gelöschten Zeilen

Datei anzeigen

@ -87,10 +87,13 @@ export default {
api.modifyClass("component:category-chooser", {
categoriesByScope(options = {}) {
let categories = this._super(options);
return categories.filter((category) => {
return !category.custom_fields?.create_topic_wizard;
});
const currentUser = this.currentUser;
if (!(currentUser && (currentUser.admin || currentUser.staff))) {
categories = categories.filter((category) => {
return !category.custom_fields?.create_topic_wizard;
});
}
return categories;
},
});
});

Datei anzeigen

@ -3,8 +3,8 @@ import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
import { test } from "qunit";
acceptance("Category Chooser Initializer", function (needs) {
needs.user();
acceptance("Category Chooser Initializer for regular users", function (needs) {
needs.user({ staff: false, admin: false, moderator: false });
needs.settings({
allow_uncategorized_topics: false,
});
@ -45,9 +45,8 @@ acceptance("Category Chooser Initializer", function (needs) {
],
});
test("does not display category with create_topic_wizard custom field", async function (assert) {
test("does not display category with create_topic_wizard for regular users", async function (assert) {
const categoryChooser = selectKit(".category-chooser");
await visit("/");
await click("#create-topic");
await categoryChooser.expand();
@ -80,3 +79,148 @@ acceptance("Category Chooser Initializer", function (needs) {
);
});
});
acceptance("Category Chooser Initializer for Admins", function (needs) {
needs.user({ admin: true });
needs.settings({
allow_uncategorized_topics: false,
});
needs.site({
can_tag_topics: true,
categories: [
{
id: 1,
name: "General",
slug: "general",
permission: 1,
topic_template: null,
},
{
id: 2,
name: "Category with custom field",
slug: "category-custom-field",
permission: 1,
topic_template: "",
custom_fields: {
create_topic_wizard: "21",
},
},
{
id: 3,
name: "Category 1",
slug: "category-1",
permission: 1,
topic_template: "",
},
{
id: 4,
name: "Category 2",
slug: "category-2",
permission: 1,
topic_template: "",
},
],
});
test("displays all categories", async function (assert) {
const categoryChooser = selectKit(".category-chooser");
await visit("/");
await click("#create-topic");
await categoryChooser.expand();
let categories = Array.from(
document.querySelectorAll(".category-chooser .category-row")
).filter((category) => category.getAttribute("data-name")); // Filter elements with a data-name attribute
assert.equal(
categories.length,
4,
"Correct number of categories are displayed"
);
const categoryNames = [
"General",
"Category 1",
"Category 2",
"Category with custom field",
];
categoryNames.forEach((categoryName) => {
assert.ok(
categories.some(
(category) => category.getAttribute("data-name") === categoryName
),
`Category '${categoryName}' is displayed`
);
});
});
});
acceptance("Category Chooser Initializer for Staff", function (needs) {
needs.user({ staff: true });
needs.settings({
allow_uncategorized_topics: false,
});
needs.site({
can_tag_topics: true,
categories: [
{
id: 1,
name: "General",
slug: "general",
permission: 1,
topic_template: null,
},
{
id: 2,
name: "Category with custom field",
slug: "category-custom-field",
permission: 1,
topic_template: "",
custom_fields: {
create_topic_wizard: "21",
},
},
{
id: 3,
name: "Category 1",
slug: "category-1",
permission: 1,
topic_template: "",
},
{
id: 4,
name: "Category 2",
slug: "category-2",
permission: 1,
topic_template: "",
},
],
});
test("displays all categories", async function (assert) {
const categoryChooser = selectKit(".category-chooser");
await visit("/");
await click("#create-topic");
await categoryChooser.expand();
let categories = Array.from(
document.querySelectorAll(".category-chooser .category-row")
).filter((category) => category.getAttribute("data-name")); // Filter elements with a data-name attribute
assert.equal(
categories.length,
4,
"Correct number of categories are displayed"
);
const categoryNames = [
"General",
"Category 1",
"Category 2",
"Category with custom field",
];
categoryNames.forEach((categoryName) => {
assert.ok(
categories.some(
(category) => category.getAttribute("data-name") === categoryName
),
`Category '${categoryName}' is displayed`
);
});
});
});