DEV: Updates all assert.equal to qunit-dom or strictEqual (#29945)

There will eventually be lint for this.
This commit is contained in:
Jarek Radosz 2024-11-26 22:41:29 +01:00 committed by GitHub
parent 7f81c27cd9
commit ed73d80cbd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 258 additions and 327 deletions

View File

@ -270,7 +270,7 @@ acceptance("Admin - User Index", function (needs) {
test("grant admin - redirects to the 2fa page", async function (assert) {
await visit("/admin/users/4/user2");
await click(".grant-admin");
assert.equal(
assert.strictEqual(
currentURL(),
"/session/2fa?nonce=some-nonce",
"user is redirected to the 2FA page"
@ -293,11 +293,9 @@ acceptance("Admin - User Index", function (needs) {
await visit("/admin/users/5/user5");
await click(".btn-user-delete");
assert.equal(
query("#dialog-title").textContent,
i18n("admin.user.delete_confirm_title"),
"dialog has a title"
);
assert
.dom("#dialog-title")
.hasText(i18n("admin.user.delete_confirm_title"), "dialog has a title");
await click(".dialog-footer .btn-primary");

View File

@ -110,7 +110,7 @@ acceptance("New category preview", function (needs) {
.style.getPropertyValue("--category-badge-color")
.trim();
assert.equal(previewBadgeColor, "#0088CC");
assert.strictEqual(previewBadgeColor, "#0088CC");
await fillIn(".hex-input", "FF00FF");
@ -119,6 +119,6 @@ acceptance("New category preview", function (needs) {
.style.getPropertyValue("--category-badge-color")
.trim();
assert.equal(previewBadgeColor, "#FF00FF");
assert.strictEqual(previewBadgeColor, "#FF00FF");
});
});

View File

@ -147,10 +147,8 @@ acceptance("Composer - Image Preview", function (needs) {
test("Editing alt text (with enter key) for single image in preview updates alt text in composer", async function (assert) {
const scaleButtonContainer = ".scale-btn-container";
const readonlyAltText = ".alt-text";
const editAltTextButton = ".alt-text-edit-btn";
const altTextInput = ".alt-text-input";
const altTextEditOk = ".alt-text-edit-ok";
const altTextEditCancel = ".alt-text-edit-cancel";
@ -159,10 +157,10 @@ acceptance("Composer - Image Preview", function (needs) {
await click("#create-topic");
await fillIn(".d-editor-input", `![zorro|200x200](upload://zorro.png)`);
assert.equal(query(readonlyAltText).innerText, "zorro", "correct alt text");
assert.dom(readonlyAltText).isVisible("alt text is visible");
assert.dom(".alt-text").hasText("zorro", "correct alt text");
assert.dom(".alt-text").isVisible("alt text is visible");
assert.dom(editAltTextButton).isVisible("alt text edit button is visible");
assert.dom(altTextInput).isNotVisible("alt text input is hidden");
assert.dom(".alt-text-input").isNotVisible("alt text input is hidden");
assert.dom(altTextEditOk).isNotVisible("alt text edit ok button is hidden");
assert
.dom(altTextEditCancel)
@ -171,40 +169,32 @@ acceptance("Composer - Image Preview", function (needs) {
await click(editAltTextButton);
assert.dom(scaleButtonContainer).isNotVisible("scale buttons are hidden");
assert.dom(readonlyAltText).isNotVisible("alt text is hidden");
assert.dom(".alt-text").isNotVisible("alt text is hidden");
assert
.dom(editAltTextButton)
.isNotVisible("alt text edit button is hidden");
assert.dom(altTextInput).isVisible("alt text input is visible");
assert.dom(".alt-text-input").isVisible("alt text input is visible");
assert.dom(altTextEditOk).isVisible("alt text edit ok button is visible");
assert.dom(altTextEditCancel).isVisible("alt text edit cancel is hidden");
assert.equal(
query(altTextInput).value,
"zorro",
"correct alt text in input"
);
assert
.dom(".alt-text-input")
.hasValue("zorro", "correct alt text in input");
await triggerKeyEvent(altTextInput, "keypress", "[");
await triggerKeyEvent(altTextInput, "keypress", "]");
assert.equal(query(altTextInput).value, "zorro", "does not input [ ] keys");
await triggerKeyEvent(".alt-text-input", "keypress", "[");
await triggerKeyEvent(".alt-text-input", "keypress", "]");
assert.dom(".alt-text-input").hasValue("zorro", "does not input [ ] keys");
await fillIn(altTextInput, "steak");
await triggerKeyEvent(altTextInput, "keypress", 13);
await fillIn(".alt-text-input", "steak");
await triggerKeyEvent(".alt-text-input", "keypress", 13);
assert.equal(
query(".d-editor-input").value,
"![steak|200x200](upload://zorro.png)",
"alt text updated"
);
assert.equal(
query(readonlyAltText).innerText,
"steak",
"shows the alt text"
);
assert
.dom(".d-editor-input")
.hasValue("![steak|200x200](upload://zorro.png)", "alt text updated");
assert.dom(".alt-text").hasText("steak", "shows the alt text");
assert.dom(editAltTextButton).isVisible("alt text edit button is visible");
assert.dom(scaleButtonContainer).isVisible("scale buttons are visible");
assert.dom(editAltTextButton).isVisible("alt text edit button is visible");
assert.dom(altTextInput).isNotVisible("alt text input is hidden");
assert.dom(".alt-text-input").isNotVisible("alt text input is hidden");
assert.dom(altTextEditOk).isNotVisible("alt text edit ok button is hidden");
assert
.dom(altTextEditCancel)
@ -213,7 +203,6 @@ acceptance("Composer - Image Preview", function (needs) {
test("Editing alt text (with check button) in preview updates alt text in composer", async function (assert) {
const scaleButtonContainer = ".scale-btn-container";
const readonlyAltText = ".alt-text";
const editAltTextButton = ".alt-text-edit-btn";
const altTextInput = ".alt-text-input";
@ -230,16 +219,10 @@ acceptance("Composer - Image Preview", function (needs) {
await fillIn(altTextInput, "steak");
await click(altTextEditOk);
assert.equal(
query(".d-editor-input").value,
"![steak|200x200](upload://zorro.png)",
"alt text updated"
);
assert.equal(
query(readonlyAltText).innerText,
"steak",
"shows the alt text"
);
assert
.dom(".d-editor-input")
.hasValue("![steak|200x200](upload://zorro.png)", "alt text updated");
assert.dom(".alt-text").hasText("steak", "shows the alt text");
assert.dom(editAltTextButton).isVisible("alt text edit button is visible");
assert.dom(scaleButtonContainer).isVisible("scale buttons are visible");
@ -254,7 +237,6 @@ acceptance("Composer - Image Preview", function (needs) {
test("Cancel alt text edit in preview does not update alt text in composer", async function (assert) {
const scaleButtonContainer = ".scale-btn-container";
const readonlyAltText = ".alt-text";
const editAltTextButton = ".alt-text-edit-btn";
const altTextInput = ".alt-text-input";
@ -271,16 +253,10 @@ acceptance("Composer - Image Preview", function (needs) {
await fillIn(altTextInput, "steak");
await click(altTextEditCancel);
assert.equal(
query(".d-editor-input").value,
"![zorro|200x200](upload://zorro.png)",
"alt text not updated"
);
assert.equal(
query(readonlyAltText).innerText,
"zorro",
"shows the unedited alt text"
);
assert
.dom(".d-editor-input")
.hasValue("![zorro|200x200](upload://zorro.png)", "alt text not updated");
assert.dom(".alt-text").hasText("zorro", "shows the unedited alt text");
assert.dom(editAltTextButton).isVisible("alt text edit button is visible");
assert.dom(scaleButtonContainer).isVisible("scale buttons are visible");
@ -308,15 +284,15 @@ acceptance("Composer - Image Preview", function (needs) {
await fillIn(altTextInput, "tomtom");
await triggerKeyEvent(altTextInput, "keypress", "Enter");
assert.equal(
query(".d-editor-input").value,
`![tomtom|200x200](upload://zorro.png) ![not-zorro|200x200](upload://not-zorro.png)`,
"the correct image's alt text updated"
);
assert
.dom(".d-editor-input")
.hasValue(
`![tomtom|200x200](upload://zorro.png) ![not-zorro|200x200](upload://not-zorro.png)`,
"the correct image's alt text updated"
);
});
test("Deleting alt text for image empties alt text in composer and allows further modification", async function (assert) {
const altText = ".alt-text";
const editAltTextButton = ".alt-text-edit-btn";
const altTextInput = ".alt-text-input";
@ -330,23 +306,19 @@ acceptance("Composer - Image Preview", function (needs) {
await fillIn(altTextInput, "");
await triggerKeyEvent(altTextInput, "keypress", "Enter");
assert.equal(
query(".d-editor-input").value,
"![|200x200](upload://zorro.png)",
"alt text updated"
);
assert.equal(query(altText).innerText, "", "shows the alt text");
assert
.dom(".d-editor-input")
.hasValue("![|200x200](upload://zorro.png)", "alt text updated");
assert.dom(".alt-text").hasText("", "shows the alt text");
await click(editAltTextButton);
await fillIn(altTextInput, "tomtom");
await triggerKeyEvent(altTextInput, "keypress", "Enter");
assert.equal(
query(".d-editor-input").value,
"![tomtom|200x200](upload://zorro.png)",
"alt text updated"
);
assert
.dom(".d-editor-input")
.hasValue("![tomtom|200x200](upload://zorro.png)", "alt text updated");
});
test("Image delete button", async function (assert) {
@ -371,17 +343,14 @@ acceptance("Composer - Image Preview", function (needs) {
"Image should be removed from the editor"
);
assert.equal(
assert.false(
query(".d-editor-input").value.includes("image_example_0"),
false,
"It shouldn't have the first image"
"does not have the first image"
);
assert.equal(
query(".d-editor-input").value.includes("image_example_1"),
true,
"It should have the second image"
);
assert
.dom(".d-editor-input")
.hasValue(/image_example_1/, "has the second image");
});
});

View File

@ -436,8 +436,8 @@ acceptance("Uppy Composer Attachment - Upload Placeholder", function (needs) {
// after uploading we have this in the textarea:
// "The image:\n![avatar.PNG|690x320](upload://yoj8pf9DdIeHRRULyw7i57GAYdz.jpeg)\ntext after image"
// cursor should be just before "text after image":
assert.equal(input.selectionStart, 76);
assert.equal(input.selectionEnd, 76);
assert.strictEqual(input.selectionStart, 76);
assert.strictEqual(input.selectionEnd, 76);
done();
});

View File

@ -29,7 +29,7 @@ acceptance("Header API - anonymous", function () {
await visit("/");
const testButton = document.querySelector(".test-button");
const authButtons = document.querySelector(".auth-buttons");
assert.equal(
assert.strictEqual(
testButton.compareDocumentPosition(authButtons),
Node.DOCUMENT_POSITION_FOLLOWING,
"Test button is positioned before auth-buttons"
@ -57,7 +57,7 @@ acceptance("Header API - anonymous", function () {
await visit("/");
const testIcon = document.querySelector(".test-icon");
const search = document.querySelector(".search-dropdown");
assert.equal(
assert.strictEqual(
testIcon.compareDocumentPosition(search),
Node.DOCUMENT_POSITION_FOLLOWING,
"Test icon is positioned before search icon"
@ -95,7 +95,7 @@ acceptance("Glimmer Header API - authenticated", function (needs) {
await visit("/");
const test1 = document.querySelector(".test1-button");
const test2 = document.querySelector(".test2-button");
assert.equal(
assert.strictEqual(
test2.compareDocumentPosition(test1),
Node.DOCUMENT_POSITION_FOLLOWING,
"Test2 button is positioned before Test1 button"
@ -129,7 +129,7 @@ acceptance("Glimmer Header API - authenticated", function (needs) {
await visit("/");
const test1 = document.querySelector(".test1-icon");
const test2 = document.querySelector(".test2-icon");
assert.equal(
assert.strictEqual(
test2.compareDocumentPosition(test1),
Node.DOCUMENT_POSITION_FOLLOWING,
"Test2 icon is positioned before Test1 icon"

View File

@ -1,7 +1,7 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
import topicFixtures from "discourse/tests/fixtures/topic";
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import { cloneJSON } from "discourse-common/lib/object";
acceptance("Lightbox", function (needs) {
@ -30,10 +30,9 @@ acceptance("Lightbox", function (needs) {
await visit("/t/internationalization-localization/280");
await click(".lightbox");
assert.equal(
query(".mfp-title").textContent,
"image · 1500×842 234 KB · download · original image"
);
assert
.dom(".mfp-title")
.hasText("image · 1500×842 234 KB · download · original image");
assert
.dom(".image-source-link:nth-child(1)")

View File

@ -1,6 +1,6 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
acceptance("Post - History", function (needs) {
needs.user();
@ -52,8 +52,8 @@ acceptance("Post - History", function (needs) {
await click("article[data-post-id='419'] .edits button");
assert.dom(".discourse-tag").exists({ count: 4 });
assert.dom(".discourse-tag.diff-del").exists({ count: 1 });
assert.equal(query(".discourse-tag.diff-del").textContent, "tag1");
assert.dom(".discourse-tag.diff-del").hasText("tag1");
assert.dom(".discourse-tag.diff-ins").exists({ count: 1 });
assert.equal(query(".discourse-tag.diff-ins").textContent, "tag3");
assert.dom(".discourse-tag.diff-ins").hasText("tag3");
});
});

View File

@ -185,8 +185,8 @@ acceptance("Review", function (needs) {
let tags = selectKit(`${topic} .payload-tags .mini-tag-chooser`);
requests = [];
await tags.expand();
assert.equal(requests.length, 1);
assert.equal(requests[0].queryParams.categoryId, "6");
assert.strictEqual(requests.length, 1);
assert.strictEqual(requests[0].queryParams.categoryId, "6");
await tags.fillInFilter("monkey");
await tags.selectRowByValue("monkey");

View File

@ -1,7 +1,7 @@
import { click, currentURL, fillIn, visit } from "@ember/test-helpers";
import { test } from "qunit";
import { SECOND_FACTOR_METHODS } from "discourse/models/user";
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
const { TOTP, BACKUP_CODE, SECURITY_KEY } = SECOND_FACTOR_METHODS;
@ -93,11 +93,12 @@ acceptance("Second Factor Auth Page", function (needs) {
test("when challenge data fails to load", async function (assert) {
await visit("/session/2fa?nonce=failed");
assert.equal(
query(".alert-error").textContent,
"could not find an active challenge in your session",
"load error message is shown"
);
assert
.dom(".alert-error")
.hasText(
"could not find an active challenge in your session",
"load error message is shown"
);
});
test("default 2FA method", async function (assert) {
@ -241,34 +242,36 @@ acceptance("Second Factor Auth Page", function (needs) {
test("2FA action description", async function (assert) {
await visit("/session/2fa?nonce=ok111111");
assert.equal(
query(".action-description").textContent.trim(),
"This is an additional description that can be customized per action",
"action description is rendered on the page"
);
assert
.dom(".action-description")
.hasText(
"This is an additional description that can be customized per action",
"action description is rendered on the page"
);
});
test("error when submitting 2FA form", async function (assert) {
await visit("/session/2fa?nonce=ok110111");
await fillIn("form.totp-token .second-factor-token-input", WRONG_TOTP);
await click('form.totp-token .btn-primary[type="submit"]');
assert.equal(
query(".alert-error").textContent.trim(),
"invalid token man",
"error message from the server is displayed"
);
assert
.dom(".alert-error")
.hasText(
"invalid token man",
"error message from the server is displayed"
);
});
test("successful 2FA form submit", async function (assert) {
await visit("/session/2fa?nonce=ok110111");
await fillIn("form.totp-token .second-factor-token-input", "323421");
await click('form.totp-token .btn-primary[type="submit"]');
assert.equal(
assert.strictEqual(
currentURL(),
"/",
"user has been redirected to the redirect_url"
);
assert.equal(callbackCount, 1, "callback request has been performed");
assert.strictEqual(callbackCount, 1, "callback request has been performed");
});
test("sidebar is disabled on 2FA route", async function (assert) {

View File

@ -5,7 +5,6 @@ import {
acceptance,
publishToMessageBus,
query,
queryAll,
} from "discourse/tests/helpers/qunit-helpers";
import { cloneJSON } from "discourse-common/lib/object";
@ -32,11 +31,9 @@ acceptance("Topic - User Status", function (needs) {
this.siteSettings.enable_user_status = true;
await visit("/t/-/299/1");
assert.equal(
queryAll(".topic-post .user-status-message").length,
3,
"all posts has user status"
);
assert
.dom(".topic-post .user-status-message")
.exists({ count: 3 }, "all posts has user status");
});
test("shows user status next to avatar on posts when displaying names on posts is enabled", async function (assert) {
@ -45,11 +42,9 @@ acceptance("Topic - User Status", function (needs) {
await visit("/t/-/299/1");
assert.equal(
queryAll(".topic-post .user-status-message").length,
3,
"all posts has user status"
);
assert
.dom(".topic-post .user-status-message")
.exists({ count: 3 }, "all posts has user status");
});
});
@ -74,11 +69,9 @@ acceptance("Topic - User Status - live updates", function (needs) {
this.siteSettings.enable_user_status = true;
await visit("/t/-/299/1");
assert.equal(
queryAll(".topic-post .user-status-message").length,
3,
"all posts has user status"
);
assert
.dom(".topic-post .user-status-message")
.exists({ count: 3 }, "all posts has user status");
assert.ok(
query(".topic-post .user-status-message .emoji").src.includes(
status.emoji
@ -89,11 +82,9 @@ acceptance("Topic - User Status - live updates", function (needs) {
const newStatus = { emoji: "surfing_man", description: "surfing" };
await publishToMessageBus(`/user-status`, { [userId]: newStatus });
assert.equal(
queryAll(".topic-post .user-status-message").length,
3,
"all posts has user status"
);
assert
.dom(".topic-post .user-status-message")
.exists({ count: 3 }, "all posts has user status");
assert.ok(
query(".topic-post .user-status-message .emoji").src.includes(
newStatus.emoji
@ -106,11 +97,9 @@ acceptance("Topic - User Status - live updates", function (needs) {
this.siteSettings.enable_user_status = true;
await visit("/t/-/299/1");
assert.equal(
queryAll(".topic-post .user-status-message").length,
3,
"all posts has user status"
);
assert
.dom(".topic-post .user-status-message")
.exists({ count: 3 }, "all posts has user status");
assert.ok(
query(".topic-post .user-status-message .emoji").src.includes(
status.emoji
@ -127,11 +116,9 @@ acceptance("Topic - User Status - live updates", function (needs) {
const newStatus = { emoji: "surfing_man", description: "surfing" };
await publishToMessageBus(`/user-status`, { [userId]: newStatus });
assert.equal(
queryAll(".topic-post .user-status-message").length,
3,
"all posts have user status"
);
assert
.dom(".topic-post .user-status-message")
.exists({ count: 3 }, "all posts have user status");
assert.ok(
query(".topic-post .user-status-message .emoji").src.includes(
newStatus.emoji

View File

@ -1,7 +1,7 @@
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
import { i18n } from "discourse-i18n";
import { acceptance, query } from "../helpers/qunit-helpers";
import { acceptance } from "../helpers/qunit-helpers";
acceptance("User Activity / All - empty state", function (needs) {
const currentUser = "eviltrout";
@ -18,17 +18,15 @@ acceptance("User Activity / All - empty state", function (needs) {
test("When looking at own activity page", async function (assert) {
await visit(`/u/${currentUser}/activity`);
assert.equal(
query("div.empty-state span.empty-state-title").innerText,
i18n("user_activity.no_activity_title")
);
assert
.dom("div.empty-state span.empty-state-title")
.hasText(i18n("user_activity.no_activity_title"));
});
test("When looking at another user's activity page", async function (assert) {
await visit(`/u/${anotherUser}/activity`);
assert.equal(
query("div.empty-state span.empty-state-title").innerText,
i18n("user_activity.no_activity_title")
); // the same title as when looking at own page
assert
.dom("div.empty-state span.empty-state-title")
.hasText(i18n("user_activity.no_activity_title")); // the same title as when looking at own page
});
});

View File

@ -1,7 +1,7 @@
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
import { i18n } from "discourse-i18n";
import { acceptance, query } from "../helpers/qunit-helpers";
import { acceptance } from "../helpers/qunit-helpers";
acceptance("User Activity / Likes - empty state", function (needs) {
const currentUser = "eviltrout";
@ -18,17 +18,17 @@ acceptance("User Activity / Likes - empty state", function (needs) {
test("When looking at own likes page", async function (assert) {
await visit(`/u/${currentUser}/activity/likes-given`);
assert.equal(
query("div.empty-state span.empty-state-title").innerText,
i18n("user_activity.no_likes_title")
);
assert
.dom("div.empty-state span.empty-state-title")
.hasText(i18n("user_activity.no_likes_title"));
});
test("When looking at another user's likes page", async function (assert) {
await visit(`/u/${anotherUser}/activity/likes-given`);
assert.equal(
query("div.empty-state span.empty-state-title").innerText,
i18n("user_activity.no_likes_title_others", { username: anotherUser })
);
assert
.dom("div.empty-state span.empty-state-title")
.hasText(
i18n("user_activity.no_likes_title_others", { username: anotherUser })
);
});
});

View File

@ -1,7 +1,7 @@
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
import { i18n } from "discourse-i18n";
import { acceptance, query } from "../helpers/qunit-helpers";
import { acceptance } from "../helpers/qunit-helpers";
acceptance("User Activity / Replies - empty state", function (needs) {
const currentUser = "eviltrout";
@ -19,17 +19,17 @@ acceptance("User Activity / Replies - empty state", function (needs) {
test("When looking at own replies page", async function (assert) {
await visit(`/u/${currentUser}/activity/replies`);
assert.equal(
query("div.empty-state span.empty-state-title").innerText,
i18n("user_activity.no_replies_title")
);
assert
.dom("div.empty-state span.empty-state-title")
.hasText(i18n("user_activity.no_replies_title"));
});
test("When looking at another user's replies page", async function (assert) {
await visit(`/u/${anotherUser}/activity/replies`);
assert.equal(
query("div.empty-state span.empty-state-title").innerText,
i18n("user_activity.no_replies_title_others", { username: anotherUser })
);
assert
.dom("div.empty-state span.empty-state-title")
.hasText(
i18n("user_activity.no_replies_title_others", { username: anotherUser })
);
});
});

View File

@ -2,7 +2,7 @@ import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
import { i18n } from "discourse-i18n";
import userFixtures from "../fixtures/user-fixtures";
import { acceptance, query, queryAll } from "../helpers/qunit-helpers";
import { acceptance, queryAll } from "../helpers/qunit-helpers";
acceptance("User Activity / Topics - bulk actions", function (needs) {
const currentUser = "eviltrout";
@ -58,17 +58,17 @@ acceptance("User Activity / Topics - empty state", function (needs) {
test("When looking at the own activity page", async function (assert) {
await visit(`/u/${currentUser}/activity/topics`);
assert.equal(
query("div.empty-state span.empty-state-title").innerText,
i18n("user_activity.no_topics_title")
);
assert
.dom("div.empty-state span.empty-state-title")
.hasText(i18n("user_activity.no_topics_title"));
});
test("When looking at another user's activity page", async function (assert) {
await visit(`/u/${anotherUser}/activity/topics`);
assert.equal(
query("div.empty-state span.empty-state-title").innerText,
i18n("user_activity.no_topics_title_others", { username: anotherUser })
);
assert
.dom("div.empty-state span.empty-state-title")
.hasText(
i18n("user_activity.no_topics_title_others", { username: anotherUser })
);
});
});

View File

@ -2,7 +2,6 @@ import { click, fillIn, visit } from "@ember/test-helpers";
import { test } from "qunit";
import {
acceptance,
query,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
@ -49,13 +48,9 @@ acceptance("User Profile - Account - User Status", function (needs) {
assert
.dom(`.pref-user-status .emoji[alt='${status.emoji}']`)
.exists("status emoji is correct");
assert.equal(
query(
`.pref-user-status .user-status-message-description`
).innerText.trim(),
status.description,
"status description is correct"
);
assert
.dom(`.pref-user-status .user-status-message-description`)
.hasText(status.description, "status description is correct");
});
test("doesn't show the pause notifications control group on the user status modal", async function (assert) {
@ -84,13 +79,9 @@ acceptance("User Profile - Account - User Status", function (needs) {
assert
.dom(`.pref-user-status .emoji[alt='${status.emoji}']`)
.exists("status emoji is correct");
assert.equal(
query(
`.pref-user-status .user-status-message-description`
).innerText.trim(),
status.description,
"status description is correct"
);
assert
.dom(`.pref-user-status .user-status-message-description`)
.hasText(status.description, "status description is correct");
});
test("the status modal updates status", async function (assert) {
@ -106,13 +97,9 @@ acceptance("User Profile - Account - User Status", function (needs) {
assert
.dom(`.pref-user-status .emoji[alt='${newStatus.emoji}']`)
.exists("status emoji is correct");
assert.equal(
query(
`.pref-user-status .user-status-message-description`
).innerText.trim(),
newStatus.description,
"status description is correct"
);
assert
.dom(`.pref-user-status .user-status-message-description`)
.hasText(newStatus.description, "status description is correct");
});
test("the status modal clears status", async function (assert) {

View File

@ -1,7 +1,7 @@
import { click, currentURL, visit } from "@ember/test-helpers";
import { test } from "qunit";
import userFixtures from "discourse/tests/fixtures/user-fixtures";
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
@ -106,7 +106,7 @@ acceptance("User Profile - Summary - Stats", function (needs) {
test("Summary Read Times", async function (assert) {
await visit("/u/eviltrout/summary");
assert.equal(query(".stats-time-read span").textContent.trim(), "1d");
assert.dom(".stats-time-read span").hasText("1d");
assert
.dom(".stats-time-read span")
.hasAttribute(
@ -114,7 +114,7 @@ acceptance("User Profile - Summary - Stats", function (needs) {
i18n("user.summary.time_read_title", { duration: "1 day" })
);
assert.equal(query(".stats-recent-read span").textContent.trim(), "17m");
assert.dom(".stats-recent-read span").hasText("17m");
assert
.dom(".stats-recent-read span")
.hasAttribute(
@ -168,11 +168,9 @@ acceptance("User Profile - Summary - Admin", function (needs) {
await visit("/u/charlie/summary");
await click(".btn-delete-user");
assert.equal(
query("#dialog-title").textContent,
i18n("admin.user.delete_confirm_title"),
"dialog has a title"
);
assert
.dom("#dialog-title")
.hasText(i18n("admin.user.delete_confirm_title"), "dialog has a title");
await click(".dialog-footer .btn-danger");
assert.ok(deleteAndBlock, "second button also block user");

View File

@ -3,7 +3,6 @@ import { test } from "qunit";
import {
acceptance,
publishToMessageBus,
query,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
@ -58,25 +57,25 @@ acceptance("User Status", function (needs) {
await click(".header-dropdown-toggle.current-user button");
await click("#user-menu-button-profile");
assert.equal(
query(
"div.quick-access-panel li.set-user-status span.item-label"
).textContent.trim(),
userStatus,
"shows user status description on the menu"
);
assert
.dom("div.quick-access-panel li.set-user-status span.item-label")
.hasText(userStatus, "shows user status description on the menu");
assert.equal(
query("div.quick-access-panel li.set-user-status img.emoji").alt,
`${userStatusEmoji}`,
"shows user status emoji on the menu"
);
assert
.dom("div.quick-access-panel li.set-user-status img.emoji")
.hasAttribute(
"alt",
`${userStatusEmoji}`,
"shows user status emoji on the menu"
);
assert.equal(
query(".header-dropdown-toggle .user-status-background img.emoji").alt,
`:${userStatusEmoji}:`,
"shows user status emoji on the user avatar in the header"
);
assert
.dom(".header-dropdown-toggle .user-status-background img.emoji")
.hasAttribute(
"alt",
`:${userStatusEmoji}:`,
"shows user status emoji on the user avatar in the header"
);
});
test("shows user status on the user status modal", async function (assert) {
@ -96,21 +95,15 @@ acceptance("User Status", function (needs) {
assert
.dom(".btn-emoji img.emoji")
.hasAttribute("title", userStatusEmoji, "status emoji is shown");
assert.equal(
query(".user-status-description").value,
userStatus,
"status description is shown"
);
assert.equal(
query(".date-picker").value,
"2100-02-01",
"date of auto removing of status is shown"
);
assert.equal(
query(".time-input").value,
"09:35",
"time of auto removing of status is shown"
);
assert
.dom(".user-status-description")
.hasValue(userStatus, "status description is shown");
assert
.dom(".date-picker")
.hasValue("2100-02-01", "date of auto removing of status is shown");
assert
.dom(".time-input")
.hasValue("09:35", "time of auto removing of status is shown");
});
test("emoji picking", async function (assert) {
@ -144,27 +137,27 @@ acceptance("User Status", function (needs) {
.exists("chosen status emoji is shown");
await click(".btn-primary"); // save
assert.equal(
query(".header-dropdown-toggle .user-status-background img.emoji").alt,
`:${userStatusEmoji}:`,
"shows user status emoji on the user avatar in the header"
);
assert
.dom(".header-dropdown-toggle .user-status-background img.emoji")
.hasAttribute(
"alt",
`:${userStatusEmoji}:`,
"shows user status emoji on the user avatar in the header"
);
await click(".header-dropdown-toggle.current-user button");
await click("#user-menu-button-profile");
assert.equal(
query(
"div.quick-access-panel li.set-user-status span.item-label"
).textContent.trim(),
userStatus,
"shows user status description on the menu"
);
assert
.dom("div.quick-access-panel li.set-user-status span.item-label")
.hasText(userStatus, "shows user status description on the menu");
assert.equal(
query("div.quick-access-panel li.set-user-status img.emoji").alt,
`${userStatusEmoji}`,
"shows user status emoji on the menu"
);
assert
.dom("div.quick-access-panel li.set-user-status img.emoji")
.hasAttribute(
"alt",
`${userStatusEmoji}`,
"shows user status emoji on the menu"
);
});
test("updating user status", async function (assert) {
@ -181,18 +174,16 @@ acceptance("User Status", function (needs) {
await click(".header-dropdown-toggle.current-user button");
await click("#user-menu-button-profile");
assert.equal(
query(
"div.quick-access-panel li.set-user-status span.item-label"
).textContent.trim(),
updatedStatus,
"shows user status description on the menu"
);
assert.equal(
query("div.quick-access-panel li.set-user-status img.emoji").alt,
`${userStatusEmoji}`,
"shows user status emoji on the menu"
);
assert
.dom("div.quick-access-panel li.set-user-status span.item-label")
.hasText(updatedStatus, "shows user status description on the menu");
assert
.dom("div.quick-access-panel li.set-user-status img.emoji")
.hasAttribute(
"alt",
`${userStatusEmoji}`,
"shows user status emoji on the menu"
);
});
test("clearing user status", async function (assert) {
@ -230,13 +221,9 @@ acceptance("User Status", function (needs) {
await click(".header-dropdown-toggle.current-user button");
await click("#user-menu-button-profile");
assert.equal(
query(
"div.quick-access-panel li.set-user-status span.relative-date"
).textContent.trim(),
"1h",
"shows user status timer on the menu"
);
assert
.dom("div.quick-access-panel li.set-user-status span.relative-date")
.hasText("1h", "shows user status timer on the menu");
});
test("it's impossible to set status without description", async function (assert) {
@ -283,11 +270,9 @@ acceptance("User Status", function (needs) {
userStatusEmoji,
"the actual status emoji is shown"
);
assert.equal(
query(".user-status-description").value,
userStatus,
"the actual status description is shown"
);
assert
.dom(".user-status-description")
.hasValue(userStatus, "the actual status description is shown");
});
test("shows the trash button when editing status that was set before", async function (assert) {
@ -323,11 +308,9 @@ acceptance("User Status", function (needs) {
await openUserStatusModal();
assert.dom(".d-icon-discourse-emojis").exists("empty status icon is shown");
assert.equal(
query(".user-status-description").value,
"",
"no status description is shown"
);
assert
.dom(".user-status-description")
.hasValue("", "no status description is shown");
});
});
@ -511,23 +494,25 @@ acceptance("User Status - user menu", function (needs) {
await click(".header-dropdown-toggle.current-user button");
await click("#user-menu-button-profile");
assert.equal(
query("li.set-user-status .item-label").textContent.trim(),
userStatus,
"shows user status description on the menu"
);
assert
.dom("li.set-user-status .item-label")
.hasText(userStatus, "shows user status description on the menu");
assert.equal(
query("li.set-user-status .emoji").alt,
`${userStatusEmoji}`,
"shows user status emoji on the menu"
);
assert
.dom("li.set-user-status .emoji")
.hasAttribute(
"alt",
`${userStatusEmoji}`,
"shows user status emoji on the menu"
);
assert.equal(
query(".header-dropdown-toggle .user-status-background img.emoji").alt,
`:${userStatusEmoji}:`,
"shows user status emoji on the user avatar in the header"
);
assert
.dom(".header-dropdown-toggle .user-status-background img.emoji")
.hasAttribute(
"alt",
`:${userStatusEmoji}:`,
"shows user status emoji on the user avatar in the header"
);
});
test("user menu gets closed when the user status modal is opened", async function (assert) {

View File

@ -43,15 +43,15 @@ module("Integration | Component | date-time-input-range", function (hooks) {
const toTimeSelectKit = selectKit(".to .d-time-input .select-kit");
await toTimeSelectKit.expand();
let rows = toTimeSelectKit.rows();
assert.equal(rows[0].dataset.name, "14:45");
assert.equal(rows[rows.length - 1].dataset.name, "23:45");
assert.dom(rows[0]).hasAttribute("data-name", "14:45");
assert.dom(rows[rows.length - 1]).hasAttribute("data-name", "23:45");
await toTimeSelectKit.collapse();
await fillIn(toDateInput(), "2019-01-30");
await toTimeSelectKit.expand();
rows = toTimeSelectKit.rows();
assert.equal(rows[0].dataset.name, "00:00");
assert.equal(rows[rows.length - 1].dataset.name, "23:45");
assert.dom(rows[0]).hasAttribute("data-name", "00:00");
assert.dom(rows[rows.length - 1]).hasAttribute("data-name", "23:45");
});
test("setting relativeDate results in correct intervals (4x 15m then 30m)", async function (assert) {
@ -65,8 +65,8 @@ module("Integration | Component | date-time-input-range", function (hooks) {
const toTimeSelectKit = selectKit(".to .d-time-input .select-kit");
await toTimeSelectKit.expand();
let rows = toTimeSelectKit.rows();
assert.equal(rows[4].dataset.name, "15:45");
assert.equal(rows[5].dataset.name, "16:15");
assert.dom(rows[4]).hasAttribute("data-name", "15:45");
assert.dom(rows[5]).hasAttribute("data-name", "16:15");
});
test("timezone support", async function (assert) {
@ -91,6 +91,9 @@ module("Integration | Component | date-time-input-range", function (hooks) {
await toTimeSelectKit.expand();
await toTimeSelectKit.selectRowByName("19:15");
assert.equal(this.state.to.toString(), "Tue Jan 29 2019 19:15:00 GMT+0100");
assert.strictEqual(
this.state.to.toString(),
"Tue Jan 29 2019 19:15:00 GMT+0100"
);
});
});

View File

@ -80,11 +80,11 @@ module("Unit | Lib | DAG", function (hooks) {
},
});
dag.add("key1", "value1");
assert.equal(called, 1, "the callback was called");
assert.strictEqual(called, 1, "the callback was called");
// it doesn't call the callback when the item already exists
dag.add("key1", "value1");
assert.equal(called, 1, "the callback was not called");
assert.strictEqual(called, 1, "the callback was not called");
});
test("should remove an item from the map", function (assert) {
@ -115,11 +115,11 @@ module("Unit | Lib | DAG", function (hooks) {
});
dag.add("key1", "value1");
dag.delete("key1");
assert.equal(called, 1, "the callback was called");
assert.strictEqual(called, 1, "the callback was called");
// it doesn't call the callback when the item doesn't exist
dag.delete("key1");
assert.equal(called, 1, "the callback was not called");
assert.strictEqual(called, 1, "the callback was not called");
});
test("should replace the value from an item in the map", function (assert) {
@ -162,11 +162,11 @@ module("Unit | Lib | DAG", function (hooks) {
});
dag.add("key1", "value1");
dag.replace("key1", "replaced-value1");
assert.equal(called, 1, "the callback was called");
assert.strictEqual(called, 1, "the callback was called");
// it doesn't call the callback when the item doesn't exist
dag.replace("key2", "replaced-value2");
assert.equal(called, 1, "the callback was not called");
assert.strictEqual(called, 1, "the callback was not called");
});
test("should reposition an item in the map", function (assert) {
@ -204,11 +204,11 @@ module("Unit | Lib | DAG", function (hooks) {
});
dag.add("key1", "value1");
dag.reposition("key1", { before: "key2" });
assert.equal(called, 1, "the callback was called");
assert.strictEqual(called, 1, "the callback was called");
// it doesn't call the callback when the item doesn't exist
dag.reposition("key2", { before: "key1" });
assert.equal(called, 1, "the callback was not called");
assert.strictEqual(called, 1, "the callback was not called");
});
test("should return the entries in the map", function (assert) {
@ -222,14 +222,18 @@ module("Unit | Lib | DAG", function (hooks) {
const dagEntries = dag.entries();
entries.forEach((entry, index) => {
assert.equal(dagEntries[index][0], entry[0], "the key is correct");
assert.equal(dagEntries[index][1], entry[1], "the value is correct");
assert.equal(
assert.strictEqual(dagEntries[index][0], entry[0], "the key is correct");
assert.strictEqual(
dagEntries[index][1],
entry[1],
"the value is correct"
);
assert.strictEqual(
dagEntries[index][2]["before"],
entry[2]["before"],
"the before position is correct"
);
assert.equal(
assert.strictEqual(
dagEntries[index][2]["after"],
entry[2]["after"],
"the after position is correct"