This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/tests/acceptance/group-index-test.js
Ted Johansson a95b2f9140 FIX: Don't display staff-only options to non-staff in group member bulk menu (#19907)
In the group member bulk edit menu we are displaying staff-only options
to non-staff. The requests are blocked by the back-end, so there is no
harm other than to the user experience.

Notably the individual user edit menu is correctly filtering out
unavailable options. This change brings the bulk edit menu in line with
that.
2023-01-25 13:48:49 +02:00

148 lines
3.8 KiB
JavaScript

import {
acceptance,
count,
exists,
query,
queryAll,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
import { click, visit } from "@ember/test-helpers";
import I18n from "I18n";
import selectKit from "discourse/tests/helpers/select-kit-helper";
import { test } from "qunit";
acceptance("Group Members - Anonymous", function () {
test("Viewing Members as anon user", async function (assert) {
await visit("/g/discourse");
assert.strictEqual(
count(".avatar-flair .d-icon-adjust"),
1,
"it displays the group's avatar flair"
);
assert.ok(exists(".group-members tr"), "it lists group members");
assert.ok(
!exists(".group-member-dropdown"),
"it does not allow anon user to manage group members"
);
assert.strictEqual(
query(".group-username-filter").getAttribute("placeholder"),
I18n.t("groups.members.filter_placeholder"),
"it should display the right filter placeholder"
);
});
});
acceptance("Group Members", function (needs) {
needs.user();
needs.pretender((server, helper) => {
server.put("/admin/groups/47/owners.json", () => {
return helper.response({ success: true });
});
});
test("Viewing Members as a group owner", async function (assert) {
updateCurrentUser({ moderator: false, admin: false });
await visit("/g/discourse");
await click(".group-members-add");
assert.strictEqual(
count(".user-chooser"),
1,
"it should display the add members modal"
);
});
test("Viewing Members as an admin user", async function (assert) {
await visit("/g/discourse");
assert.ok(
exists(".group-member-dropdown"),
"it allows admin user to manage group members"
);
assert.strictEqual(
query(".group-username-filter").getAttribute("placeholder"),
I18n.t("groups.members.filter_placeholder_admin"),
"it should display the right filter placeholder"
);
});
test("Shows bulk actions as an admin user", async function (assert) {
await visit("/g/discourse");
await click("button.bulk-select");
await click(queryAll("input.bulk-select")[0]);
await click(queryAll("input.bulk-select")[1]);
const memberDropdown = selectKit(".bulk-group-member-dropdown");
await memberDropdown.expand();
assert.ok(
exists('[data-value="removeMembers"]'),
"it includes remove member option"
);
assert.ok(
exists('[data-value="makeOwners"]'),
"it includes make owners option"
);
assert.ok(
exists('[data-value="setPrimary"]'),
"it includes set primary option"
);
});
test("Shows bulk actions as a group owner", async function (assert) {
updateCurrentUser({ moderator: false, admin: false });
await visit("/g/discourse");
await click("button.bulk-select");
await click(queryAll("input.bulk-select")[0]);
await click(queryAll("input.bulk-select")[1]);
const memberDropdown = selectKit(".bulk-group-member-dropdown");
await memberDropdown.expand();
assert.ok(
exists('[data-value="removeMembers"]'),
"it includes remove member option"
);
assert.ok(
exists('[data-value="makeOwners"]'),
"it includes make owners option"
);
assert.notOk(
exists('[data-value="setPrimary"]'),
"it does not include set primary (staff only) option"
);
});
test("Bulk actions - Menu, Select all and Clear all buttons", async function (assert) {
await visit("/g/discourse");
assert.ok(
!exists(".bulk-select-buttons-wrap details"),
"it does not show menu button if nothing is selected"
);
await click("button.bulk-select");
await click(".bulk-select-buttons button:nth-child(1)");
assert.ok(
exists(".bulk-select-buttons-wrap details"),
"it shows menu button if something is selected"
);
});
});