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/admin-suspend-user-test.js
2021-11-08 10:26:28 +01:00

151 lines
4.3 KiB
JavaScript

import {
acceptance,
count,
exists,
fakeTime,
query,
queryAll,
} from "discourse/tests/helpers/qunit-helpers";
import { click, fillIn, visit } from "@ember/test-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
import { test } from "qunit";
import I18n from "I18n";
acceptance("Admin - Suspend User", function (needs) {
needs.user();
needs.pretender((server, helper) => {
server.put("/admin/users/:user_id/suspend", () =>
helper.response(200, {
suspension: {
suspended_till: "2099-01-01T12:00:00.000Z",
},
})
);
server.put("/admin/users/:user_id/unsuspend", () =>
helper.response(200, {
suspension: {
suspended_till: null,
},
})
);
});
test("suspend a user - cancel", async function (assert) {
await visit("/admin/users/1234/regular");
await click(".suspend-user");
assert.strictEqual(count(".suspend-user-modal:visible"), 1);
await click(".d-modal-cancel");
assert.ok(!exists(".suspend-user-modal:visible"));
});
test("suspend a user - cancel with input", async function (assert) {
await visit("/admin/users/1234/regular");
await click(".suspend-user");
assert.strictEqual(count(".suspend-user-modal:visible"), 1);
await fillIn("input.suspend-reason", "for breaking the rules");
await fillIn(".suspend-message", "this is an email reason why");
await click(".d-modal-cancel");
assert.strictEqual(count(".bootbox.modal:visible"), 1);
await click(".modal-footer .btn-default");
assert.strictEqual(count(".suspend-user-modal:visible"), 1);
assert.strictEqual(
query(".suspend-message").value,
"this is an email reason why"
);
await click(".d-modal-cancel");
assert.strictEqual(count(".bootbox.modal:visible"), 1);
assert.ok(!exists(".suspend-user-modal:visible"));
await click(".modal-footer .btn-primary");
assert.ok(!exists(".bootbox.modal:visible"));
});
test("suspend, then unsuspend a user", async function (assert) {
const suspendUntilCombobox = selectKit(".suspend-until .combobox");
await visit("/admin/flags/active");
await visit("/admin/users/1234/regular");
assert.ok(!exists(".suspension-info"));
await click(".suspend-user");
assert.strictEqual(
count(".perform-suspend[disabled]"),
1,
"disabled by default"
);
await suspendUntilCombobox.expand();
await suspendUntilCombobox.selectRowByValue("tomorrow");
await fillIn("input.suspend-reason", "for breaking the rules");
await fillIn(".suspend-message", "this is an email reason why");
assert.ok(!exists(".perform-suspend[disabled]"), "no longer disabled");
await click(".perform-suspend");
assert.ok(!exists(".suspend-user-modal:visible"));
assert.ok(exists(".suspension-info"));
await click(".unsuspend-user");
assert.ok(!exists(".suspension-info"));
});
});
acceptance("Admin - Suspend User - timeframe choosing", function (needs) {
let clock = null;
needs.user();
needs.hooks.beforeEach(() => {
const timezone = moment.tz.guess();
clock = fakeTime("2100-05-03T08:00:00", timezone, true); // Monday morning
});
needs.hooks.afterEach(() => {
clock.restore();
});
test("shows correct timeframe options", async function (assert) {
await visit("/admin/users/1234/regular");
await click(".suspend-user");
await click(".future-date-input-selector-header");
const options = Array.from(
queryAll(`ul.select-kit-collection li span.name`).map((_, x) =>
x.innerText.trim()
)
);
const expected = [
I18n.t("topic.auto_update_input.later_today"),
I18n.t("topic.auto_update_input.tomorrow"),
I18n.t("topic.auto_update_input.next_week"),
I18n.t("topic.auto_update_input.two_weeks"),
I18n.t("topic.auto_update_input.next_month"),
I18n.t("topic.auto_update_input.two_months"),
I18n.t("topic.auto_update_input.three_months"),
I18n.t("topic.auto_update_input.four_months"),
I18n.t("topic.auto_update_input.six_months"),
I18n.t("topic.auto_update_input.one_year"),
I18n.t("topic.auto_update_input.forever"),
I18n.t("topic.auto_update_input.pick_date_and_time"),
];
assert.deepEqual(options, expected, "options are correct");
});
});