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

139 lines
4.2 KiB
JavaScript

import {
acceptance,
exists,
query,
queryAll,
} from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit";
import { click, visit } from "@ember/test-helpers";
acceptance("User Directory", function () {
test("Visit Page", async function (assert) {
await visit("/u");
assert.ok($("body.users-page").length, "has the body class");
assert.ok(exists(".directory table tr"), "has a list of users");
});
test("Visit All Time", async function (assert) {
await visit("/u?period=all");
assert.ok(exists(".time-read"), "has time read column");
});
test("Visit Without Usernames", async function (assert) {
await visit("/u?exclude_usernames=system");
assert.ok($("body.users-page").length, "has the body class");
assert.ok(exists(".directory table tr"), "has a list of users");
});
test("Visit With Group Filter", async function (assert) {
await visit("/u?group=trust_level_0");
assert.ok($("body.users-page").length, "has the body class");
assert.ok(exists(".directory table tr"), "has a list of users");
});
test("Custom user fields are present", async function (assert) {
await visit("/u");
const firstRow = query(".users-directory table tr");
const columnData = firstRow.querySelectorAll("td");
const favoriteColorTd = columnData[columnData.length - 1];
assert.strictEqual(
favoriteColorTd.querySelector("span").textContent,
"Blue"
);
});
});
acceptance("User directory - Editing columns", function (needs) {
needs.user({ moderator: true, admin: true });
test("The automatic columns are checked and the user field columns are unchecked by default", async function (assert) {
await visit("/u");
await click(".open-edit-columns-btn");
const columns = queryAll(
".edit-directory-columns-container .edit-directory-column"
);
assert.strictEqual(columns.length, 8);
const checked = queryAll(
".edit-directory-columns-container .edit-directory-column input[type='checkbox']:checked"
);
assert.strictEqual(checked.length, 7);
const unchecked = queryAll(
".edit-directory-columns-container .edit-directory-column input[type='checkbox']:not(:checked)"
);
assert.strictEqual(unchecked.length, 1);
});
const fetchColumns = function () {
return queryAll(".edit-directory-columns-container .edit-directory-column");
};
test("Reordering and restoring default positions", async function (assert) {
await visit("/u");
await click(".open-edit-columns-btn");
let columns;
columns = fetchColumns();
assert.strictEqual(
columns[3].querySelector(".column-name").textContent.trim(),
"Replies Posted"
);
assert.strictEqual(
columns[4].querySelector(".column-name").textContent.trim(),
"Topics Viewed"
);
// Click on row 4 and see if they are swapped
await click(columns[4].querySelector(".move-column-up"));
columns = fetchColumns();
assert.strictEqual(
columns[3].querySelector(".column-name").textContent.trim(),
"Topics Viewed"
);
assert.strictEqual(
columns[4].querySelector(".column-name").textContent.trim(),
"Replies Posted"
);
const moveUserFieldColumnUpBtn = columns[columns.length - 1].querySelector(
".move-column-up"
);
await click(moveUserFieldColumnUpBtn);
await click(moveUserFieldColumnUpBtn);
await click(moveUserFieldColumnUpBtn);
columns = fetchColumns();
assert.strictEqual(
columns[4].querySelector(".column-name").textContent.trim(),
"Favorite Color"
);
assert.strictEqual(
columns[5].querySelector(".column-name").textContent.trim(),
"Replies Posted"
);
// Now click restore default and check order of column names
await click(".reset-to-default");
let columnNames = queryAll(
".edit-directory-columns-container .edit-directory-column .column-name"
).toArray();
columnNames = columnNames.map((el) => el.textContent.trim());
assert.deepEqual(columnNames, [
"Received",
"Given",
"Topics Created",
"Replies Posted",
"Topics Viewed",
"Posts Read",
"Days Visited",
"Favorite Color",
]);
});
});