discourse-assign/test/javascripts/acceptance/bulk-actions-test.js

96 lines
2.9 KiB
JavaScript

import { click, fillIn, visit } from "@ember/test-helpers";
import { skip } from "qunit";
import pretender, {
parsePostData,
response,
} from "discourse/tests/helpers/create-pretender";
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
import I18n from "I18n";
acceptance("Discourse Assign | Bulk actions", function (needs) {
needs.user({
moderator: true,
can_assign: true,
});
needs.settings({
assign_enabled: true,
enable_assign_status: true,
});
needs.pretender((server, helper) => {
server.get("/assign/suggestions", () => {
return helper.response({
success: true,
assign_allowed_groups: false,
assign_allowed_for_groups: [],
suggestions: [
{
id: 19,
username: "eviltrout",
name: "Robin Ward",
avatar_template:
"/user_avatar/meta.discourse.org/eviltrout/{size}/5275_2.png",
},
],
});
});
});
// TODO (martin) Unskip when core PR is merged to make new bulk select method the default
skip("Assigning users to topics", async function (assert) {
pretender.put("/topics/bulk", ({ requestBody }) => {
const body = parsePostData(requestBody);
assert.deepEqual(body.operation, {
type: "assign",
username: "eviltrout",
status: "In Progress",
note: "a note!",
});
assert.deepEqual(body["topic_ids[]"], [
topic1.dataset.topicId,
topic2.dataset.topicId,
]);
return response({ success: true });
});
await visit("/latest");
await click("button.bulk-select");
const topic1 = query(".topic-list-body tr:nth-child(1)");
const topic2 = query(".topic-list-body tr:nth-child(2)");
await click(topic1.querySelector("input.bulk-select"));
await click(topic2.querySelector("input.bulk-select"));
await click(".bulk-select-actions");
assert
.dom("#discourse-modal-title")
.includesText(I18n.t("topics.bulk.actions"), "opens bulk-select modal");
await click("button.assign-topics");
const menu = selectKit(".topic-bulk-actions-modal .user-chooser");
assert.true(menu.isExpanded(), "user selector is expanded");
await click(".topic-bulk-actions-modal .btn-primary");
assert.dom(".error-label").includesText("Choose a user to assign");
await menu.expand();
await menu.selectRowByIndex(0);
assert.strictEqual(menu.header().value(), "eviltrout");
await fillIn("#assign-modal-note", "a note!");
const statusDropdown = selectKit("#assign-status");
assert.strictEqual(statusDropdown.header().value(), "New");
await statusDropdown.expand();
await statusDropdown.selectRowByValue("In Progress");
assert.strictEqual(statusDropdown.header().value(), "In Progress");
await click(".topic-bulk-actions-modal .btn-primary");
});
});