Skip to content

DEV: Use qunit-dom in tests #226

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jun 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 12 additions & 20 deletions test/javascripts/acceptance/activity-pub-about-test.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
import {
acceptance,
query,
queryAll,
} from "discourse/tests/helpers/qunit-helpers";
import { default as AboutFixtures } from "../fixtures/about-fixtures";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import AboutFixtures from "../fixtures/about-fixtures";

acceptance("Discourse Activity Pub | About", function (needs) {
needs.site({ activity_pub_enabled: false });
Expand All @@ -18,22 +14,18 @@ acceptance("Discourse Activity Pub | About", function (needs) {
test("lists the forum's actors", async function (assert) {
await visit("/ap/about");

const categoryActors = queryAll(
".activity-pub-actors.categories .activity-pub-actor-card"
);
assert.strictEqual(categoryActors.length, 2);
assert
.dom(".activity-pub-actors.categories .activity-pub-actor-card")
.exists({ count: 2 });

const tagActors = queryAll(
".activity-pub-actors.tags .activity-pub-actor-card"
);
assert.strictEqual(tagActors.length, 1);
assert
.dom(".activity-pub-actors.tags .activity-pub-actor-card")
.exists({ count: 1 });

assert.strictEqual(
query(
assert
.dom(
".activity-pub-actors.categories div.activity-pub-actor-card:first-of-type .follower-count"
).innerText.trim(),
"4 followers",
"shows the right follower counts"
);
)
.hasText("4 followers", "shows the right follower counts");
});
});
214 changes: 91 additions & 123 deletions test/javascripts/acceptance/activity-pub-admin-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,12 @@ import pretender, {
parsePostData,
response,
} from "discourse/tests/helpers/create-pretender";
import {
acceptance,
exists,
query,
} from "discourse/tests/helpers/qunit-helpers";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
import { i18n } from "discourse-i18n";
import { default as AdminActors } from "../fixtures/admin-actors-fixtures";
import { default as Logs } from "../fixtures/logs-fixtures";
import { default as SiteActors } from "../fixtures/site-actors-fixtures";
import AdminActors from "../fixtures/admin-actors-fixtures";
import Logs from "../fixtures/logs-fixtures";
import SiteActors from "../fixtures/site-actors-fixtures";

const categoryActors =
AdminActors["/admin/plugins/ap/actor?model_type=category"];
Expand Down Expand Up @@ -62,57 +58,47 @@ acceptance("Discourse Activity Pub | Admin | Index", function (needs) {
});

await visit("/admin/plugins/ap/actor");
assert.ok(
exists(".activity-pub-actor-table"),
"the actors table is visible"
);
assert.strictEqual(
document.querySelectorAll(".activity-pub-actor-table-row").length,
2,
"enabled and deleted actors are visible"
);
assert.ok(
exists(
assert
.dom(".activity-pub-actor-table")
.exists("the actors table is visible");
assert
.dom(".activity-pub-actor-table-row")
.exists({ count: 2 }, "enabled and deleted actors are visible");
assert
.dom(
".activity-pub-actor-table-row:nth-of-type(1) .activity-pub-edit-actor-btn"
),
"the edit btn is visible for enabled actors"
);
assert.notOk(
exists(
)
.exists("the edit btn is visible for enabled actors");
assert
.dom(
".activity-pub-actor-table-row:nth-of-type(2) .activity-pub-edit-actor-btn"
),
"the edit btn is not visible for deleted actors"
);
assert.notOk(
exists(
)
.doesNotExist("the edit btn is not visible for deleted actors");
assert
.dom(
".activity-pub-actor-table-row:nth-of-type(1) .activity-pub-destroy-actor-btn"
),
"the destroy btn is not visible for enabled actors"
);
assert.ok(
exists(
)
.doesNotExist("the destroy btn is not visible for enabled actors");
assert
.dom(
".activity-pub-actor-table-row:nth-of-type(2) .activity-pub-destroy-actor-btn"
),
"the destroy btn is visible for deleted actors"
);
assert.notOk(
exists(
)
.exists("the destroy btn is visible for deleted actors");
assert
.dom(
".activity-pub-actor-table-row:nth-of-type(1) .activity-pub-restore-actor-btn"
),
"the restore btn is not visible for enabled actors"
);
assert.ok(
exists(
)
.doesNotExist("the restore btn is not visible for enabled actors");
assert
.dom(
".activity-pub-actor-table-row:nth-of-type(2) .activity-pub-restore-actor-btn"
),
"the restore btn is visible for deleted actors"
);
)
.exists("the restore btn is visible for deleted actors");

await click(".activity-pub-edit-actor-btn");
assert.ok(
exists(".admin-plugins.activity-pub.actor-show"),
"edit button routes to actor show"
);
assert
.dom(".admin-plugins.activity-pub.actor-show")
.exists("edit button routes to actor show");
});

test("destroy actor", async function (assert) {
Expand All @@ -137,7 +123,7 @@ acceptance("Discourse Activity Pub | Admin | Index", function (needs) {

await click(".activity-pub-destroy-actor-btn");

assert.ok(exists("#dialog-holder"), "confirmation dialog is visible");
assert.dom("#dialog-holder").exists("confirmation dialog is visible");
assert.dom(".dialog-body p").hasHtml(
i18n("admin.discourse_activity_pub.actor.destroy.confirm.message", {
actor: deletedActor.handle,
Expand Down Expand Up @@ -220,10 +206,9 @@ acceptance("Discourse Activity Pub | Admin | Index", function (needs) {
});

await visit("/admin/plugins/ap/actor");
assert.ok(
exists(".activity-pub-add-actor.category"),
"the add category actor button is visible"
);
assert
.dom(".activity-pub-add-actor.category")
.exists("the add category actor button is visible");
await click(".activity-pub-add-actor");
assert.strictEqual(
queryParams.model_type,
Expand All @@ -232,10 +217,9 @@ acceptance("Discourse Activity Pub | Admin | Index", function (needs) {
);

await visit("/admin/plugins/ap/actor?model_type=tag");
assert.ok(
exists(".activity-pub-add-actor.tag"),
"the add tag actor button is visible"
);
assert
.dom(".activity-pub-add-actor.tag")
.exists("the add tag actor button is visible");
await click(".activity-pub-add-actor");
assert.strictEqual(
queryParams.model_type,
Expand All @@ -261,28 +245,24 @@ acceptance("Discourse Activity Pub | Admin | New Actor", function (needs) {
test("creates a new actor", async function (assert) {
await visit("/admin/plugins/ap/actor/new");

assert.ok(
exists(".activity-pub-actor-add"),
"add actor container is visible"
);
assert.ok(
exists(".activity-pub-new-actor-model"),
"actor model controls are visible"
);
assert
.dom(".activity-pub-actor-add")
.exists("add actor container is visible");
assert
.dom(".activity-pub-new-actor-model")
.exists("actor model controls are visible");

assert.ok(
exists(".activity-pub-category-chooser"),
"activity pub category chooser is visible"
);
assert
.dom(".activity-pub-category-chooser")
.exists("activity pub category chooser is visible");

const categories = selectKit(".activity-pub-category-chooser");
await categories.expand();
await categories.selectRowByValue(6);

assert.ok(
exists(".activity-pub-actor-form"),
"activity pub actor form is visible"
);
assert
.dom(".activity-pub-actor-form")
.exists("activity pub actor form is visible");

const actor = {
username: "ap_username",
Expand Down Expand Up @@ -340,23 +320,20 @@ acceptance("Discourse Activity Pub | Admin | New Actor", function (needs) {
test("creates a new actor with a tag model", async function (assert) {
await visit("/admin/plugins/ap/actor/new?model_type=tag");

assert.ok(
exists(".activity-pub-actor-add"),
"add actor container is visible"
);
assert.ok(
exists(".activity-pub-new-actor-model"),
"actor model controls are visible"
);
assert
.dom(".activity-pub-actor-add")
.exists("add actor container is visible");
assert
.dom(".activity-pub-new-actor-model")
.exists("actor model controls are visible");

const tags = selectKit(".activity-pub-actor-add .tag-chooser");
await tags.expand();
await tags.selectRowByName("dog");

assert.ok(
exists(".activity-pub-actor-form"),
"activity pub actor form is visible"
);
assert
.dom(".activity-pub-actor-form")
.exists("activity pub actor form is visible");

const actor = {
username: "ap_dog",
Expand Down Expand Up @@ -415,10 +392,9 @@ acceptance("Discourse Activity Pub | Admin | New Actor", function (needs) {
siteActors.tag.some((a) => a.name === createdActor.name),
"adds the actor to site actors"
);
assert.ok(
query(".activity-pub-actor-status.active"),
"actor has the right status"
);
assert
.dom(".activity-pub-actor-status")
.hasClass("active", "actor has the right status");
});
});

Expand All @@ -442,16 +418,13 @@ acceptance("Discourse Activity Pub | Admin | Edit Actor", function (needs) {
test("edits an actor", async function (assert) {
await visit(`/admin/plugins/ap/actor/${actor.id}`);

assert.ok(
exists(".activity-pub-actor-edit"),
"edit actor container is visible"
);
assert.ok(exists(".activity-pub-actor-model"), "actor model is visible");
assert.strictEqual(
query(".activity-pub-handle .handle").innerText.trim(),
actor.handle,
"shows the right handle"
);
assert
.dom(".activity-pub-actor-edit")
.exists("edit actor container is visible");
assert.dom(".activity-pub-actor-model").exists("actor model is visible");
assert
.dom(".activity-pub-handle .handle")
.hasText(actor.handle, "shows the right handle");

const updates = {
name: "Updated name",
Expand Down Expand Up @@ -493,7 +466,7 @@ acceptance("Discourse Activity Pub | Admin | Edit Actor", function (needs) {

await click(".activity-pub-delete-actor");

assert.ok(exists("#dialog-holder"), "confirmation dialog is visible");
assert.dom("#dialog-holder").exists("confirmation dialog is visible");
assert.dom(".dialog-body p").hasHtml(
i18n("admin.discourse_activity_pub.actor.delete.confirm.message", {
actor: actor.handle,
Expand Down Expand Up @@ -535,31 +508,26 @@ acceptance("Discourse Activity Pub | Admin | Logs", function (needs) {
test("displays logs", async function (assert) {
await visit("/admin/plugins/ap/log");

assert.ok(exists(".activity-pub-log-table"), "log table is visible");
assert.strictEqual(
document.querySelectorAll(".activity-pub-log-row").length,
2,
"logs are visible"
);
assert.ok(
exists(
assert.dom(".activity-pub-log-table").exists("log table is visible");
assert
.dom(".activity-pub-log-row")
.exists({ count: 2 }, "logs are visible");
assert
.dom(
".activity-pub-log-row:nth-of-type(1) .activity-pub-log-show-json-btn"
),
"shows show json button if log has json"
);
assert.notOk(
exists(
)
.exists("shows show json button if log has json");
assert
.dom(
".activity-pub-log-row:nth-of-type(2) .activity-pub-log-show-json-btn"
),
"does not show json button if log does not have json"
);
)
.doesNotExist("does not show json button if log does not have json");

await click(
".activity-pub-log-row:nth-of-type(1) .activity-pub-log-show-json-btn"
);
assert.ok(
exists(".modal.activity-pub-json-modal"),
"it shows the log json modal"
);
assert
.dom(".modal.activity-pub-json-modal")
.exists("shows the log json modal");
});
});
Loading