mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: Convert all uses of exists
to qunit-dom (#29667)
This commit is contained in:
parent
b24c8a41ac
commit
de6d575d40
@ -1,6 +1,6 @@
|
||||
import { visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Admin - Search Log Term", function (needs) {
|
||||
needs.user();
|
||||
@ -8,8 +8,8 @@ acceptance("Admin - Search Log Term", function (needs) {
|
||||
test("show search log term details", async function (assert) {
|
||||
await visit("/admin/logs/search_logs/term?term=ruby");
|
||||
|
||||
assert.ok(exists(".search-logs-filter"), "has the search type filter");
|
||||
assert.ok(exists("canvas"), "has graph canvas");
|
||||
assert.ok(exists("div.header-search-results"), "has header search results");
|
||||
assert.dom(".search-logs-filter").exists("has the search type filter");
|
||||
assert.dom("canvas").exists("has graph canvas");
|
||||
assert.dom("div.header-search-results").exists("has header search results");
|
||||
});
|
||||
});
|
||||
|
@ -3,11 +3,7 @@ import { test } from "qunit";
|
||||
import { AUTO_GROUPS } from "discourse/lib/constants";
|
||||
import { withPluginApi } from "discourse/lib/plugin-api";
|
||||
import PreloadStore from "discourse/lib/preload-store";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, count } from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
acceptance("Admin Sidebar - Sections", function (needs) {
|
||||
@ -88,12 +84,11 @@ acceptance("Admin Sidebar - Sections", function (needs) {
|
||||
await visit("/admin");
|
||||
await click(".sidebar-toggle-all-sections");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='admin-plugins'] .sidebar-section-link-wrapper[data-list-item-name=\"admin_installed_plugins\"]"
|
||||
),
|
||||
"the admin plugin route is added to the plugins section"
|
||||
);
|
||||
)
|
||||
.exists("the admin plugin route is added to the plugins section");
|
||||
});
|
||||
|
||||
test("Visit reports page", async function (assert) {
|
||||
@ -188,12 +183,11 @@ acceptance("Admin Sidebar - Sections - Plugin API", function (needs) {
|
||||
test("additional valid links can be added to a section with the plugin API", async function (assert) {
|
||||
await visit("/admin");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='admin-root'] .sidebar-section-link-wrapper[data-list-item-name=\"admin_additional_root_test_section_link\"]"
|
||||
),
|
||||
"link is appended to the root section"
|
||||
);
|
||||
)
|
||||
.exists("link is appended to the root section");
|
||||
|
||||
assert
|
||||
.dom(
|
||||
@ -223,11 +217,11 @@ acceptance("Admin Sidebar - Sections - Plugin API", function (needs) {
|
||||
test("community section links are added to primary and secondary sections with the plugin API", async function (assert) {
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
"#sidebar-section-content-community .sidebar-section-link[data-link-name='primary']"
|
||||
)
|
||||
);
|
||||
.exists();
|
||||
assert
|
||||
.dom(
|
||||
"#sidebar-section-content-community .sidebar-section-link[data-link-name='secondary']"
|
||||
@ -241,11 +235,11 @@ acceptance("Admin Sidebar - Sections - Plugin API", function (needs) {
|
||||
".sidebar-more-section-links-details-content .sidebar-section-link[data-link-name='primary']"
|
||||
)
|
||||
.doesNotExist();
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-more-section-links-details-content .sidebar-section-link[data-link-name='secondary']"
|
||||
)
|
||||
);
|
||||
.exists();
|
||||
});
|
||||
});
|
||||
|
||||
@ -280,12 +274,11 @@ acceptance(
|
||||
test("valid links that are yet to be translated can be added to a section with the plugin API because of I18n fallback", async function (assert) {
|
||||
await visit("/admin");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='admin-root'] .sidebar-section-link-wrapper[data-list-item-name=\"admin_additional_root_test_section_link\"]"
|
||||
),
|
||||
"link is appended to the root section"
|
||||
);
|
||||
)
|
||||
.exists("link is appended to the root section");
|
||||
});
|
||||
}
|
||||
);
|
||||
|
@ -11,7 +11,6 @@ import pretender from "discourse/tests/helpers/create-pretender";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
queryAll,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
@ -48,7 +47,7 @@ acceptance("Admin - Site Settings", function (needs) {
|
||||
.dom(".row.setting.upload .image-uploader")
|
||||
.exists("image uploader is present");
|
||||
|
||||
assert.ok(exists(".row.setting.upload .undo"), "undo button is present");
|
||||
assert.dom(".row.setting.upload .undo").exists("undo button is present");
|
||||
});
|
||||
|
||||
test("links to staff action log", async function (assert) {
|
||||
@ -71,7 +70,9 @@ acceptance("Admin - Site Settings", function (needs) {
|
||||
1,
|
||||
"filter returns 1 site setting"
|
||||
);
|
||||
assert.ok(!exists(".row.setting.overridden"), "setting isn't overridden");
|
||||
assert
|
||||
.dom(".row.setting.overridden")
|
||||
.doesNotExist("setting isn't overridden");
|
||||
|
||||
await fillIn(".input-setting-string", "Test");
|
||||
await click("button.cancel");
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Admin - Users Badges", function (needs) {
|
||||
needs.user();
|
||||
@ -8,6 +8,6 @@ acceptance("Admin - Users Badges", function (needs) {
|
||||
test("lists badges", async function (assert) {
|
||||
await visit("/admin/users/1/eviltrout/badges");
|
||||
|
||||
assert.ok(exists(`span[data-badge-name="Badge 8"]`));
|
||||
assert.dom(`span[data-badge-name="Badge 8"]`).exists();
|
||||
});
|
||||
});
|
||||
|
@ -1,10 +1,6 @@
|
||||
import { click, fillIn, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
acceptance("Admin - Users List", function (needs) {
|
||||
@ -14,7 +10,9 @@ acceptance("Admin - Users List", function (needs) {
|
||||
await visit("/admin/users/list/active");
|
||||
|
||||
assert.dom(".users-list .user").exists();
|
||||
assert.ok(!exists(".user:nth-of-type(1) .email small"), "escapes email");
|
||||
assert
|
||||
.dom(".user:nth-of-type(1) .email small")
|
||||
.doesNotExist("escapes email");
|
||||
});
|
||||
|
||||
test("searching users with no matches", async function (assert) {
|
||||
|
@ -2,11 +2,7 @@ import { visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import PreloadStore from "discourse/lib/preload-store";
|
||||
import discoveryFixtures from "discourse/tests/fixtures/discovery-fixtures";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { cloneJSON } from "discourse-common/lib/object";
|
||||
|
||||
acceptance("Categories - 'categories_only'", function (needs) {
|
||||
@ -80,20 +76,17 @@ acceptance(
|
||||
});
|
||||
test("basic functionality", async function (assert) {
|
||||
await visit("/categories");
|
||||
assert.ok(
|
||||
exists("table.subcategory-list.with-topics thead h3 .category-name"),
|
||||
"shows heading for top-level category"
|
||||
);
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom("table.subcategory-list.with-topics thead h3 .category-name")
|
||||
.exists("shows heading for top-level category");
|
||||
assert
|
||||
.dom(
|
||||
"table.subcategory-list.with-topics tr[data-category-id='26'] h3 .category-name"
|
||||
),
|
||||
"shows table row for subcategories"
|
||||
);
|
||||
assert.ok(
|
||||
exists("table.category-list.with-topics div[data-topic-id='11994']"),
|
||||
"shows a featured topic"
|
||||
);
|
||||
)
|
||||
.exists("shows table row for subcategories");
|
||||
assert
|
||||
.dom("table.category-list.with-topics div[data-topic-id='11994']")
|
||||
.exists("shows a featured topic");
|
||||
});
|
||||
}
|
||||
);
|
||||
@ -107,20 +100,17 @@ acceptance(
|
||||
});
|
||||
test("basic functionality", async function (assert) {
|
||||
await visit("/categories");
|
||||
assert.ok(
|
||||
exists("div.subcategory-list.with-topics h3 .category-name"),
|
||||
"shows heading for top-level category"
|
||||
);
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom("div.subcategory-list.with-topics h3 .category-name")
|
||||
.exists("shows heading for top-level category");
|
||||
assert
|
||||
.dom(
|
||||
"div.subcategory-list.with-topics div[data-category-id='26'] h3 .category-name"
|
||||
),
|
||||
"shows element for subcategories"
|
||||
);
|
||||
assert.ok(
|
||||
exists("div.category-list.with-topics a[data-topic-id='11994']"),
|
||||
"shows a featured topic"
|
||||
);
|
||||
)
|
||||
.exists("shows element for subcategories");
|
||||
assert
|
||||
.dom("div.category-list.with-topics a[data-topic-id='11994']")
|
||||
.exists("shows a featured topic");
|
||||
});
|
||||
}
|
||||
);
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
query,
|
||||
queryAll,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
@ -76,7 +75,9 @@ acceptance("Category Edit - Security", function (needs) {
|
||||
await visit("/c/bug/edit/security");
|
||||
await click(".row-body .remove-permission");
|
||||
|
||||
assert.ok(!exists(".row-body"), "removes the permission from the list");
|
||||
assert
|
||||
.dom(".row-body")
|
||||
.doesNotExist("removes the permission from the list");
|
||||
|
||||
await availableGroups.expand();
|
||||
await availableGroups.selectRowByValue("everyone");
|
||||
|
@ -2,7 +2,7 @@ import { click, currentURL, fillIn, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import sinon from "sinon";
|
||||
import DiscourseURL from "discourse/lib/url";
|
||||
import { acceptance, exists } 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";
|
||||
|
||||
@ -69,12 +69,9 @@ acceptance("Category New", function (needs) {
|
||||
|
||||
await click(".edit-category-nav .edit-category-tags a");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
".required-tag-group-row .select-kit-header[data-value='TagGroup1']"
|
||||
),
|
||||
"it shows saved required tag group"
|
||||
);
|
||||
assert
|
||||
.dom(".required-tag-group-row .select-kit-header[data-value='TagGroup1']")
|
||||
.exists("shows saved required tag group");
|
||||
|
||||
assert.dom(".edit-category-title h2").hasText(
|
||||
I18n.t("category.edit_dialog_title", {
|
||||
|
@ -6,11 +6,7 @@ import {
|
||||
waitUntil,
|
||||
} from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
import I18n from "discourse-i18n";
|
||||
import pretender, { response } from "../helpers/create-pretender";
|
||||
@ -40,10 +36,9 @@ acceptance("Composer - Messages", function (needs) {
|
||||
await visit("/u/charlie");
|
||||
await click("button.compose-pm");
|
||||
|
||||
assert.false(
|
||||
exists(".composer-popup"),
|
||||
"composer warning is not shown by default"
|
||||
);
|
||||
assert
|
||||
.dom(".composer-popup")
|
||||
.doesNotExist("composer warning is not shown by default");
|
||||
|
||||
await triggerKeyEvent(".d-editor-input", "keyup", "Space");
|
||||
|
||||
@ -95,10 +90,9 @@ acceptance("Composer - Messages - Cannot see group", function (needs) {
|
||||
test("Shows warning in composer if group hasn't been invited", async function (assert) {
|
||||
await visit("/t/130");
|
||||
await click("button.create");
|
||||
assert.false(
|
||||
exists(".composer-popup"),
|
||||
"composer warning is not shown by default"
|
||||
);
|
||||
assert
|
||||
.dom(".composer-popup")
|
||||
.doesNotExist("composer warning is not shown by default");
|
||||
|
||||
await fillIn(".d-editor-input", "Mention @staff");
|
||||
assert.dom(".composer-popup").exists("shows composer warning message");
|
||||
@ -115,10 +109,9 @@ acceptance("Composer - Messages - Cannot see group", function (needs) {
|
||||
test("Shows warning in composer if group hasn't been invited, but some members have access already", async function (assert) {
|
||||
await visit("/t/130");
|
||||
await click("button.create");
|
||||
assert.false(
|
||||
exists(".composer-popup"),
|
||||
"composer warning is not shown by default"
|
||||
);
|
||||
assert
|
||||
.dom(".composer-popup")
|
||||
.doesNotExist("composer warning is not shown by default");
|
||||
|
||||
await fillIn(".d-editor-input", "Mention @staff2");
|
||||
assert.dom(".composer-popup").exists("shows composer warning message");
|
||||
@ -229,10 +222,11 @@ acceptance("Composer - Messages - Private Messages", function (needs) {
|
||||
await fillIn("#reply-title", "Private message test title");
|
||||
await triggerKeyEvent(".d-editor-input", "keyup", "Space");
|
||||
|
||||
assert.false(
|
||||
exists(".composer-popup"),
|
||||
"composer warning is not shown if the target recipients are empty"
|
||||
);
|
||||
assert
|
||||
.dom(".composer-popup")
|
||||
.doesNotExist(
|
||||
"composer warning is not shown if the target recipients are empty"
|
||||
);
|
||||
|
||||
// filling the input with the username of the current user
|
||||
await privateMessageUsers.expand();
|
||||
@ -274,10 +268,11 @@ acceptance("Composer - Messages - Private Messages", function (needs) {
|
||||
await fillIn("#reply-title", "Private message test title");
|
||||
await triggerKeyEvent(".d-editor-input", "keyup", "Space");
|
||||
|
||||
assert.false(
|
||||
exists(".composer-popup"),
|
||||
"composer warning is not shown if the target recipients are empty"
|
||||
);
|
||||
assert
|
||||
.dom(".composer-popup")
|
||||
.doesNotExist(
|
||||
"composer warning is not shown if the target recipients are empty"
|
||||
);
|
||||
|
||||
// filling the input with the username of another user
|
||||
await privateMessageUsers.expand();
|
||||
@ -286,7 +281,7 @@ acceptance("Composer - Messages - Private Messages", function (needs) {
|
||||
await privateMessageUsers.collapse();
|
||||
|
||||
await triggerKeyEvent(".d-editor-input", "keyup", "Space");
|
||||
assert.false(exists(".composer-popup"), "do not show it for other user");
|
||||
assert.dom(".composer-popup").doesNotExist("do not show it for other user");
|
||||
|
||||
// filling the input with the username of the current user
|
||||
await privateMessageUsers.expand();
|
||||
@ -295,9 +290,10 @@ acceptance("Composer - Messages - Private Messages", function (needs) {
|
||||
await privateMessageUsers.collapse();
|
||||
|
||||
await triggerKeyEvent(".d-editor-input", "keyup", "Space");
|
||||
assert.false(
|
||||
exists(".composer-popup"),
|
||||
"do not show it when the current user is just one of the target recipients"
|
||||
);
|
||||
assert
|
||||
.dom(".composer-popup")
|
||||
.doesNotExist(
|
||||
"do not show it when the current user is just one of the target recipients"
|
||||
);
|
||||
});
|
||||
});
|
||||
|
@ -25,7 +25,6 @@ import pretender, { response } from "discourse/tests/helpers/create-pretender";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
invisible,
|
||||
metaModifier,
|
||||
query,
|
||||
@ -154,10 +153,10 @@ acceptance("Composer", function (needs) {
|
||||
|
||||
test("composer controls", async function (assert) {
|
||||
await visit("/");
|
||||
assert.ok(exists("#create-topic"), "the create button is visible");
|
||||
assert.dom("#create-topic").exists("the create button is visible");
|
||||
|
||||
await click("#create-topic");
|
||||
assert.ok(exists(".d-editor-input"), "the composer input is visible");
|
||||
assert.dom(".d-editor-input").exists("the composer input is visible");
|
||||
await focus(".title-input input");
|
||||
assert
|
||||
.dom(".title-input .popup-tip.good.hide")
|
||||
@ -222,10 +221,12 @@ acceptance("Composer", function (needs) {
|
||||
);
|
||||
|
||||
await click("#reply-control a.cancel");
|
||||
assert.ok(exists(".d-modal"), "it pops up a confirmation dialog");
|
||||
assert.dom(".d-modal").exists("pops up a confirmation dialog");
|
||||
|
||||
await click(".d-modal__footer .discard-draft");
|
||||
assert.ok(!exists(".d-modal__body"), "the confirmation can be cancelled");
|
||||
assert
|
||||
.dom(".d-modal__body")
|
||||
.doesNotExist("the confirmation can be cancelled");
|
||||
});
|
||||
|
||||
test("Create a topic with server side errors", async function (assert) {
|
||||
@ -238,11 +239,11 @@ acceptance("Composer", function (needs) {
|
||||
await fillIn("#reply-title", "this title triggers an error");
|
||||
await fillIn(".d-editor-input", "this is the *content* of a post");
|
||||
await click("#reply-control button.create");
|
||||
assert.ok(exists(".dialog-body"), "it pops up an error message");
|
||||
assert.dom(".dialog-body").exists("pops up an error message");
|
||||
|
||||
await click(".dialog-footer .btn-primary");
|
||||
assert.ok(!exists(".dialog-body"), "it dismisses the error");
|
||||
assert.ok(exists(".d-editor-input"), "the composer input is visible");
|
||||
assert.dom(".dialog-body").doesNotExist("dismisses the error");
|
||||
assert.dom(".d-editor-input").exists("the composer input is visible");
|
||||
});
|
||||
|
||||
test("Create a Topic", async function (assert) {
|
||||
@ -313,7 +314,7 @@ acceptance("Composer", function (needs) {
|
||||
.doesNotExist("the post is not in the DOM");
|
||||
|
||||
await click("#topic-footer-buttons .btn.create");
|
||||
assert.ok(exists(".d-editor-input"), "the composer input is visible");
|
||||
assert.dom(".d-editor-input").exists("the composer input is visible");
|
||||
assert
|
||||
.dom("#reply-title")
|
||||
.doesNotExist("there is no title since this is a reply");
|
||||
@ -460,7 +461,7 @@ acceptance("Composer", function (needs) {
|
||||
assert.dom(".pending-posts .reviewable-item").doesNotExist();
|
||||
|
||||
await click("#topic-footer-buttons .btn.create");
|
||||
assert.ok(exists(".d-editor-input"), "the composer input is visible");
|
||||
assert.dom(".d-editor-input").exists("the composer input is visible");
|
||||
assert
|
||||
.dom("#reply-title")
|
||||
.doesNotExist("there is no title since this is a reply");
|
||||
@ -496,7 +497,7 @@ acceptance("Composer", function (needs) {
|
||||
await fillIn(".d-editor-input", "This is the new text for the post");
|
||||
await fillIn("#reply-title", "This is the new text for the title");
|
||||
await click("#reply-control button.create");
|
||||
assert.ok(!exists(".d-editor-input"), "it closes the composer");
|
||||
assert.dom(".d-editor-input").doesNotExist("closes the composer");
|
||||
assert
|
||||
.dom(".topic-post:nth-of-type(1) .post-info.edits")
|
||||
.exists("it has the edits icon");
|
||||
@ -723,7 +724,7 @@ acceptance("Composer", function (needs) {
|
||||
);
|
||||
|
||||
await visit("/");
|
||||
assert.ok(exists("#create-topic"), "the create topic button is visible");
|
||||
assert.dom("#create-topic").exists("the create topic button is visible");
|
||||
|
||||
await click("#create-topic");
|
||||
assert
|
||||
@ -862,12 +863,9 @@ acceptance("Composer", function (needs) {
|
||||
|
||||
await fillIn(".d-editor-input", longText);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
'.action-title a[href="/t/internationalization-localization/280"]'
|
||||
),
|
||||
"the mode should be: reply to post"
|
||||
);
|
||||
assert
|
||||
.dom('.action-title a[href="/t/internationalization-localization/280"]')
|
||||
.exists("the mode should be: reply to post");
|
||||
|
||||
await click("article#post_3 button.reply");
|
||||
|
||||
@ -875,19 +873,16 @@ acceptance("Composer", function (needs) {
|
||||
await composerActions.expand();
|
||||
await composerActions.selectRowByValue("reply_as_new_topic");
|
||||
|
||||
assert.ok(!exists(".d-modal__body"), "abandon popup shouldn't come");
|
||||
assert.dom(".d-modal__body").doesNotExist("abandon popup shouldn't come");
|
||||
|
||||
assert.ok(
|
||||
query(".d-editor-input").value.includes(longText),
|
||||
"entered text should still be there"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!exists(
|
||||
'.action-title a[href="/t/internationalization-localization/280"]'
|
||||
),
|
||||
"mode should have changed"
|
||||
);
|
||||
assert
|
||||
.dom('.action-title a[href="/t/internationalization-localization/280"]')
|
||||
.doesNotExist("mode should have changed");
|
||||
});
|
||||
|
||||
test("Loading draft also replaces the recipients", async function (assert) {
|
||||
@ -1008,7 +1003,7 @@ acceptance("Composer", function (needs) {
|
||||
.doesNotExist("Doesn't show the 'group_mentioned' notice in a quote");
|
||||
|
||||
await fillIn(".d-editor-input", "@staff");
|
||||
assert.ok(exists(".composer-popup"), "Shows the 'group_mentioned' notice");
|
||||
assert.dom(".composer-popup").exists("shows the 'group_mentioned' notice");
|
||||
});
|
||||
|
||||
test("Does not save invalid draft", async function (assert) {
|
||||
@ -1119,14 +1114,14 @@ acceptance("Composer - Error Extensibility", function (needs) {
|
||||
await fillIn("#reply-title", "this title triggers an error");
|
||||
await fillIn(".d-editor-input", "this is the *content* of a post");
|
||||
await click("#reply-control button.create");
|
||||
assert.ok(exists(".dialog-body"), "it pops up an error message");
|
||||
assert.dom(".dialog-body").exists("pops up an error message");
|
||||
assert.ok(
|
||||
query(".dialog-body").innerText.match(/PLUGIN_ABC ERROR/),
|
||||
"it contains the server side error text"
|
||||
);
|
||||
await click(".dialog-footer .btn-primary");
|
||||
assert.ok(!exists(".dialog-body"), "it dismisses the error");
|
||||
assert.ok(exists(".d-editor-input"), "the composer input is visible");
|
||||
assert.dom(".dialog-body").doesNotExist("dismisses the error");
|
||||
assert.dom(".d-editor-input").exists("the composer input is visible");
|
||||
});
|
||||
});
|
||||
|
||||
@ -1340,7 +1335,7 @@ acceptance("Composer - current time", function (needs) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
|
||||
await click("#topic-footer-buttons .btn.create");
|
||||
assert.ok(exists(".d-editor-input"), "the composer input is visible");
|
||||
assert.dom(".d-editor-input").exists("the composer input is visible");
|
||||
await fillIn(".d-editor-input", "and the time now is: ");
|
||||
|
||||
const date = moment().format("YYYY-MM-DD");
|
||||
|
@ -1,10 +1,6 @@
|
||||
import { click, fillIn, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Composer topic featured links", function (needs) {
|
||||
needs.user();
|
||||
@ -173,28 +169,25 @@ acceptance(
|
||||
test("Pasting a link enables the text input area", async function (assert) {
|
||||
await visit("/");
|
||||
await click("#create-topic");
|
||||
assert.ok(
|
||||
exists(".d-editor-textarea-wrapper.disabled"),
|
||||
"textarea is disabled"
|
||||
);
|
||||
assert
|
||||
.dom(".d-editor-textarea-wrapper.disabled")
|
||||
.exists("textarea is disabled");
|
||||
await fillIn("#reply-title", "http://www.example.com/has-title.html");
|
||||
assert.ok(
|
||||
query(".d-editor-preview").innerHTML.trim().includes("onebox"),
|
||||
"it pastes the link into the body and previews it"
|
||||
);
|
||||
assert.ok(
|
||||
exists(".d-editor-textarea-wrapper .popup-tip.good"),
|
||||
"the body is now good"
|
||||
);
|
||||
assert
|
||||
.dom(".d-editor-textarea-wrapper .popup-tip.good")
|
||||
.exists("the body is now good");
|
||||
assert.strictEqual(
|
||||
query(".title-input input").value,
|
||||
"An interesting article",
|
||||
"title is from the oneboxed article"
|
||||
);
|
||||
assert.ok(
|
||||
!exists(".d-editor-textarea-wrapper.disabled"),
|
||||
"textarea is enabled"
|
||||
);
|
||||
assert
|
||||
.dom(".d-editor-textarea-wrapper.disabled")
|
||||
.doesNotExist("textarea is enabled");
|
||||
});
|
||||
}
|
||||
);
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { click, fillIn, focus, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
|
||||
acceptance(
|
||||
@ -12,49 +12,42 @@ acceptance(
|
||||
test("Disable body until category is selected", async function (assert) {
|
||||
await visit("/");
|
||||
await click("#create-topic");
|
||||
assert.ok(exists(".d-editor-input"), "the composer input is visible");
|
||||
assert.dom(".d-editor-input").exists("the composer input is visible");
|
||||
await focus(".title-input input");
|
||||
assert.ok(
|
||||
exists(".title-input .popup-tip.good.hide"),
|
||||
"title errors are hidden by default"
|
||||
);
|
||||
assert.ok(
|
||||
exists(".d-editor-textarea-wrapper .popup-tip.bad.hide"),
|
||||
"body errors are hidden by default"
|
||||
);
|
||||
assert.ok(
|
||||
exists(".d-editor-textarea-wrapper.disabled"),
|
||||
"textarea is disabled"
|
||||
);
|
||||
assert
|
||||
.dom(".title-input .popup-tip.good.hide")
|
||||
.exists("title errors are hidden by default");
|
||||
assert
|
||||
.dom(".d-editor-textarea-wrapper .popup-tip.bad.hide")
|
||||
.exists("body errors are hidden by default");
|
||||
assert
|
||||
.dom(".d-editor-textarea-wrapper.disabled")
|
||||
.exists("textarea is disabled");
|
||||
|
||||
assert.ok(
|
||||
!exists("button.toggle-fullscreen"),
|
||||
"fullscreen button is not present"
|
||||
);
|
||||
assert
|
||||
.dom("button.toggle-fullscreen")
|
||||
.doesNotExist("fullscreen button is not present");
|
||||
|
||||
const categoryChooser = selectKit(".category-chooser");
|
||||
|
||||
await categoryChooser.expand();
|
||||
await categoryChooser.selectRowByValue(2);
|
||||
|
||||
assert.ok(
|
||||
!exists(".d-editor-textarea-wrapper.disabled"),
|
||||
"textarea is enabled"
|
||||
);
|
||||
assert
|
||||
.dom(".d-editor-textarea-wrapper.disabled")
|
||||
.doesNotExist("textarea is enabled");
|
||||
|
||||
await fillIn(".d-editor-input", "Now I can type stuff");
|
||||
await categoryChooser.expand();
|
||||
await categoryChooser.selectRowByIndex(0);
|
||||
|
||||
assert.ok(
|
||||
!exists(".d-editor-textarea-wrapper.disabled"),
|
||||
"textarea is still enabled"
|
||||
);
|
||||
assert
|
||||
.dom(".d-editor-textarea-wrapper.disabled")
|
||||
.doesNotExist("textarea is still enabled");
|
||||
|
||||
assert.ok(
|
||||
exists("button.toggle-fullscreen"),
|
||||
"fullscreen button is present"
|
||||
);
|
||||
assert
|
||||
.dom("button.toggle-fullscreen")
|
||||
.exists("fullscreen button is present");
|
||||
});
|
||||
}
|
||||
);
|
||||
@ -89,38 +82,34 @@ acceptance(
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
test("Enable composer/body if no topic templates present", async function (assert) {
|
||||
await visit("/");
|
||||
await click("#create-topic");
|
||||
assert.ok(exists(".d-editor-input"), "the composer input is visible");
|
||||
assert.ok(
|
||||
exists(".category-input .popup-tip.bad.hide"),
|
||||
"category errors are hidden by default"
|
||||
);
|
||||
assert.ok(
|
||||
!exists(".d-editor-textarea-wrapper.disabled"),
|
||||
"textarea is enabled"
|
||||
);
|
||||
assert.dom(".d-editor-input").exists("the composer input is visible");
|
||||
assert
|
||||
.dom(".category-input .popup-tip.bad.hide")
|
||||
.exists("category errors are hidden by default");
|
||||
assert
|
||||
.dom(".d-editor-textarea-wrapper.disabled")
|
||||
.doesNotExist("textarea is enabled");
|
||||
|
||||
assert.ok(
|
||||
exists("button.toggle-fullscreen"),
|
||||
"fullscreen button is present"
|
||||
);
|
||||
assert
|
||||
.dom("button.toggle-fullscreen")
|
||||
.exists("fullscreen button is present");
|
||||
|
||||
await click("#reply-control button.create");
|
||||
assert.ok(
|
||||
exists(".category-input .popup-tip.bad"),
|
||||
"it shows the choose a category error"
|
||||
);
|
||||
assert
|
||||
.dom(".category-input .popup-tip.bad")
|
||||
.exists("it shows the choose a category error");
|
||||
|
||||
const categoryChooser = selectKit(".category-chooser");
|
||||
await categoryChooser.expand();
|
||||
await categoryChooser.selectRowByValue(1);
|
||||
|
||||
assert.ok(
|
||||
!exists(".category-input .popup-tip.bad"),
|
||||
"category error removed after selecting category"
|
||||
);
|
||||
assert
|
||||
.dom(".category-input .popup-tip.bad")
|
||||
.doesNotExist("category error removed after selecting category");
|
||||
});
|
||||
}
|
||||
);
|
||||
|
@ -2,12 +2,12 @@ import { visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { setCustomHTML } from "discourse/helpers/custom-html";
|
||||
import PreloadStore from "discourse/lib/preload-store";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("CustomHTML set", function () {
|
||||
test("has no custom HTML in the top", async function (assert) {
|
||||
await visit("/static/faq");
|
||||
assert.ok(!exists("span.custom-html-test"), "it has no markup");
|
||||
assert.dom("span.custom-html-test").doesNotExist("has no markup");
|
||||
});
|
||||
|
||||
test("renders set HTML", async function (assert) {
|
||||
|
@ -1,10 +1,6 @@
|
||||
import { click, fillIn, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, count } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
|
||||
acceptance("Dashboard", function (needs) {
|
||||
@ -26,30 +22,24 @@ acceptance("Dashboard", function (needs) {
|
||||
],
|
||||
});
|
||||
|
||||
test("default", async function (assert) {
|
||||
await visit("/admin");
|
||||
|
||||
assert.ok(exists(".dashboard"), "has dashboard-next class");
|
||||
});
|
||||
|
||||
test("tabs", async function (assert) {
|
||||
await visit("/admin");
|
||||
|
||||
assert.ok(exists(".dashboard .navigation-item.general"), "general tab");
|
||||
assert.dom(".dashboard .navigation-item.general").exists("general tab");
|
||||
assert
|
||||
.dom(".dashboard .navigation-item.moderation")
|
||||
.exists("moderation tab");
|
||||
assert.ok(exists(".dashboard .navigation-item.security"), "security tab");
|
||||
assert.ok(exists(".dashboard .navigation-item.reports"), "reports tab");
|
||||
assert.dom(".dashboard .navigation-item.security").exists("security tab");
|
||||
assert.dom(".dashboard .navigation-item.reports").exists("reports tab");
|
||||
});
|
||||
|
||||
test("general tab", async function (assert) {
|
||||
await visit("/admin");
|
||||
|
||||
assert.ok(exists(".custom-date-range-button"), "custom date range button");
|
||||
assert.ok(exists(".admin-report.signups"), "signups report");
|
||||
assert.ok(exists(".admin-report.posts"), "posts report");
|
||||
assert.ok(exists(".admin-report.dau-by-mau"), "dau-by-mau report");
|
||||
assert.dom(".custom-date-range-button").exists("custom date range button");
|
||||
assert.dom(".admin-report.signups").exists("signups report");
|
||||
assert.dom(".admin-report.posts").exists("posts report");
|
||||
assert.dom(".admin-report.dau-by-mau").exists("dau-by-mau report");
|
||||
assert
|
||||
.dom(".admin-report.daily-engaged-users")
|
||||
.exists("daily-engaged-users report");
|
||||
@ -62,7 +52,7 @@ acceptance("Dashboard", function (needs) {
|
||||
await visit("/admin");
|
||||
await click(".dashboard .navigation-item.moderation .navigation-link");
|
||||
|
||||
assert.ok(exists(".custom-date-range-button"), "custom date range button");
|
||||
assert.dom(".custom-date-range-button").exists("custom date range button");
|
||||
assert
|
||||
.dom(".admin-report.moderators-activity")
|
||||
.exists("moderators activity report");
|
||||
@ -129,12 +119,12 @@ acceptance("Dashboard: dashboard_visible_tabs", function (needs) {
|
||||
test("visible tabs", async function (assert) {
|
||||
await visit("/admin");
|
||||
|
||||
assert.ok(exists(".dashboard .navigation-item.general"), "general tab");
|
||||
assert.dom(".dashboard .navigation-item.general").exists("general tab");
|
||||
assert
|
||||
.dom(".dashboard .navigation-item.moderation")
|
||||
.doesNotExist("moderation tab");
|
||||
assert.ok(exists(".dashboard .navigation-item.security"), "security tab");
|
||||
assert.ok(exists(".dashboard .navigation-item.reports"), "reports tab");
|
||||
assert.dom(".dashboard .navigation-item.security").exists("security tab");
|
||||
assert.dom(".dashboard .navigation-item.reports").exists("reports tab");
|
||||
});
|
||||
});
|
||||
|
||||
@ -148,7 +138,7 @@ acceptance("Dashboard: dashboard_hidden_reports", function (needs) {
|
||||
test("hidden reports", async function (assert) {
|
||||
await visit("/admin");
|
||||
|
||||
assert.ok(exists(".admin-report.signups.is-visible"), "signups report");
|
||||
assert.dom(".admin-report.signups.is-visible").exists("signups report");
|
||||
assert.dom(".admin-report.is-visible.posts").doesNotExist("posts report");
|
||||
assert
|
||||
.dom(".admin-report.is-visible.dau-by-mau")
|
||||
|
@ -4,7 +4,6 @@ import DoNotDisturb from "discourse/lib/do-not-disturb";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
query,
|
||||
queryAll,
|
||||
updateCurrentUser,
|
||||
@ -31,7 +30,7 @@ acceptance("Do not disturb", function (needs) {
|
||||
await click("#user-menu-button-profile");
|
||||
await click("#quick-access-profile .do-not-disturb .btn");
|
||||
|
||||
assert.ok(exists(".do-not-disturb-modal"), "modal to choose time appears");
|
||||
assert.dom(".do-not-disturb-modal").exists("modal to choose time appears");
|
||||
|
||||
let tiles = queryAll(".do-not-disturb-tile");
|
||||
assert.ok(tiles.length === 4, "There are 4 duration choices");
|
||||
@ -40,12 +39,11 @@ acceptance("Do not disturb", function (needs) {
|
||||
|
||||
assert.dom(".d-modal").doesNotExist("modal is hidden");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".header-dropdown-toggle .do-not-disturb-background .d-icon-discourse-dnd"
|
||||
),
|
||||
"dnd icon is present in header"
|
||||
);
|
||||
)
|
||||
.exists("dnd icon is present in header");
|
||||
});
|
||||
|
||||
test("Can be invoked via keyboard", async function (assert) {
|
||||
@ -56,7 +54,7 @@ acceptance("Do not disturb", function (needs) {
|
||||
await click("#user-menu-button-profile");
|
||||
await click("#quick-access-profile .do-not-disturb .btn");
|
||||
|
||||
assert.ok(exists(".do-not-disturb-modal"), "DND modal is displayed");
|
||||
assert.dom(".do-not-disturb-modal").exists("DND modal is displayed");
|
||||
|
||||
assert.strictEqual(
|
||||
count(".do-not-disturb-tile"),
|
||||
@ -74,12 +72,11 @@ acceptance("Do not disturb", function (needs) {
|
||||
.dom(".d-modal")
|
||||
.doesNotExist("DND modal is hidden after making a choice");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".header-dropdown-toggle .do-not-disturb-background .d-icon-discourse-dnd"
|
||||
),
|
||||
"dnd icon is shown in header avatar"
|
||||
);
|
||||
)
|
||||
.exists("dnd icon is shown in header avatar");
|
||||
});
|
||||
|
||||
test("when turned on, it can be turned off", async function (assert) {
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
query,
|
||||
queryAll,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
@ -24,10 +23,10 @@ acceptance("EmojiPicker", function (needs) {
|
||||
await click("#topic-footer-buttons .btn.create");
|
||||
|
||||
await click("button.emoji.btn");
|
||||
assert.ok(exists(".emoji-picker.opened"), "it opens the picker");
|
||||
assert.dom(".emoji-picker.opened").exists("opens the picker");
|
||||
|
||||
await click("button.emoji.btn");
|
||||
assert.notOk(exists(".emoji-picker.opened"), "it closes the picker");
|
||||
assert.dom(".emoji-picker.opened").doesNotExist("closes the picker");
|
||||
});
|
||||
|
||||
test("filters emoji", async function (assert) {
|
||||
@ -83,12 +82,11 @@ acceptance("EmojiPicker", function (needs) {
|
||||
await click("button.emoji.btn");
|
||||
await click(".emoji-picker-emoji-area img.emoji[title='grinning']");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".emoji-picker .section.recent .section-group img.emoji[title='grinning']"
|
||||
),
|
||||
"it shows recent selected emoji"
|
||||
);
|
||||
)
|
||||
.exists("shows recent selected emoji");
|
||||
|
||||
assert
|
||||
.dom('.emoji-picker .category-button[data-section="recent"]')
|
||||
@ -96,12 +94,11 @@ acceptance("EmojiPicker", function (needs) {
|
||||
|
||||
await click(".emoji-picker .trash-recent");
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".emoji-picker .section.recent .section-group img.emoji[title='grinning']"
|
||||
),
|
||||
"it has cleared recent emojis"
|
||||
);
|
||||
)
|
||||
.doesNotExist("has cleared recent emojis");
|
||||
|
||||
assert
|
||||
.dom('.emoji-picker .section[data-section="recent"]')
|
||||
|
@ -1,15 +1,13 @@
|
||||
import { click, fillIn, settled, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import userFixtures from "discourse/tests/fixtures/user-fixtures";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
|
||||
async function openFlagModal() {
|
||||
if (exists(".topic-post:first-child button.show-more-actions")) {
|
||||
if (
|
||||
document.querySelector(".topic-post:first-child button.show-more-actions")
|
||||
) {
|
||||
await click(".topic-post:first-child button.show-more-actions");
|
||||
}
|
||||
await click(".topic-post:first-child button.create-flag");
|
||||
@ -99,7 +97,7 @@ acceptance("flagging", function (needs) {
|
||||
test("Flag modal opening", async function (assert) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
await openFlagModal();
|
||||
assert.ok(exists(".flag-modal-body"), "it shows the flag modal");
|
||||
assert.dom(".flag-modal-body").exists("shows the flag modal");
|
||||
});
|
||||
|
||||
test("Flag take action dropdown exists", async function (assert) {
|
||||
@ -124,7 +122,7 @@ acceptance("flagging", function (needs) {
|
||||
await click("#radio_inappropriate");
|
||||
await selectKit(".reviewable-action-dropdown").expand();
|
||||
await click("[data-value='agree_and_silence']");
|
||||
assert.ok(exists(".silence-user-modal"), "it shows the silence modal");
|
||||
assert.dom(".silence-user-modal").exists("shows the silence modal");
|
||||
assert.dom(".suspend-message").hasValue("", "penalty message is empty");
|
||||
const silenceUntilCombobox = selectKit(".silence-until .combobox");
|
||||
await silenceUntilCombobox.expand();
|
||||
@ -143,7 +141,7 @@ acceptance("flagging", function (needs) {
|
||||
await click("#radio_inappropriate");
|
||||
await selectKit(".reviewable-action-dropdown").expand();
|
||||
await click("[data-value='agree_and_silence']");
|
||||
assert.ok(exists(".silence-user-modal"), "it shows the silence modal");
|
||||
assert.dom(".silence-user-modal").exists("shows the silence modal");
|
||||
assert
|
||||
.dom(".suspend-message")
|
||||
.hasValue(
|
||||
@ -176,7 +174,7 @@ acceptance("flagging", function (needs) {
|
||||
|
||||
await click(".dialog-footer .btn-default");
|
||||
assert.dom(".dialog-body").doesNotExist();
|
||||
assert.ok(exists(".silence-user-modal"), "it shows the silence modal");
|
||||
assert.dom(".silence-user-modal").exists("shows the silence modal");
|
||||
|
||||
await click(".d-modal-cancel");
|
||||
assert.dom(".dialog-body").exists();
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
queryAll,
|
||||
updateCurrentUser,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
@ -19,7 +18,7 @@ acceptance("Group Members - Anonymous", function () {
|
||||
1,
|
||||
"it displays the group's avatar flair"
|
||||
);
|
||||
assert.ok(exists(".group-members .group-member"), "it lists group members");
|
||||
assert.dom(".group-members .group-member").exists("lists group members");
|
||||
|
||||
assert
|
||||
.dom(".group-member-dropdown")
|
||||
|
@ -2,11 +2,7 @@ import { click, currentRouteName, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { GROUP_SMTP_SSL_MODES } from "discourse/lib/constants";
|
||||
import formKit from "discourse/tests/helpers/form-kit-helper";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
@ -44,10 +40,9 @@ acceptance(
|
||||
"group.manage.email",
|
||||
"it redirects to the group email page"
|
||||
);
|
||||
assert.notOk(
|
||||
exists(".group-manage-email-imap-wrapper"),
|
||||
"does not show IMAP settings"
|
||||
);
|
||||
assert
|
||||
.dom(".group-manage-email-imap-wrapper")
|
||||
.doesNotExist("does not show IMAP settings");
|
||||
});
|
||||
}
|
||||
);
|
||||
@ -77,10 +72,9 @@ acceptance(
|
||||
query(".user-secondary-navigation").innerText.includes("Email"),
|
||||
"email link is shown in the sidebar"
|
||||
);
|
||||
assert.ok(
|
||||
exists("#enable_imap:disabled"),
|
||||
"IMAP is disabled until SMTP settings are valid"
|
||||
);
|
||||
assert
|
||||
.dom("#enable_imap")
|
||||
.isDisabled("IMAP is disabled until SMTP settings are valid");
|
||||
|
||||
await click("#enable_smtp");
|
||||
assert.dom(".group-smtp-email-settings").exists();
|
||||
@ -125,10 +119,9 @@ acceptance(
|
||||
"Saved!"
|
||||
);
|
||||
|
||||
assert.notOk(
|
||||
exists("#enable_imap:disabled"),
|
||||
"IMAP is able to be enabled now that SMTP is saved"
|
||||
);
|
||||
assert
|
||||
.dom("#enable_imap")
|
||||
.isEnabled("IMAP is able to be enabled now that SMTP is saved");
|
||||
|
||||
await click("#enable_smtp");
|
||||
assert.strictEqual(
|
||||
@ -150,17 +143,17 @@ acceptance(
|
||||
await formKit().submit();
|
||||
await click(".group-manage-save");
|
||||
|
||||
assert.notOk(
|
||||
exists("#enable_imap:disabled"),
|
||||
"IMAP is able to be enabled now that IMAP is saved"
|
||||
);
|
||||
assert
|
||||
.dom("#enable_imap")
|
||||
.isEnabled("IMAP is able to be enabled now that IMAP is saved");
|
||||
|
||||
await click("#enable_imap");
|
||||
|
||||
assert.ok(
|
||||
exists(".test-imap-settings:disabled"),
|
||||
"does not allow testing settings if not all fields are filled"
|
||||
);
|
||||
assert
|
||||
.dom(".test-imap-settings")
|
||||
.isDisabled(
|
||||
"does not allow testing settings if not all fields are filled"
|
||||
);
|
||||
|
||||
await click("#prefill_imap_gmail");
|
||||
assert.strictEqual(
|
||||
@ -173,13 +166,12 @@ acceptance(
|
||||
"993",
|
||||
"prefills IMAP port settings for gmail"
|
||||
);
|
||||
assert.ok(
|
||||
exists("#enable_ssl_imap:checked"),
|
||||
"prefills IMAP ssl settings for gmail"
|
||||
);
|
||||
assert
|
||||
.dom("#enable_ssl_imap")
|
||||
.isChecked("prefills IMAP ssl settings for gmail");
|
||||
await click(".test-imap-settings");
|
||||
|
||||
assert.ok(exists(".imap-settings-ok"), "tested settings are ok");
|
||||
assert.dom(".imap-settings-ok").exists("tested settings are ok");
|
||||
|
||||
await click(".group-manage-save");
|
||||
|
||||
@ -188,10 +180,9 @@ acceptance(
|
||||
"Saved!"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(".imap-no-mailbox-selected"),
|
||||
"shows a message saying no IMAP mailbox is selected"
|
||||
);
|
||||
assert
|
||||
.dom(".imap-no-mailbox-selected")
|
||||
.exists("shows a message saying no IMAP mailbox is selected");
|
||||
|
||||
await selectKit(
|
||||
".control-group.group-imap-mailboxes .combo-box"
|
||||
@ -201,10 +192,9 @@ acceptance(
|
||||
).selectRowByValue("All Mail");
|
||||
await click(".group-manage-save");
|
||||
|
||||
assert.notOk(
|
||||
exists(".imap-no-mailbox-selected"),
|
||||
"no longer shows a no mailbox selected message"
|
||||
);
|
||||
assert
|
||||
.dom(".imap-no-mailbox-selected")
|
||||
.doesNotExist("no longer shows a no mailbox selected message");
|
||||
|
||||
await click("#enable_imap");
|
||||
assert.strictEqual(
|
||||
@ -282,8 +272,8 @@ acceptance(
|
||||
test("prefills smtp and imap saved settings and shows last updated details", async function (assert) {
|
||||
await visit("/g/discourse/manage/email");
|
||||
|
||||
assert.notOk(exists("#enable_smtp:disabled"), "SMTP is not disabled");
|
||||
assert.notOk(exists("#enable_imap:disabled"), "IMAP is not disabled");
|
||||
assert.dom("#enable_smtp").isNotDisabled("SMTP is not disabled");
|
||||
assert.dom("#enable_imap").isNotDisabled("IMAP is not disabled");
|
||||
|
||||
assert
|
||||
.form()
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
updateCurrentUser,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
@ -101,7 +100,7 @@ acceptance(
|
||||
test("For a group with a default_notification_level of 0", async function (assert) {
|
||||
await visit("/g/alternative-group/manage/interaction");
|
||||
|
||||
await assert.ok(exists(".groups-form"), "should have the form");
|
||||
await assert.dom(".groups-form").exists("has the form");
|
||||
await assert.strictEqual(
|
||||
selectKit(".groups-form-default-notification-level").header().value(),
|
||||
"0",
|
||||
@ -112,7 +111,7 @@ acceptance(
|
||||
test("For a group with a null default_notification_level", async function (assert) {
|
||||
await visit("/g/discourse/manage/interaction");
|
||||
|
||||
await assert.ok(exists(".groups-form"), "should have the form");
|
||||
await assert.dom(".groups-form").exists("has the form");
|
||||
await assert.strictEqual(
|
||||
selectKit(".groups-form-default-notification-level").header().value(),
|
||||
"3",
|
||||
@ -123,7 +122,7 @@ acceptance(
|
||||
test("For a group with a selected default_notification_level", async function (assert) {
|
||||
await visit("/g/support/manage/interaction");
|
||||
|
||||
await assert.ok(exists(".groups-form"), "should have the form");
|
||||
await assert.dom(".groups-form").exists("has the form");
|
||||
await assert.strictEqual(
|
||||
selectKit(".groups-form-default-notification-level").header().value(),
|
||||
"2",
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { click, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
|
||||
acceptance("Managing Group - Save Button", function (needs) {
|
||||
@ -19,11 +19,11 @@ acceptance("Managing Group - Save Button", function (needs) {
|
||||
await visibilitySelector.expand();
|
||||
await visibilitySelector.selectRowByValue("1");
|
||||
|
||||
assert.ok(exists(".alert-private-group-name"), "alert is shown");
|
||||
assert.dom(".alert-private-group-name").exists("alert is shown");
|
||||
|
||||
await visibilitySelector.expand();
|
||||
await visibilitySelector.selectRowByValue("0");
|
||||
|
||||
assert.notOk(exists(".alert-private-group-name"), "alert is hidden");
|
||||
assert.dom(".alert-private-group-name").doesNotExist("alert is hidden");
|
||||
});
|
||||
});
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
@ -34,7 +33,7 @@ acceptance("Group - Anonymous", function (needs) {
|
||||
|
||||
await click(".nav-pills li a[title='Activity']");
|
||||
|
||||
assert.ok(exists(".user-stream-item"), "it lists stream items");
|
||||
assert.dom(".user-stream-item").exists("lists stream items");
|
||||
|
||||
await click(".activity-nav li a[href='/g/discourse/activity/topics']");
|
||||
|
||||
@ -43,14 +42,14 @@ acceptance("Group - Anonymous", function (needs) {
|
||||
|
||||
await click(".activity-nav li a[href='/g/discourse/activity/mentions']");
|
||||
|
||||
assert.ok(exists(".user-stream-item"), "it lists stream items");
|
||||
assert.dom(".user-stream-item").exists("lists stream items");
|
||||
assert
|
||||
.dom(".nav-pills li a[title='Edit Group']")
|
||||
.doesNotExist("it should not show messages tab if user is not admin");
|
||||
assert
|
||||
.dom(".nav-pills li a[title='Logs']")
|
||||
.doesNotExist("it should not show Logs tab if user is not admin");
|
||||
assert.ok(exists(".user-stream-item"), "it lists stream items");
|
||||
assert.dom(".user-stream-item").exists("lists stream items");
|
||||
|
||||
const groupDropdown = selectKit(".group-dropdown");
|
||||
await groupDropdown.expand();
|
||||
@ -212,7 +211,7 @@ acceptance("Group - Authenticated", function (needs) {
|
||||
"it prefills the group name"
|
||||
);
|
||||
|
||||
assert.ok(!exists(".add-warning"), "groups can't receive warnings");
|
||||
assert.dom(".add-warning").doesNotExist("groups can't receive warnings");
|
||||
});
|
||||
|
||||
test("Admin viewing group messages when there are no messages", async function (assert) {
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
invisible,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
@ -26,13 +25,13 @@ acceptance("Groups", function () {
|
||||
);
|
||||
|
||||
await click(".group-index-join");
|
||||
assert.ok(exists(".modal.login-modal"), "it shows the login modal");
|
||||
assert.dom(".modal.login-modal").exists("shows the login modal");
|
||||
|
||||
await click(".login-modal .modal-close");
|
||||
assert.ok(invisible(".modal.login-modal"), "it closes the login modal");
|
||||
|
||||
await click(".group-index-request");
|
||||
assert.ok(exists(".modal.login-modal"), "it shows the login modal");
|
||||
assert.dom(".modal.login-modal").exists("shows the login modal");
|
||||
|
||||
await click("a[href='/g/discourse/members']");
|
||||
assert
|
||||
@ -40,6 +39,6 @@ acceptance("Groups", function () {
|
||||
.hasText("Awesome Team", "it displays the group page");
|
||||
|
||||
await click(".group-index-join");
|
||||
assert.ok(exists(".modal.login-modal"), "it shows the login modal");
|
||||
assert.dom(".modal.login-modal").exists("shows the login modal");
|
||||
});
|
||||
});
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { click, fillIn, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import PreloadStore from "discourse/lib/preload-store";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Accept Invite - User Fields", function (needs) {
|
||||
needs.site({
|
||||
@ -42,8 +42,8 @@ acceptance("Accept Invite - User Fields", function (needs) {
|
||||
});
|
||||
|
||||
await visit("/invites/myvalidinvitetoken");
|
||||
assert.ok(exists(".invites-show"), "shows the accept invite page");
|
||||
assert.ok(exists(".user-field"), "it has at least one user field");
|
||||
assert.dom(".invites-show").exists("shows the accept invite page");
|
||||
assert.dom(".user-field").exists("has at least one user field");
|
||||
assert
|
||||
.dom(".invites-show .btn-primary:disabled")
|
||||
.exists("submit is disabled");
|
||||
@ -52,7 +52,7 @@ acceptance("Accept Invite - User Fields", function (needs) {
|
||||
await fillIn("#new-account-username", "validname");
|
||||
await fillIn("#new-account-password", "secur3ty4Y0uAndMe");
|
||||
|
||||
assert.ok(exists(".username-input .good"), "username is valid");
|
||||
assert.dom(".username-input .good").exists("username is valid");
|
||||
assert
|
||||
.dom(".invites-show .btn-primary:disabled")
|
||||
.exists("submit is still disabled due to lack of user fields");
|
||||
|
@ -1,11 +1,7 @@
|
||||
import { click, currentURL, triggerKeyEvent, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import DiscoveryFixtures from "discourse/tests/fixtures/discovery-fixtures";
|
||||
import {
|
||||
acceptance,
|
||||
chromeTest,
|
||||
exists,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, chromeTest } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { cloneJSON } from "discourse-common/lib/object";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
@ -202,7 +198,7 @@ acceptance("Keyboard Shortcuts - Authenticated Users", function (needs) {
|
||||
await visit("/");
|
||||
document.getElementById("ember-testing-container").scrollTop = 0;
|
||||
await visit("/new");
|
||||
assert.ok(exists("#dismiss-new-top"), "dismiss new top button is present");
|
||||
assert.dom("#dismiss-new-top").exists("dismiss new top button is present");
|
||||
|
||||
await triggerKeyEvent(document, "keydown", "D", { shiftKey: true });
|
||||
assert.strictEqual(resetNewCalled, 1);
|
||||
|
@ -1,10 +1,6 @@
|
||||
import { click, currentRouteName, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
invisible,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Login Required", function (needs) {
|
||||
needs.settings({ login_required: true });
|
||||
@ -25,9 +21,9 @@ acceptance("Login Required", function (needs) {
|
||||
);
|
||||
|
||||
await click("header .login-button");
|
||||
assert.ok(exists(".login-modal"), "they can still access the login modal");
|
||||
assert.dom(".login-modal").exists("they can still access the login modal");
|
||||
|
||||
await click(".d-modal__header .modal-close");
|
||||
assert.ok(invisible(".login-modal"), "it closes the login modal");
|
||||
assert.dom(".login-modal").doesNotExist("closes the login modal");
|
||||
});
|
||||
});
|
||||
|
@ -1,13 +1,13 @@
|
||||
import { visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Topic Discovery - Mobile", function (needs) {
|
||||
needs.mobileView();
|
||||
test("Visit Discovery Pages", async function (assert) {
|
||||
await visit("/");
|
||||
assert.ok(exists(".topic-list"), "The list of topics was rendered");
|
||||
assert.ok(exists(".topic-list .topic-list-item"), "has topics");
|
||||
assert.dom(".topic-list").exists("the list of topics is rendered");
|
||||
assert.dom(".topic-list .topic-list-item").exists("has topics");
|
||||
|
||||
assert
|
||||
.dom("a[data-user-card=codinghorror] img.avatar")
|
||||
@ -18,6 +18,6 @@ acceptance("Topic Discovery - Mobile", function (needs) {
|
||||
);
|
||||
|
||||
await visit("/categories");
|
||||
assert.ok(exists(".category"), "has a list of categories");
|
||||
assert.dom(".category").exists("has a list of categories");
|
||||
});
|
||||
});
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { click, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Signing In - Mobile", function (needs) {
|
||||
needs.mobileView();
|
||||
@ -8,6 +8,6 @@ acceptance("Signing In - Mobile", function (needs) {
|
||||
test("sign in", async function (assert) {
|
||||
await visit("/");
|
||||
await click("header .login-button");
|
||||
assert.ok(exists("#login-form"), "it shows the login modal");
|
||||
assert.dom("#login-form").exists("shows the login modal");
|
||||
});
|
||||
});
|
||||
|
@ -1,10 +1,6 @@
|
||||
import { visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
|
||||
acceptance("New Message - Anonymous", function () {
|
||||
@ -13,7 +9,7 @@ acceptance("New Message - Anonymous", function () {
|
||||
"/new-message?username=charlie&title=message%20title&body=message%20body"
|
||||
);
|
||||
|
||||
assert.ok(exists(".modal.login-modal"), "it shows the login modal");
|
||||
assert.dom(".modal.login-modal").exists("shows the login modal");
|
||||
});
|
||||
});
|
||||
|
||||
@ -25,7 +21,7 @@ acceptance("New Message - Authenticated", function (needs) {
|
||||
"/new-message?username=charlie,john&title=message%20title&body=message%20body"
|
||||
);
|
||||
|
||||
assert.ok(exists(".composer-fields"), "it opens composer");
|
||||
assert.dom(".composer-fields").exists("opens the composer");
|
||||
assert.strictEqual(
|
||||
query("#reply-title").value.trim(),
|
||||
"message title",
|
||||
|
@ -1,13 +1,13 @@
|
||||
import { currentURL, visit, waitFor } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
|
||||
acceptance("New Topic - Anonymous", function () {
|
||||
test("accessing new-topic route when logged out", async function (assert) {
|
||||
await visit("/new-topic?title=topic%20title&body=topic%20body");
|
||||
|
||||
assert.ok(exists(".modal.login-modal"), "it shows the login modal");
|
||||
assert.dom(".modal.login-modal").exists("shows the login modal");
|
||||
});
|
||||
});
|
||||
|
||||
@ -39,7 +39,7 @@ acceptance("New Topic - Authenticated", function (needs) {
|
||||
"/new-topic?title=topic%20title&body=topic%20body&category=bug"
|
||||
);
|
||||
|
||||
assert.ok(exists(".composer-fields"), "it opens composer");
|
||||
assert.dom(".composer-fields").exists("opens composer");
|
||||
|
||||
assert
|
||||
.dom("#reply-title")
|
||||
|
@ -4,11 +4,7 @@ import sinon from "sinon";
|
||||
import PreloadStore from "discourse/lib/preload-store";
|
||||
import DiscourseURL from "discourse/lib/url";
|
||||
import { parsePostData } from "discourse/tests/helpers/create-pretender";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
acceptance("Password Reset", function (needs) {
|
||||
@ -69,13 +65,13 @@ acceptance("Password Reset", function (needs) {
|
||||
PreloadStore.store("password_reset", { is_developer: false });
|
||||
|
||||
await visit("/u/password-reset/myvalidtoken");
|
||||
assert.ok(exists(".password-reset input"), "shows the input");
|
||||
assert.dom(".password-reset input").exists("shows the input");
|
||||
|
||||
await fillIn(".password-reset input", "perf3ctly5ecur3");
|
||||
assert.ok(exists(".password-reset .tip.good"), "input looks good");
|
||||
assert.dom(".password-reset .tip.good").exists("input looks good");
|
||||
|
||||
await fillIn(".password-reset input", "123");
|
||||
assert.ok(exists(".password-reset .tip.bad"), "input is not valid");
|
||||
assert.dom(".password-reset .tip.bad").exists("input is not valid");
|
||||
assert.ok(
|
||||
query(".password-reset .tip.bad").innerHTML.includes(
|
||||
I18n.t("user.password.too_short", {
|
||||
@ -87,7 +83,7 @@ acceptance("Password Reset", function (needs) {
|
||||
|
||||
await fillIn(".password-reset input", "jonesyAlienSlayer");
|
||||
await click(".password-reset form button[type='submit']");
|
||||
assert.ok(exists(".password-reset .tip.bad"), "input is not valid");
|
||||
assert.dom(".password-reset .tip.bad").exists("input is not valid");
|
||||
assert.ok(
|
||||
query(".password-reset .tip.bad").innerHTML.includes(
|
||||
"Password is the name of your cat"
|
||||
@ -117,13 +113,13 @@ acceptance("Password Reset", function (needs) {
|
||||
|
||||
await visit("/u/password-reset/requiretwofactor");
|
||||
|
||||
assert.notOk(exists("#new-account-password"), "does not show the input");
|
||||
assert.ok(exists("#second-factor"), "shows the second factor prompt");
|
||||
assert.dom("#new-account-password").doesNotExist("does not show the input");
|
||||
assert.dom("#second-factor").exists("shows the second factor prompt");
|
||||
|
||||
await fillIn("input#second-factor", "0000");
|
||||
await click(".password-reset form button");
|
||||
|
||||
assert.ok(exists(".alert-error"), "shows 2 factor error");
|
||||
assert.dom(".alert-error").exists("shows 2FA error");
|
||||
|
||||
assert.ok(
|
||||
query(".alert-error").innerHTML.includes("invalid token"),
|
||||
@ -133,8 +129,8 @@ acceptance("Password Reset", function (needs) {
|
||||
await fillIn("input#second-factor", "123123");
|
||||
await click(".password-reset form button");
|
||||
|
||||
assert.notOk(exists(".alert-error"), "hides error");
|
||||
assert.ok(exists("#new-account-password"), "shows the input");
|
||||
assert.dom(".alert-error").doesNotExist("hides error");
|
||||
assert.dom("#new-account-password").exists("shows the input");
|
||||
|
||||
await fillIn(".password-reset input", "perf3ctly5ecur3");
|
||||
|
||||
|
@ -1,19 +1,19 @@
|
||||
import { click, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Post - Admin Menu - Anonymous", function () {
|
||||
test("Enter as a anon user", async function (assert) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
await click(".show-more-actions");
|
||||
|
||||
assert.ok(exists("#topic"), "The topic was rendered");
|
||||
assert.dom("#topic").exists("the topic is rendered");
|
||||
assert
|
||||
.dom("#post_1 .post-controls .edit")
|
||||
.exists("The edit button was not rendered");
|
||||
.exists("the edit button is not rendered");
|
||||
assert
|
||||
.dom(".show-post-admin-menu")
|
||||
.doesNotExist("The wrench button was not rendered");
|
||||
.doesNotExist("the wrench button is not rendered");
|
||||
});
|
||||
});
|
||||
|
||||
@ -26,7 +26,7 @@ acceptance("Post - Admin Menu - Authenticated", function (needs) {
|
||||
|
||||
assert
|
||||
.dom("#post_1 .post-controls .edit")
|
||||
.exists("The edit button was rendered");
|
||||
assert.ok(exists(".add-notice"), "The add notice button was rendered");
|
||||
.exists("the edit button is rendered");
|
||||
assert.dom(".add-notice").exists("the add notice button is rendered");
|
||||
});
|
||||
});
|
||||
|
@ -1,10 +1,6 @@
|
||||
import { click, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Post Table Wrapper Test", function () {
|
||||
test("fullscreen table wrapper appears on post with large table", async function (assert) {
|
||||
@ -14,12 +10,11 @@ acceptance("Post Table Wrapper Test", function () {
|
||||
.dom(`${postWithLargeTable} .fullscreen-table-wrapper`)
|
||||
.exists("The wrapper is present on the post with the large table");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`${postWithLargeTable} .fullscreen-table-wrapper .fullscreen-table-wrapper__buttons .open-popup-link`
|
||||
),
|
||||
"buttons for the table wrapper appear inside a separate div"
|
||||
);
|
||||
)
|
||||
.exists("buttons for the table wrapper appear inside a separate div");
|
||||
|
||||
const fullscreenButtonWrapper = query(
|
||||
`${postWithLargeTable} .fullscreen-table-wrapper .fullscreen-table-wrapper__buttons`
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
loggedInUser,
|
||||
publishToMessageBus,
|
||||
query,
|
||||
@ -35,8 +34,8 @@ acceptance("Review", function (needs) {
|
||||
test("It returns a list of reviewable items", async function (assert) {
|
||||
await visit("/review");
|
||||
|
||||
assert.ok(exists(".reviewable-item"), "has a list of items");
|
||||
assert.ok(exists(user));
|
||||
assert.dom(".reviewable-item").exists("has a list of items");
|
||||
assert.dom(user).exists();
|
||||
assert
|
||||
.dom(`${user}.reviewable-user`)
|
||||
.exists("applies a class for the type");
|
||||
@ -88,7 +87,7 @@ acceptance("Review", function (needs) {
|
||||
test("Settings", async function (assert) {
|
||||
await visit("/review/settings");
|
||||
|
||||
assert.ok(exists(".reviewable-score-type"), "has a list of bonuses");
|
||||
assert.dom(".reviewable-score-type").exists("has a list of bonuses");
|
||||
|
||||
const field = selectKit(
|
||||
".reviewable-score-type:nth-of-type(1) .field .combo-box"
|
||||
@ -97,7 +96,7 @@ acceptance("Review", function (needs) {
|
||||
await field.selectRowByValue("5");
|
||||
await click(".save-settings");
|
||||
|
||||
assert.ok(exists(".reviewable-settings .saved"), "it saved");
|
||||
assert.dom(".reviewable-settings .saved").exists("it saved");
|
||||
});
|
||||
|
||||
test("Flag related", async function (assert) {
|
||||
@ -118,13 +117,13 @@ acceptance("Review", function (needs) {
|
||||
test("Flag related", async function (assert) {
|
||||
await visit("/review/1");
|
||||
|
||||
assert.ok(exists(".reviewable-flagged-post"), "it shows the flagged post");
|
||||
assert.dom(".reviewable-flagged-post").exists("shows the flagged post");
|
||||
});
|
||||
|
||||
test("Clicking the buttons triggers actions", async function (assert) {
|
||||
await visit("/review");
|
||||
await click(`${user} .reviewable-action.approve`);
|
||||
assert.ok(!exists(user), "it removes the reviewable on success");
|
||||
assert.dom(user).doesNotExist("removes the reviewable on success");
|
||||
});
|
||||
|
||||
test("Editing a reviewable", async function (assert) {
|
||||
@ -132,8 +131,8 @@ acceptance("Review", function (needs) {
|
||||
|
||||
await visit("/review");
|
||||
|
||||
assert.ok(exists(`${topic} .reviewable-action.approve`));
|
||||
assert.ok(!exists(`${topic} .badge-category__name`));
|
||||
assert.dom(`${topic} .reviewable-action.approve`).exists();
|
||||
assert.dom(`${topic} .badge-category__name`).doesNotExist();
|
||||
|
||||
assert.strictEqual(
|
||||
query(`${topic} .discourse-tag:nth-of-type(1)`).innerText,
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
@ -19,7 +18,9 @@ acceptance("Search - Mobile", function (needs) {
|
||||
.dom("input.full-page-search")
|
||||
.exists("it shows the full page search form");
|
||||
|
||||
assert.ok(!exists(".search-results .fps-topic"), "no results by default");
|
||||
assert
|
||||
.dom(".search-results .fps-topic")
|
||||
.doesNotExist("no results by default");
|
||||
|
||||
await click(".advanced-filters summary");
|
||||
|
||||
|
@ -13,7 +13,6 @@ import searchFixtures from "discourse/tests/fixtures/search-fixtures";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
query,
|
||||
queryAll,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
@ -62,7 +61,7 @@ acceptance("Search - Anonymous", function (needs) {
|
||||
await visit("/");
|
||||
await click("#search-button");
|
||||
|
||||
assert.ok(exists("#search-term"), "it shows the search input");
|
||||
assert.dom("#search-term").exists("shows the search input");
|
||||
assert
|
||||
.dom(".show-advanced-search")
|
||||
.exists("it shows full page search button");
|
||||
@ -400,12 +399,11 @@ acceptance("Search - Anonymous", function (needs) {
|
||||
await fillIn("#search-term", "dev");
|
||||
await triggerKeyEvent("#search-term", "keyup", "Enter");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".search-menu .search-result-topic .item .topic-title span#topic-with-html"
|
||||
),
|
||||
"html in the topic title is properly escaped"
|
||||
);
|
||||
)
|
||||
.exists("html in the topic title is properly escaped");
|
||||
});
|
||||
|
||||
test("topic results - search result escapes emojis in topic title", async function (assert) {
|
||||
@ -414,12 +412,9 @@ acceptance("Search - Anonymous", function (needs) {
|
||||
await fillIn("#search-term", "dev");
|
||||
await triggerKeyEvent("#search-term", "keyup", "Enter");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
".search-menu .search-result-topic .item .topic-title img[alt='+1']"
|
||||
),
|
||||
":+1: in the topic title is properly converted to an emoji"
|
||||
);
|
||||
assert
|
||||
.dom(".search-menu .search-result-topic .item .topic-title img[alt='+1']")
|
||||
.exists(":+1: in the topic title is properly converted to an emoji");
|
||||
});
|
||||
});
|
||||
|
||||
@ -567,7 +562,7 @@ acceptance("Search - Authenticated", function (needs) {
|
||||
await visit("/");
|
||||
await click("#search-button");
|
||||
await fillIn("#search-term", "dev");
|
||||
assert.ok(exists(query(`${container} ul li`)), "has a list of items");
|
||||
assert.dom(`${container} ul li`).exists("has a list of items");
|
||||
|
||||
await triggerKeyEvent("#search-term", "keyup", "Enter");
|
||||
assert
|
||||
@ -603,7 +598,7 @@ acceptance("Search - Authenticated", function (needs) {
|
||||
query("#search-button"),
|
||||
"Escaping search returns focus to search button"
|
||||
);
|
||||
assert.ok(!exists(".search-menu:visible"), "Esc removes search dropdown");
|
||||
assert.dom(".search-menu").doesNotExist("Esc removes search dropdown");
|
||||
|
||||
await click("#search-button");
|
||||
await triggerKeyEvent(document.activeElement, "keyup", "ArrowDown");
|
||||
@ -627,12 +622,12 @@ acceptance("Search - Authenticated", function (needs) {
|
||||
.dom(query(`.search-menu`))
|
||||
.doesNotExist("search dropdown is collapsed after second Enter hit");
|
||||
|
||||
//new search launched, Enter key should be reset
|
||||
// new search launched, Enter key should be reset
|
||||
await click("#search-button");
|
||||
assert.ok(exists(query(`${container} ul li`)), "has a list of items");
|
||||
assert.dom(`${container} ul li`).exists("has a list of items");
|
||||
|
||||
await triggerKeyEvent("#search-term", "keyup", "Enter");
|
||||
assert.ok(exists(query(`.search-menu`)), "search dropdown is visible");
|
||||
assert.dom(`.search-menu`).exists("search dropdown is visible");
|
||||
});
|
||||
|
||||
test("search menu keyboard navigation - while composer is open", async function (assert) {
|
||||
@ -845,7 +840,7 @@ acceptance("Search - with tagging enabled", function (needs) {
|
||||
const firstItem =
|
||||
".search-menu .results ul.search-menu-assistant .search-link";
|
||||
|
||||
assert.ok(exists(query(firstItem)));
|
||||
assert.dom(firstItem).exists();
|
||||
|
||||
const firstTag = query(`${firstItem} .search-item-tag`).textContent.trim();
|
||||
assert.strictEqual(firstTag, "monkey");
|
||||
@ -1219,13 +1214,13 @@ acceptance("Search - assistant", function (needs) {
|
||||
await visit("/u/charlie/messages");
|
||||
await click("#search-button");
|
||||
|
||||
assert.ok(exists(".btn.search-context"), "it shows the button");
|
||||
assert.dom(".btn.search-context").exists("shows the button");
|
||||
|
||||
await fillIn("#search-term", "");
|
||||
await query("input#search-term").focus();
|
||||
await triggerKeyEvent("input#search-term", "keyup", "Backspace");
|
||||
|
||||
assert.notOk(exists(".btn.search-context"), "it removes the button");
|
||||
assert.dom(".btn.search-context").doesNotExist("removes the button");
|
||||
|
||||
await clickOutside();
|
||||
await click("#search-button");
|
||||
|
@ -1,11 +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,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
const { TOTP, BACKUP_CODE, SECURITY_KEY } = SECOND_FACTOR_METHODS;
|
||||
|
||||
@ -202,7 +198,7 @@ acceptance("Second Factor Auth Page", function (needs) {
|
||||
);
|
||||
|
||||
await click(".toggle-second-factor-method.totp");
|
||||
assert.ok(exists("form.totp-token"), "TOTP form is now shown");
|
||||
assert.dom("form.totp-token").exists("TOTP form is now shown");
|
||||
assert
|
||||
.dom(".toggle-second-factor-method.security-key")
|
||||
.exists("security key is now shown as alternative method");
|
||||
@ -280,6 +276,6 @@ acceptance("Second Factor Auth Page", function (needs) {
|
||||
|
||||
await visit("/session/2fa?nonce=ok110111");
|
||||
|
||||
assert.notOk(exists(".sidebar-container"), "does not display the sidebar");
|
||||
assert.dom(".sidebar-container").doesNotExist();
|
||||
});
|
||||
});
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { click, tab, triggerKeyEvent, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
|
||||
acceptance("Select-kit - Composer - Accessibility", function (needs) {
|
||||
@ -61,6 +61,6 @@ acceptance("Select-kit - Composer - Accessibility", function (needs) {
|
||||
.dom(".mini-tag-chooser .select-kit-body .select-kit-row")
|
||||
.doesNotExist("Hitting Escape dismisses the tag chooser");
|
||||
|
||||
assert.ok(exists(".composer-fields"), "Escape does not dismiss composer");
|
||||
assert.dom(".composer-fields").exists("Escape does not dismiss composer");
|
||||
});
|
||||
});
|
||||
|
@ -1,11 +1,7 @@
|
||||
import { click, currentURL, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import CategoryFixtures from "discourse/tests/fixtures/category-fixtures";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
@ -35,7 +31,7 @@ acceptance("Share and Invite modal", function (needs) {
|
||||
|
||||
await click("#topic-footer-button-share-and-invite");
|
||||
|
||||
assert.ok(exists(".share-topic-modal"), "it shows the modal");
|
||||
assert.dom(".share-topic-modal").exists("shows the modal");
|
||||
|
||||
assert
|
||||
.dom("#modal-alert.alert-warning")
|
||||
@ -66,7 +62,7 @@ acceptance("Share and Invite modal", function (needs) {
|
||||
);
|
||||
|
||||
await click("#post_2 a.post-date");
|
||||
assert.ok(exists(".share-topic-modal"), "it shows the share modal");
|
||||
assert.dom(".share-topic-modal").exists("shows the share modal");
|
||||
assert.strictEqual(
|
||||
currentURL(),
|
||||
"/t/short-topic-with-two-posts/54077",
|
||||
@ -83,7 +79,7 @@ acceptance("Share and Invite modal", function (needs) {
|
||||
|
||||
await click("#topic-footer-button-share-and-invite");
|
||||
|
||||
assert.ok(exists(".share-topic-modal"), "it shows the modal");
|
||||
assert.dom(".share-topic-modal").exists("shows the modal");
|
||||
assert
|
||||
.dom("#modal-alert.alert-warning")
|
||||
.exists("it shows restricted warning");
|
||||
@ -112,7 +108,7 @@ acceptance("Share and Invite modal - mobile", function (needs) {
|
||||
await subject.expand();
|
||||
await subject.selectRowByValue("share-and-invite");
|
||||
|
||||
assert.ok(exists(".share-topic-modal"), "it shows the modal");
|
||||
assert.dom(".share-topic-modal").exists("shows the modal");
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -1,11 +1,7 @@
|
||||
import { visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import Site from "discourse/models/site";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
queryAll,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Sidebar - Anonymous - Categories Section", function (needs) {
|
||||
needs.settings({
|
||||
@ -133,11 +129,12 @@ acceptance("Sidebar - Anonymous - Categories Section", function (needs) {
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section[data-section-name='categories'] .sidebar-section-link[data-link-name='${firstCategory.slug}']`
|
||||
),
|
||||
"category section link is not shown in sidebar after being marked as uncategorized"
|
||||
);
|
||||
)
|
||||
.doesNotExist(
|
||||
"category section link is not shown in sidebar after being marked as uncategorized"
|
||||
);
|
||||
});
|
||||
});
|
||||
|
@ -1,10 +1,6 @@
|
||||
import { click, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
queryAll,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
acceptance("Sidebar - Anonymous user - Community Section", function (needs) {
|
||||
@ -34,12 +30,11 @@ acceptance("Sidebar - Anonymous user - Community Section", function (needs) {
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='users']"
|
||||
),
|
||||
"users section link is not shown in sidebar"
|
||||
);
|
||||
)
|
||||
.doesNotExist("users section link is not shown in sidebar");
|
||||
});
|
||||
|
||||
test("users, about, faq, groups and badges section links are shown in more...", async function (assert) {
|
||||
|
@ -1,7 +1,6 @@
|
||||
import { click, triggerEvent, visit, waitFor } from "@ember/test-helpers";
|
||||
import $ from "jquery";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Sidebar - Narrow Desktop", function (needs) {
|
||||
needs.user();
|
||||
@ -16,15 +15,15 @@ acceptance("Sidebar - Narrow Desktop", function (needs) {
|
||||
|
||||
test("wide sidebar is changed to cloak when resize to narrow screen", async function (assert) {
|
||||
await visit("/");
|
||||
assert.ok(exists("#d-sidebar"), "wide sidebar is displayed");
|
||||
assert.dom("#d-sidebar").exists("wide sidebar is displayed");
|
||||
|
||||
await click(".header-sidebar-toggle .btn");
|
||||
|
||||
assert.ok(!exists("#d-sidebar"), "wide sidebar is collapsed");
|
||||
assert.dom("#d-sidebar").doesNotExist("wide sidebar is collapsed");
|
||||
|
||||
await click(".header-sidebar-toggle .btn");
|
||||
|
||||
assert.ok(exists("#d-sidebar"), "wide sidebar is displayed");
|
||||
assert.dom("#d-sidebar").exists("wide sidebar is displayed");
|
||||
|
||||
document.body.style.width = "767px";
|
||||
|
||||
@ -47,7 +46,7 @@ acceptance("Sidebar - Narrow Desktop", function (needs) {
|
||||
await waitFor("#d-sidebar", {
|
||||
timeout: 5000,
|
||||
});
|
||||
assert.ok(exists("#d-sidebar"), "wide sidebar is displayed");
|
||||
assert.dom("#d-sidebar").exists("wide sidebar is displayed");
|
||||
});
|
||||
|
||||
test("transition from narrow screen to wide screen", async function (assert) {
|
||||
@ -66,7 +65,6 @@ acceptance("Sidebar - Narrow Desktop", function (needs) {
|
||||
});
|
||||
|
||||
await click(".header-dropdown-toggle.current-user button");
|
||||
$(".header-dropdown-toggle.current-user").click();
|
||||
|
||||
assert.dom(".quick-access-panel").exists();
|
||||
});
|
||||
|
@ -8,7 +8,6 @@ import discoveryFixture from "discourse/tests/fixtures/discovery-fixtures";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
publishToMessageBus,
|
||||
query,
|
||||
queryAll,
|
||||
@ -49,12 +48,11 @@ acceptance(
|
||||
"there should only be one section link under the section"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"]`
|
||||
),
|
||||
`only the ${category1.slug} section link is shown`
|
||||
);
|
||||
)
|
||||
.exists(`only the ${category1.slug} section link is shown`);
|
||||
});
|
||||
}
|
||||
);
|
||||
@ -124,12 +122,11 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
".sidebar-section[data-section-name='categories'] .sidebar-section-header"
|
||||
);
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='categories'] .sidebar-section-content"
|
||||
),
|
||||
"hides the content of the section"
|
||||
);
|
||||
)
|
||||
.doesNotExist("hides the content of the section");
|
||||
});
|
||||
|
||||
test("clicking on section header button", async function (assert) {
|
||||
@ -171,12 +168,9 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
);
|
||||
|
||||
topCategories.forEach((category) => {
|
||||
assert.ok(
|
||||
exists(
|
||||
`.sidebar-section-link-wrapper[data-category-id=${category.id}]`
|
||||
),
|
||||
`${category.displayName} section link is shown`
|
||||
);
|
||||
assert
|
||||
.dom(`.sidebar-section-link-wrapper[data-category-id="${category.id}"]`)
|
||||
.exists(`${category.displayName} section link is shown`);
|
||||
});
|
||||
});
|
||||
|
||||
@ -191,12 +185,13 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${uncategorizedCategory.id}"]`
|
||||
),
|
||||
`displays the section link for ${uncategorizedCategory.slug} category`
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
`displays the section link for ${uncategorizedCategory.slug} category`
|
||||
);
|
||||
});
|
||||
|
||||
test("category section links are ordered by category name with child category sorted after parent when site setting to fix category's position is disabled", async function (assert) {
|
||||
@ -429,12 +424,13 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
"there should only be 4 section link under the section"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] .sidebar-section-link-prefix .prefix-span[style="background: linear-gradient(90deg, #${category1.color} 50%, #${category1.color} 50%)"]`
|
||||
),
|
||||
"category1 section link is rendered with solid prefix icon color"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"category1 section link is rendered with solid prefix icon color"
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
query(
|
||||
@ -462,12 +458,11 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] a.active`
|
||||
),
|
||||
"the category1 section link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the category1 section link is marked as active");
|
||||
|
||||
await click(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category2.id}"] a`
|
||||
@ -487,26 +482,25 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category2.id}"] a.active`
|
||||
),
|
||||
"the category2 section link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the category2 section link is marked as active");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category3.id}"] .sidebar-section-link-prefix .prefix-badge.d-icon-lock`
|
||||
),
|
||||
"category3 section link is rendered with lock prefix badge icon as it is read restricted"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"category3 section link is rendered with lock prefix badge icon as it is read restricted"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category4.id}"] .sidebar-section-link-prefix .prefix-span[style="background: linear-gradient(90deg, #${category4.parentCategory.color} 50%, #${category4.color} 50%)"]`
|
||||
),
|
||||
"sub category section link is rendered with double prefix color"
|
||||
);
|
||||
)
|
||||
.exists("sub category section link is rendered with double prefix color");
|
||||
});
|
||||
|
||||
test("clicking section links - sidebar_link_to_filtered_list set to true and no unread or new topics", async function (assert) {
|
||||
@ -537,12 +531,11 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] a.active`
|
||||
),
|
||||
"the category1 section link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the category1 section link is marked as active");
|
||||
});
|
||||
|
||||
test("clicking section links - sidebar_link_to_filtered_list set to true with new topics", async function (assert) {
|
||||
@ -583,12 +576,11 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] a.active`
|
||||
),
|
||||
"the category1 section link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the category1 section link is marked as active");
|
||||
});
|
||||
|
||||
test("clicking section links - sidebar_link_to_filtered_list set to true with new and unread topics", async function (assert) {
|
||||
@ -637,12 +629,11 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] a.active`
|
||||
),
|
||||
"the category1 section link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the category1 section link is marked as active");
|
||||
});
|
||||
|
||||
test("category section link for category with 3-digit hex code for color", async function (assert) {
|
||||
@ -651,12 +642,13 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] .sidebar-section-link-prefix .prefix-span[style="background: linear-gradient(90deg, #888 50%, #888 50%)"]`
|
||||
),
|
||||
"category1 section link is rendered with the right solid prefix icon color"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"category1 section link is rendered with the right solid prefix icon color"
|
||||
);
|
||||
});
|
||||
|
||||
test("category section link have the right title", async function (assert) {
|
||||
@ -693,12 +685,13 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] a.active`
|
||||
),
|
||||
"the category1 section link is marked as active for the new route"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"the category1 section link is marked as active for the new route"
|
||||
);
|
||||
});
|
||||
|
||||
test("visiting category discovery unread route", async function (assert) {
|
||||
@ -714,12 +707,13 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] a.active`
|
||||
),
|
||||
"the category1 section link is marked as active for the unread route"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"the category1 section link is marked as active for the unread route"
|
||||
);
|
||||
});
|
||||
|
||||
test("visiting category discovery top route", async function (assert) {
|
||||
@ -735,12 +729,13 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] a.active`
|
||||
),
|
||||
"the category1 section link is marked as active for the top route"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"the category1 section link is marked as active for the top route"
|
||||
);
|
||||
});
|
||||
|
||||
test("visiting category discovery no subcategories route", async function (assert) {
|
||||
@ -756,12 +751,13 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] a.active`
|
||||
),
|
||||
"the category1 section link is marked as active for the none route"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"the category1 section link is marked as active for the none route"
|
||||
);
|
||||
});
|
||||
|
||||
test("visiting category discovery includes all subcategories route", async function (assert) {
|
||||
@ -777,12 +773,13 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] a.active`
|
||||
),
|
||||
"the category1 section link is marked as active for the all route"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"the category1 section link is marked as active for the all route"
|
||||
);
|
||||
});
|
||||
|
||||
test("show suffix indicator for unread and new content on categories link", async function (assert) {
|
||||
@ -819,12 +816,11 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] .sidebar-section-link-suffix`
|
||||
),
|
||||
"shows suffix indicator for unread content on categories link"
|
||||
);
|
||||
)
|
||||
.exists("shows suffix indicator for unread content on categories link");
|
||||
|
||||
await publishToMessageBus("/unread", {
|
||||
topic_id: 2,
|
||||
@ -835,12 +831,11 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
},
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] .sidebar-section-link-suffix`
|
||||
),
|
||||
"shows suffix indicator for new topics on categories link"
|
||||
);
|
||||
)
|
||||
.exists("shows suffix indicator for new topics on categories link");
|
||||
|
||||
await publishToMessageBus("/unread", {
|
||||
topic_id: 1,
|
||||
@ -851,12 +846,13 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
},
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
!exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] .sidebar-section-link-suffix`
|
||||
),
|
||||
"hides suffix indicator when there's no new/unread content on category link"
|
||||
);
|
||||
)
|
||||
.doesNotExist(
|
||||
"hides suffix indicator when there's no new/unread content on category link"
|
||||
);
|
||||
});
|
||||
|
||||
test("new and unread count for categories link", async function (assert) {
|
||||
@ -955,12 +951,13 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
},
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
!exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-category-id="${category1.id}"] .sidebar-section-link-content-badge`
|
||||
),
|
||||
`does not display any badge ${category1.slug} section link`
|
||||
);
|
||||
)
|
||||
.doesNotExist(
|
||||
`does not display any badge ${category1.slug} section link`
|
||||
);
|
||||
|
||||
await publishToMessageBus("/unread", {
|
||||
topic_id: 3,
|
||||
@ -1006,12 +1003,13 @@ acceptance("Sidebar - Logged on user - Categories Section", function (needs) {
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section-link[data-link-name='configure-default-navigation-menu-categories']"
|
||||
),
|
||||
"section link to configure default navigation menu categories is shown"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"section link to configure default navigation menu categories is shown"
|
||||
);
|
||||
|
||||
await click(
|
||||
".sidebar-section-link[data-link-name='configure-default-navigation-menu-categories']"
|
||||
|
@ -11,7 +11,6 @@ import topicFixtures from "discourse/tests/fixtures/discovery-fixtures";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
loggedInUser,
|
||||
publishToMessageBus,
|
||||
query,
|
||||
@ -53,30 +52,29 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-content"
|
||||
),
|
||||
"additional section links are displayed"
|
||||
);
|
||||
)
|
||||
.exists("additional section links are displayed");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary[aria-expanded='true']"
|
||||
),
|
||||
"aria-expanded toggles to true when additional links are displayed"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"aria-expanded toggles to true when additional links are displayed"
|
||||
);
|
||||
|
||||
await click(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary"
|
||||
);
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-content"
|
||||
),
|
||||
"additional section links are hidden"
|
||||
);
|
||||
)
|
||||
.doesNotExist("additional section links are hidden");
|
||||
|
||||
await click(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary"
|
||||
@ -84,19 +82,21 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
|
||||
await click("#main-outlet");
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-content"
|
||||
),
|
||||
"additional section links are hidden when clicking outside"
|
||||
);
|
||||
)
|
||||
.doesNotExist(
|
||||
"additional section links are hidden when clicking outside"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary[aria-expanded='false']"
|
||||
),
|
||||
"aria-expanded toggles to false when additional links are hidden"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"aria-expanded toggles to false when additional links are hidden"
|
||||
);
|
||||
});
|
||||
|
||||
test("clicking on everything link", async function (assert) {
|
||||
@ -108,7 +108,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
assert.strictEqual(
|
||||
currentURL(),
|
||||
"/latest",
|
||||
"it should transition to the latest page"
|
||||
"should transition to the latest page"
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
@ -119,12 +119,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='everything'].active"
|
||||
),
|
||||
"the everything link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the everything link is marked as active");
|
||||
});
|
||||
|
||||
test("clicking on everything link - sidebar_link_to_filtered_list set to true and no unread or new topics", async function (assert) {
|
||||
@ -141,7 +140,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
assert.strictEqual(
|
||||
currentURL(),
|
||||
"/latest",
|
||||
"it should transition to the latest page"
|
||||
"should transition to the latest page"
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
@ -152,12 +151,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='everything'].active"
|
||||
),
|
||||
"the everything link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the everything link is marked as active");
|
||||
});
|
||||
|
||||
test("clicking on everything link - sidebar_link_to_filtered_list set to true with new topics", async function (assert) {
|
||||
@ -184,7 +182,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
assert.strictEqual(
|
||||
currentURL(),
|
||||
"/new",
|
||||
"it should transition to the new page"
|
||||
"should transition to the new page"
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
@ -195,12 +193,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='everything'].active"
|
||||
),
|
||||
"the everything link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the everything link is marked as active");
|
||||
});
|
||||
|
||||
test("clicking on everything link - sidebar_link_to_filtered_list set to true with new and unread topics", async function (assert) {
|
||||
@ -235,7 +232,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
assert.strictEqual(
|
||||
currentURL(),
|
||||
"/unread",
|
||||
"it should transition to the unread page"
|
||||
"should transition to the unread page"
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
@ -246,23 +243,23 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='everything'].active"
|
||||
),
|
||||
"the everything link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the everything link is marked as active");
|
||||
});
|
||||
|
||||
test("clicking on users link", async function (assert) {
|
||||
await visit("/t/280");
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='users']"
|
||||
),
|
||||
"users link is not displayed in sidebar when it is not the active route"
|
||||
);
|
||||
)
|
||||
.doesNotExist(
|
||||
"users link is not displayed in sidebar when it is not the active route"
|
||||
);
|
||||
|
||||
await click(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary"
|
||||
@ -275,7 +272,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
assert.strictEqual(
|
||||
currentURL(),
|
||||
"/u?order=likes_received",
|
||||
"it should transition to the users url"
|
||||
"should transition to the users url"
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
@ -286,12 +283,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='users'].active"
|
||||
),
|
||||
"the users link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the users link is marked as active");
|
||||
|
||||
assert.strictEqual(
|
||||
query(
|
||||
@ -303,12 +299,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
|
||||
await visit("/u");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='users'].active"
|
||||
),
|
||||
"users link is displayed in sidebar when it is the active route"
|
||||
);
|
||||
)
|
||||
.exists("users link is displayed in sidebar when it is the active route");
|
||||
});
|
||||
|
||||
test("users section link is not shown when enable_user_directory site setting is disabled", async function (assert) {
|
||||
@ -320,12 +315,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary"
|
||||
);
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='users']"
|
||||
),
|
||||
"users section link is not displayed in sidebar"
|
||||
);
|
||||
)
|
||||
.doesNotExist("users section link is not displayed in sidebar");
|
||||
});
|
||||
|
||||
test("clicking on badges link", async function (assert) {
|
||||
@ -342,7 +336,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
assert.strictEqual(
|
||||
currentURL(),
|
||||
"/badges",
|
||||
"it should transition to the badges url"
|
||||
"should transition to the badges url"
|
||||
);
|
||||
});
|
||||
|
||||
@ -355,23 +349,23 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary"
|
||||
);
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='badges']"
|
||||
),
|
||||
"badges section link is not shown in sidebar"
|
||||
);
|
||||
)
|
||||
.doesNotExist("badges section link is not shown in sidebar");
|
||||
});
|
||||
|
||||
test("clicking on groups link", async function (assert) {
|
||||
await visit("/t/280");
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='groups']"
|
||||
),
|
||||
"groups link is not displayed in sidebar when it is not the active route"
|
||||
);
|
||||
)
|
||||
.doesNotExist(
|
||||
"groups link is not displayed in sidebar when it is not the active route"
|
||||
);
|
||||
|
||||
await click(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary"
|
||||
@ -384,7 +378,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
assert.strictEqual(
|
||||
currentURL(),
|
||||
"/g",
|
||||
"it should transition to the groups url"
|
||||
"should transition to the groups url"
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
@ -395,12 +389,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='groups'].active"
|
||||
),
|
||||
"the groups link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the groups link is marked as active");
|
||||
|
||||
assert.strictEqual(
|
||||
query(
|
||||
@ -412,12 +405,13 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
|
||||
await visit("/g");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='groups'].active"
|
||||
),
|
||||
"groups link is displayed in sidebar when it is the active route"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"groups link is displayed in sidebar when it is the active route"
|
||||
);
|
||||
});
|
||||
|
||||
test("groups section link is not shown when enable_group_directory site setting has been disabled", async function (assert) {
|
||||
@ -429,12 +423,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary"
|
||||
);
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='groups']"
|
||||
),
|
||||
"groups section link is not shown in sidebar"
|
||||
);
|
||||
)
|
||||
.doesNotExist("groups section link is not shown in sidebar");
|
||||
});
|
||||
|
||||
test("navigating to about from sidebar", async function (assert) {
|
||||
@ -454,12 +447,13 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"navigates to about route correctly"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='about'].active"
|
||||
),
|
||||
"about section link link is displayed in the main section and marked as active"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"about section link link is displayed in the main section and marked as active"
|
||||
);
|
||||
});
|
||||
|
||||
test("navigating to FAQ from sidebar", async function (assert) {
|
||||
@ -512,11 +506,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='admin']"
|
||||
)
|
||||
);
|
||||
.doesNotExist();
|
||||
});
|
||||
|
||||
test("clicking on my posts link", async function (assert) {
|
||||
@ -528,7 +522,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
assert.strictEqual(
|
||||
currentURL(),
|
||||
`/u/${loggedInUser().username}/activity`,
|
||||
"it should transition to the user's activity url"
|
||||
"should transition to the user's activity url"
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
@ -539,21 +533,21 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='my-posts'].active"
|
||||
),
|
||||
"the my posts link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the my posts link is marked as active");
|
||||
|
||||
await visit(`/u/${loggedInUser().username}/activity/drafts`);
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='my-posts'].active"
|
||||
),
|
||||
"the my posts link is not marked as active when user has no drafts and visiting the user activity drafts URL"
|
||||
);
|
||||
)
|
||||
.doesNotExist(
|
||||
"the my posts link is not marked as active when user has no drafts and visiting the user activity drafts URL"
|
||||
);
|
||||
});
|
||||
|
||||
test("clicking on my posts link when user has a draft", async function (assert) {
|
||||
@ -570,7 +564,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
assert.strictEqual(
|
||||
currentURL(),
|
||||
`/u/${loggedInUser().username}/activity/drafts`,
|
||||
"it transitions to the user's activity drafts url"
|
||||
"transitions to the user's activity drafts url"
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
@ -581,21 +575,19 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='my-posts'].active"
|
||||
),
|
||||
"the my posts link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the my posts link is marked as active");
|
||||
|
||||
await visit(`/u/${loggedInUser().username}/activity`);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='my-posts'].active"
|
||||
),
|
||||
"the my posts link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the my posts link is marked as active");
|
||||
});
|
||||
|
||||
test("my posts title changes when drafts are present", async function (assert) {
|
||||
@ -690,12 +682,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='everything'].active"
|
||||
),
|
||||
"the everything link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the everything link is marked as active");
|
||||
});
|
||||
|
||||
test("visiting unread route", async function (assert) {
|
||||
@ -709,12 +700,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='everything'].active"
|
||||
),
|
||||
"the everything link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the everything link is marked as active");
|
||||
});
|
||||
|
||||
test("visiting new route", async function (assert) {
|
||||
@ -728,12 +718,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"only one link is marked as active"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='everything'].active"
|
||||
),
|
||||
"the everything link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("the everything link is marked as active");
|
||||
});
|
||||
|
||||
test("show suffix indicator for unread and new content on everything link", async function (assert) {
|
||||
@ -768,12 +757,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section-link[data-link-name='everything'] .sidebar-section-link-suffix"
|
||||
),
|
||||
"shows suffix indicator for unread posts on everything link"
|
||||
);
|
||||
)
|
||||
.exists("shows suffix indicator for unread posts on everything link");
|
||||
|
||||
const topicTrackingState = this.container.lookup(
|
||||
"service:topic-tracking-state"
|
||||
@ -794,17 +782,16 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
},
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section-link[data-link-name='everything'] .sidebar-section-link-suffix"
|
||||
),
|
||||
"shows suffix indicator for new topics on categories link"
|
||||
);
|
||||
)
|
||||
.exists("shows suffix indicator for new topics on categories link");
|
||||
|
||||
assert.strictEqual(
|
||||
Object.keys(topicTrackingState.stateChangeCallbacks).length,
|
||||
initialCallbackCount,
|
||||
"it does not add a new topic tracking state callback when the topic is read"
|
||||
"does not add a new topic tracking state callback when the topic is read"
|
||||
);
|
||||
|
||||
// simulate reading topic 1
|
||||
@ -818,12 +805,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
},
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
!exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section-link[data-link-name='everything'] .sidebar-section-link-suffix"
|
||||
),
|
||||
"it removes the suffix indicator when all topics are read"
|
||||
);
|
||||
)
|
||||
.doesNotExist("removes the suffix indicator when all topics are read");
|
||||
});
|
||||
|
||||
test("new and unread count for everything link", async function (assert) {
|
||||
@ -883,7 +869,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
".sidebar-section-link[data-link-name='everything'] .sidebar-section-link-content-badge"
|
||||
).textContent.trim(),
|
||||
"3 unread",
|
||||
"it displays the right unread count"
|
||||
"displays the right unread count"
|
||||
);
|
||||
|
||||
// simulate reading topic 2
|
||||
@ -902,7 +888,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
".sidebar-section-link[data-link-name='everything'] .sidebar-section-link-content-badge"
|
||||
).textContent.trim(),
|
||||
"2 unread",
|
||||
"it updates the unread count"
|
||||
"updates the unread count"
|
||||
);
|
||||
|
||||
// simulate reading topic 3
|
||||
@ -932,7 +918,7 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
".sidebar-section-link[data-link-name='everything'] .sidebar-section-link-content-badge"
|
||||
).textContent.trim(),
|
||||
"1 new",
|
||||
"it displays the new count once there are no unread topics"
|
||||
"displays the new count once there are no unread topics"
|
||||
);
|
||||
|
||||
await publishToMessageBus("/unread", {
|
||||
@ -945,12 +931,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
},
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
!exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section-link[data-link-name='everything'] .sidebar-section-link-content-badge"
|
||||
),
|
||||
"it removes new count once there are no new topics"
|
||||
);
|
||||
)
|
||||
.doesNotExist("removes new count once there are no new topics");
|
||||
});
|
||||
|
||||
test("review link is not shown when user cannot review", async function (assert) {
|
||||
@ -958,23 +943,21 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='review']"
|
||||
),
|
||||
"review link is not shown"
|
||||
);
|
||||
)
|
||||
.doesNotExist("review link is not shown");
|
||||
|
||||
await click(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary"
|
||||
);
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='review']"
|
||||
),
|
||||
"review link is not shown"
|
||||
);
|
||||
)
|
||||
.doesNotExist("review link is not shown");
|
||||
});
|
||||
|
||||
test("review link when user can review", async function (assert) {
|
||||
@ -985,43 +968,43 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
|
||||
await visit("/review");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='review'].active"
|
||||
),
|
||||
"review link is shown as active when visiting the review route even if there are no pending reviewables"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"review link is shown as active when visiting the review route even if there are no pending reviewables"
|
||||
);
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='review']"
|
||||
),
|
||||
"review link is not shown as part of the main section links"
|
||||
);
|
||||
)
|
||||
.doesNotExist(
|
||||
"review link is not shown as part of the main section links"
|
||||
);
|
||||
|
||||
await click(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-content .sidebar-section-link[data-link-name='review']"
|
||||
),
|
||||
"review link is displayed in the more drawer"
|
||||
);
|
||||
)
|
||||
.exists("review link is displayed in the more drawer");
|
||||
|
||||
await publishToMessageBus(`/reviewable_counts/${loggedInUser().id}`, {
|
||||
reviewable_count: 34,
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-section-link[data-link-name='review']"
|
||||
),
|
||||
"review link is shown as part of the main section links"
|
||||
);
|
||||
)
|
||||
.exists("review link is shown as part of the main section links");
|
||||
|
||||
assert.strictEqual(
|
||||
query(
|
||||
@ -1035,12 +1018,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-summary"
|
||||
);
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='community'] .sidebar-more-section-links-details-content .sidebar-section-link[data-link-name='review']"
|
||||
),
|
||||
"review link is not displayed in the more drawer"
|
||||
);
|
||||
)
|
||||
.doesNotExist("review link is not displayed in the more drawer");
|
||||
});
|
||||
|
||||
test("adding section link via plugin API with Object", async function (assert) {
|
||||
@ -1074,12 +1056,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"displays the right title for the link"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section-link[data-link-name='unread'] .sidebar-section-link-prefix.icon .d-icon-wrench"
|
||||
),
|
||||
"displays the wrench icon for the link"
|
||||
);
|
||||
)
|
||||
.exists("displays the wrench icon for the link");
|
||||
|
||||
await click(".sidebar-section-link[data-link-name='unread']");
|
||||
|
||||
@ -1147,12 +1128,11 @@ acceptance("Sidebar - Logged on user - Community Section", function (needs) {
|
||||
"displays the right title for the link"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section-link[data-link-name='user-summary'] .sidebar-section-link-prefix.icon .d-icon-link"
|
||||
),
|
||||
"displays the link icon for the link"
|
||||
);
|
||||
)
|
||||
.exists("displays the link icon for the link");
|
||||
|
||||
await click(".btn-sidebar-toggle");
|
||||
|
||||
|
@ -4,7 +4,6 @@ import { NotificationLevels } from "discourse/lib/notification-levels";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
publishToMessageBus,
|
||||
query,
|
||||
queryAll,
|
||||
@ -28,10 +27,9 @@ acceptance(
|
||||
test("clicking on section header button", async function (assert) {
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
!exists(".sidebar-section[data-section-name='messages']"),
|
||||
"does not display messages section in sidebar"
|
||||
);
|
||||
assert
|
||||
.dom(".sidebar-section[data-section-name='messages']")
|
||||
.doesNotExist("does not display messages section in sidebar");
|
||||
});
|
||||
}
|
||||
);
|
||||
@ -78,10 +76,7 @@ acceptance(
|
||||
".sidebar-section[data-section-name='messages'] .sidebar-section-header-button"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists("#reply-control.private-message"),
|
||||
"it opens the composer"
|
||||
);
|
||||
assert.dom("#reply-control.private-message").exists("opens the composer");
|
||||
});
|
||||
|
||||
test("clicking on section header link", async function (assert) {
|
||||
@ -100,12 +95,11 @@ acceptance(
|
||||
test("personal messages section links", async function (assert) {
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='messages'] .sidebar-section-link[data-link-name='personal-messages-inbox']"
|
||||
),
|
||||
"displays the personal message inbox link"
|
||||
);
|
||||
)
|
||||
.exists("displays the personal message inbox link");
|
||||
|
||||
assert.strictEqual(
|
||||
count(
|
||||
@ -119,12 +113,11 @@ acceptance(
|
||||
".sidebar-section[data-section-name='messages'] .sidebar-section-link[data-link-name='personal-messages-inbox']"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='messages'] .sidebar-section-link[data-link-name='personal-messages-inbox'].active"
|
||||
),
|
||||
"personal message inbox link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("personal message inbox link is marked as active");
|
||||
|
||||
assert.strictEqual(
|
||||
count(
|
||||
@ -161,19 +154,17 @@ acceptance(
|
||||
"only two links are marked as active in the sidebar"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='messages'] .sidebar-section-link[data-link-name='personal-messages-inbox'].active"
|
||||
),
|
||||
"personal message inbox link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("personal message inbox link is marked as active");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section[data-section-name='messages'] .sidebar-section-link[data-link-name='personal-messages-${type}'].active`
|
||||
),
|
||||
`personal message ${type} link is marked as active`
|
||||
);
|
||||
)
|
||||
.exists(`personal message ${type} link is marked as active`);
|
||||
|
||||
assert
|
||||
.dom(
|
||||
@ -299,19 +290,17 @@ acceptance(
|
||||
"only two links are marked as active in the sidebar"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='messages'] .sidebar-section-link[data-link-name='group-messages-inbox'].group1.active"
|
||||
),
|
||||
"group1 group message inbox link is marked as active"
|
||||
);
|
||||
)
|
||||
.exists("group1 group message inbox link is marked as active");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section[data-section-name='messages'] .sidebar-section-link[data-link-name='group-messages-${type}'].group1.active`
|
||||
),
|
||||
`group1 group message ${type} link is marked as active`
|
||||
);
|
||||
)
|
||||
.exists(`group1 group message ${type} link is marked as active`);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -5,7 +5,6 @@ import discoveryFixture from "discourse/tests/fixtures/discovery-fixtures";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
publishToMessageBus,
|
||||
query,
|
||||
updateCurrentUser,
|
||||
@ -377,26 +376,25 @@ acceptance("Sidebar - Logged on user - Tags section", function (needs) {
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-tag-name=tag1] .sidebar-section-link-suffix`
|
||||
),
|
||||
"shows suffix indicator for new content on tag1 link"
|
||||
);
|
||||
)
|
||||
.exists("shows suffix indicator for new content on tag1 link");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-tag-name=tag2] .sidebar-section-link-suffix`
|
||||
),
|
||||
"shows suffix indicator for new content on tag2 link"
|
||||
);
|
||||
)
|
||||
.exists("shows suffix indicator for new content on tag2 link");
|
||||
|
||||
assert.ok(
|
||||
!exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-tag-name=tag3] .sidebar-section-link-suffix`
|
||||
),
|
||||
"hides suffix indicator when there's no new content on tag3 link"
|
||||
);
|
||||
)
|
||||
.doesNotExist(
|
||||
"hides suffix indicator when there's no new content on tag3 link"
|
||||
);
|
||||
|
||||
await publishToMessageBus("/unread", {
|
||||
topic_id: 2,
|
||||
@ -407,12 +405,11 @@ acceptance("Sidebar - Logged on user - Tags section", function (needs) {
|
||||
},
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-tag-name=tag1] .sidebar-section-link-suffix`
|
||||
),
|
||||
"shows suffix indicator for new topic on tag1 link"
|
||||
);
|
||||
)
|
||||
.exists("shows suffix indicator for new topic on tag1 link");
|
||||
|
||||
await publishToMessageBus("/unread", {
|
||||
topic_id: 1,
|
||||
@ -423,12 +420,11 @@ acceptance("Sidebar - Logged on user - Tags section", function (needs) {
|
||||
},
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
!exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-tag-name=tag1] .sidebar-section-link-suffix`
|
||||
),
|
||||
"hides suffix indicator for tag1 section link"
|
||||
);
|
||||
)
|
||||
.doesNotExist("hides suffix indicator for tag1 section link");
|
||||
});
|
||||
|
||||
test("new and unread count for tag section links", async function (assert) {
|
||||
@ -503,12 +499,11 @@ acceptance("Sidebar - Logged on user - Tags section", function (needs) {
|
||||
`displays 1 unread count for tag2 section link`
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-tag-name=tag3] .sidebar-section-link-content-badge`
|
||||
),
|
||||
"does not display any badge for tag3 section link"
|
||||
);
|
||||
)
|
||||
.doesNotExist("does not display any badge for tag3 section link");
|
||||
|
||||
await publishToMessageBus("/unread", {
|
||||
topic_id: 2,
|
||||
@ -536,12 +531,11 @@ acceptance("Sidebar - Logged on user - Tags section", function (needs) {
|
||||
},
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
!exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-section-link-wrapper[data-tag-name=tag1] .sidebar-section-link-content-badge`
|
||||
),
|
||||
`does not display any badge tag1 section link`
|
||||
);
|
||||
)
|
||||
.doesNotExist(`does not display any badge tag1 section link`);
|
||||
});
|
||||
|
||||
test("cleans up topic tracking state state changed callbacks when section is destroyed", async function (assert) {
|
||||
@ -572,12 +566,11 @@ acceptance("Sidebar - Logged on user - Tags section", function (needs) {
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section-link[data-link-name='configure-default-navigation-menu-tags']"
|
||||
),
|
||||
"section link to configure default sidebar tags is shown"
|
||||
);
|
||||
)
|
||||
.exists("section link to configure default sidebar tags is shown");
|
||||
|
||||
await click(
|
||||
".sidebar-section-link[data-link-name='configure-default-navigation-menu-tags']"
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import Sinon from "sinon";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
updateCurrentUser,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
@ -23,10 +22,9 @@ acceptance(
|
||||
await visit("/");
|
||||
await click("#toggle-hamburger-menu");
|
||||
|
||||
assert.ok(
|
||||
exists(".sidebar-section-header.sidebar-section-header-collapsable"),
|
||||
"sections are collapsable"
|
||||
);
|
||||
assert
|
||||
.dom(".sidebar-section-header.sidebar-section-header-collapsable")
|
||||
.exists("sections are collapsable");
|
||||
});
|
||||
}
|
||||
);
|
||||
@ -44,42 +42,39 @@ acceptance(
|
||||
await visit("/");
|
||||
await click("#toggle-hamburger-menu");
|
||||
|
||||
assert.ok(
|
||||
exists(".sidebar-hamburger-dropdown"),
|
||||
"displays the sidebar dropdown"
|
||||
);
|
||||
assert
|
||||
.dom(".sidebar-hamburger-dropdown")
|
||||
.exists("displays the sidebar dropdown");
|
||||
|
||||
await click("#toggle-hamburger-menu");
|
||||
|
||||
assert.notOk(
|
||||
exists(".sidebar-hamburger-dropdown"),
|
||||
"hides the sidebar dropdown"
|
||||
);
|
||||
assert
|
||||
.dom(".sidebar-hamburger-dropdown")
|
||||
.doesNotExist("hides the sidebar dropdown");
|
||||
});
|
||||
|
||||
test("sections are not collapsable", async function (assert) {
|
||||
await visit("/");
|
||||
await click("#toggle-hamburger-menu");
|
||||
|
||||
assert.notOk(
|
||||
exists(".sidebar-section-header.sidebar-section-header-collapsable"),
|
||||
"sections are not collapsable"
|
||||
);
|
||||
assert
|
||||
.dom(".sidebar-section-header.sidebar-section-header-collapsable")
|
||||
.doesNotExist("sections are not collapsable");
|
||||
});
|
||||
|
||||
test("'more' dropdown should display as regular list items in header dropdown mode", async function (assert) {
|
||||
await visit("/");
|
||||
await click("#toggle-hamburger-menu");
|
||||
|
||||
assert.ok(
|
||||
exists("[data-link-name='admin']"),
|
||||
"the admin link is not within the 'more' dropdown"
|
||||
);
|
||||
assert
|
||||
.dom("[data-link-name='admin']")
|
||||
.exists("the admin link is not within the 'more' dropdown");
|
||||
|
||||
assert.notOk(
|
||||
exists(".sidebar-more-section-links-details-summary"),
|
||||
"the 'more' dropdown should not be present in header dropdown mode"
|
||||
);
|
||||
assert
|
||||
.dom(".sidebar-more-section-links-details-summary")
|
||||
.doesNotExist(
|
||||
"the 'more' dropdown should not be present in header dropdown mode"
|
||||
);
|
||||
});
|
||||
}
|
||||
);
|
||||
@ -101,19 +96,17 @@ acceptance(
|
||||
)}"]`
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists("#keyboard-shortcuts-help"),
|
||||
"keyboard shortcuts help is displayed"
|
||||
);
|
||||
assert
|
||||
.dom("#keyboard-shortcuts-help")
|
||||
.exists("keyboard shortcuts help is displayed");
|
||||
});
|
||||
|
||||
test("sidebar is disabled on wizard route", async function (assert) {
|
||||
await visit("/wizard");
|
||||
|
||||
assert.notOk(
|
||||
exists(".sidebar-container"),
|
||||
"does not display the sidebar on wizard route"
|
||||
);
|
||||
assert
|
||||
.dom(".sidebar-container")
|
||||
.doesNotExist("does not display the sidebar on wizard route");
|
||||
});
|
||||
|
||||
test("showing and hiding sidebar", async function (assert) {
|
||||
@ -124,10 +117,9 @@ acceptance(
|
||||
"adds sidebar utility class to body"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(".sidebar-container"),
|
||||
"displays the sidebar by default"
|
||||
);
|
||||
assert
|
||||
.dom(".sidebar-container")
|
||||
.exists("displays the sidebar by default");
|
||||
|
||||
await click(".btn-sidebar-toggle");
|
||||
|
||||
@ -136,11 +128,11 @@ acceptance(
|
||||
"removes sidebar utility class from body"
|
||||
);
|
||||
|
||||
assert.ok(!exists(".sidebar-container"), "hides the sidebar");
|
||||
assert.dom(".sidebar-container").doesNotExist("hides the sidebar");
|
||||
|
||||
await click(".btn-sidebar-toggle");
|
||||
|
||||
assert.ok(exists(".sidebar-container"), "displays the sidebar");
|
||||
assert.dom(".sidebar-container").exists("displays the sidebar");
|
||||
});
|
||||
|
||||
test("button to toggle between mobile and desktop view on touch devices ", async function (assert) {
|
||||
@ -149,21 +141,19 @@ acceptance(
|
||||
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
`.sidebar-footer-actions-toggle-mobile-view[title="${I18n.t(
|
||||
"mobile_view"
|
||||
)}"]`
|
||||
),
|
||||
"displays the right title for the button"
|
||||
);
|
||||
)
|
||||
.exists("displays the right title for the button");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-footer-actions-toggle-mobile-view .d-icon-mobile-screen-button"
|
||||
),
|
||||
"displays the mobile icon for the button"
|
||||
);
|
||||
)
|
||||
.exists("displays the mobile icon for the button");
|
||||
});
|
||||
|
||||
test("clean up topic tracking state state changed callbacks when sidebar is destroyed", async function (assert) {
|
||||
@ -191,32 +181,35 @@ acceptance(
|
||||
test("accessibility of sidebar section header", async function (assert) {
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='categories'] .sidebar-section-header[aria-expanded='true'][aria-controls='sidebar-section-content-categories']"
|
||||
),
|
||||
"accessibility attributes are set correctly on sidebar section header when section is expanded"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"accessibility attributes are set correctly on sidebar section header when section is expanded"
|
||||
);
|
||||
|
||||
await click(".sidebar-section-header");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".sidebar-section[data-section-name='categories'] .sidebar-section-header[aria-expanded='false'][aria-controls='sidebar-section-content-categories']"
|
||||
),
|
||||
"accessibility attributes are set correctly on sidebar section header when section is collapsed"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"accessibility attributes are set correctly on sidebar section header when section is collapsed"
|
||||
);
|
||||
});
|
||||
|
||||
test("accessibility of sidebar toggle", async function (assert) {
|
||||
await visit("/");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".btn-sidebar-toggle[aria-expanded='true'][aria-controls='d-sidebar']"
|
||||
),
|
||||
"has the right accessibility attributes set when sidebar is expanded"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"has the right accessibility attributes set when sidebar is expanded"
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
query(".btn-sidebar-toggle").title,
|
||||
@ -226,12 +219,13 @@ acceptance(
|
||||
|
||||
await click(".btn-sidebar-toggle");
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".btn-sidebar-toggle[aria-expanded='false'][aria-controls='d-sidebar']"
|
||||
),
|
||||
"has the right accessibility attributes set when sidebar is collapsed"
|
||||
);
|
||||
)
|
||||
.exists(
|
||||
"has the right accessibility attributes set when sidebar is collapsed"
|
||||
);
|
||||
|
||||
assert.strictEqual(
|
||||
query(".btn-sidebar-toggle").title,
|
||||
|
@ -1,18 +1,18 @@
|
||||
import { click, fillIn, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Signing In", function () {
|
||||
test("sign in", async function (assert) {
|
||||
await visit("/");
|
||||
await click("header .login-button");
|
||||
assert.ok(exists(".login-modal"), "it shows the login modal");
|
||||
assert.dom(".login-modal").exists("shows the login modal");
|
||||
|
||||
// Test invalid password first
|
||||
await fillIn("#login-account-name", "eviltrout");
|
||||
await fillIn("#login-account-password", "incorrect");
|
||||
await click(".d-modal__footer .btn-primary");
|
||||
assert.ok(exists("#modal-alert:visible"), "it displays the login error");
|
||||
assert.dom("#modal-alert").exists("displays the login error");
|
||||
assert
|
||||
.dom(".d-modal__footer .btn-primary:disabled")
|
||||
.doesNotExist("enables the login button");
|
||||
@ -37,7 +37,7 @@ acceptance("Signing In", function () {
|
||||
test("sign in - not activated", async function (assert) {
|
||||
await visit("/");
|
||||
await click("header .login-button");
|
||||
assert.ok(exists(".login-modal"), "it shows the login modal");
|
||||
assert.dom(".login-modal").exists("shows the login modal");
|
||||
|
||||
await fillIn("#login-account-name", "eviltrout");
|
||||
await fillIn("#login-account-password", "not-activated");
|
||||
@ -45,19 +45,23 @@ acceptance("Signing In", function () {
|
||||
assert
|
||||
.dom(".d-modal__body b")
|
||||
.hasText("<small>eviltrout@example.com</small>");
|
||||
assert.ok(!exists(".d-modal__body small"), "it escapes the email address");
|
||||
assert
|
||||
.dom(".d-modal__body small")
|
||||
.doesNotExist("escapes the email address");
|
||||
|
||||
await click(".d-modal__footer button.resend");
|
||||
assert
|
||||
.dom(".d-modal__body b")
|
||||
.hasText("<small>current@example.com</small>");
|
||||
assert.ok(!exists(".d-modal__body small"), "it escapes the email address");
|
||||
assert
|
||||
.dom(".d-modal__body small")
|
||||
.doesNotExist("escapes the email address");
|
||||
});
|
||||
|
||||
test("sign in - not activated - edit email", async function (assert) {
|
||||
await visit("/");
|
||||
await click("header .login-button");
|
||||
assert.dom(".login-modal").exists("it shows the login modal");
|
||||
assert.dom(".login-modal").exists("shows the login modal");
|
||||
|
||||
await fillIn("#login-account-name", "eviltrout");
|
||||
await fillIn("#login-account-password", "not-activated-edit");
|
||||
@ -77,7 +81,7 @@ acceptance("Signing In", function () {
|
||||
await visit("/");
|
||||
await click("header .login-button");
|
||||
|
||||
assert.ok(exists(".login-modal"), "it shows the login modal");
|
||||
assert.dom(".login-modal").exists("shows the login modal");
|
||||
|
||||
await fillIn("#login-account-name", "eviltrout");
|
||||
await fillIn("#login-account-password", "need-second-factor");
|
||||
@ -103,7 +107,7 @@ acceptance("Signing In", function () {
|
||||
await visit("/");
|
||||
await click("header .login-button");
|
||||
|
||||
assert.ok(exists(".login-modal"), "it shows the login modal");
|
||||
assert.dom(".login-modal").exists("shows the login modal");
|
||||
|
||||
await fillIn("#login-account-name", "eviltrout");
|
||||
await fillIn("#login-account-password", "need-security-key");
|
||||
@ -131,7 +135,7 @@ acceptance("Signing In", function () {
|
||||
|
||||
assert
|
||||
.dom(".d-modal__footer .btn-primary:disabled")
|
||||
.exists("it closes the modal when the code is valid");
|
||||
.exists("closes the modal when the code is valid");
|
||||
});
|
||||
|
||||
test("second factor backup - invalid token", async function (assert) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { click, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import pretender, { response } from "discourse/tests/helpers/create-pretender";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Tags intersection", function (needs) {
|
||||
needs.user();
|
||||
@ -28,7 +28,7 @@ acceptance("Tags intersection", function (needs) {
|
||||
await visit("/tags/intersection/first/second");
|
||||
await click("#create-topic");
|
||||
|
||||
assert.ok(exists(".mini-tag-chooser"), "The tag selector appears");
|
||||
assert.dom(".mini-tag-chooser").exists("the tag selector appears");
|
||||
assert
|
||||
.dom(".composer-fields .mini-tag-chooser")
|
||||
.hasText("first, second", "populates the tags when clicking 'New topic'");
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
invisible,
|
||||
query,
|
||||
queryAll,
|
||||
@ -112,7 +111,7 @@ acceptance("Tags", function (needs) {
|
||||
document.body.classList.contains("tags-page"),
|
||||
"has the body class"
|
||||
);
|
||||
assert.ok(exists(`[data-tag-name="eviltrout"]`), "shows the eviltrout tag");
|
||||
assert.dom(`[data-tag-name="eviltrout"]`).exists("shows the eviltrout tag");
|
||||
});
|
||||
|
||||
test("dismiss notifications", async function (assert) {
|
||||
@ -434,7 +433,7 @@ acceptance("Tag info", function (needs) {
|
||||
assert.strictEqual(count("#show-tag-info"), 1);
|
||||
|
||||
await click("#show-tag-info");
|
||||
assert.ok(exists(".tag-info .tag-name"), "show tag");
|
||||
assert.dom(".tag-info .tag-name").exists("show tag");
|
||||
assert.ok(
|
||||
query(".tag-info .tag-associations").innerText.includes("Gardening"),
|
||||
"show tag group names"
|
||||
@ -449,9 +448,9 @@ acceptance("Tag info", function (needs) {
|
||||
1,
|
||||
"show the category"
|
||||
);
|
||||
assert.ok(!exists("#rename-tag"), "can't rename tag");
|
||||
assert.ok(!exists("#edit-synonyms"), "can't edit synonyms");
|
||||
assert.ok(!exists("#delete-tag"), "can't delete tag");
|
||||
assert.dom("#rename-tag").doesNotExist("can't rename tag");
|
||||
assert.dom("#edit-synonyms").doesNotExist("can't edit synonyms");
|
||||
assert.dom("#delete-tag").doesNotExist("can't delete tag");
|
||||
});
|
||||
|
||||
test("tag info hides only current tag in synonyms dropdown", async function (assert) {
|
||||
@ -461,7 +460,7 @@ acceptance("Tag info", function (needs) {
|
||||
assert.strictEqual(count("#show-tag-info"), 1);
|
||||
|
||||
await click("#show-tag-info");
|
||||
assert.ok(exists(".tag-info .tag-name"), "show tag");
|
||||
assert.dom(".tag-info .tag-name").exists("show tag");
|
||||
|
||||
await click("#edit-synonyms");
|
||||
|
||||
@ -483,7 +482,7 @@ acceptance("Tag info", function (needs) {
|
||||
assert.strictEqual(count("#show-tag-info"), 1);
|
||||
|
||||
await click("#show-tag-info");
|
||||
assert.ok(exists(".tag-info .tag-name"), "show tag");
|
||||
assert.dom(".tag-info .tag-name").exists("show tag");
|
||||
|
||||
await click(".edit-tag");
|
||||
assert.strictEqual(
|
||||
@ -600,9 +599,9 @@ acceptance("Tag info", function (needs) {
|
||||
assert.strictEqual(count("#show-tag-info"), 1);
|
||||
|
||||
await click("#show-tag-info");
|
||||
assert.ok(exists(".edit-tag"), "can rename tag");
|
||||
assert.ok(exists("#edit-synonyms"), "can edit synonyms");
|
||||
assert.ok(exists("#delete-tag"), "can delete tag");
|
||||
assert.dom(".edit-tag").exists("can rename tag");
|
||||
assert.dom("#edit-synonyms").exists("can edit synonyms");
|
||||
assert.dom("#delete-tag").exists("can delete tag");
|
||||
|
||||
await click("#edit-synonyms");
|
||||
assert.strictEqual(
|
||||
|
@ -1,10 +1,6 @@
|
||||
import { click, fillIn, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
acceptance("Theme", function (needs) {
|
||||
@ -189,20 +185,14 @@ acceptance("Theme", function (needs) {
|
||||
);
|
||||
await click(".install-theme-content button.advanced-repo");
|
||||
|
||||
assert.notOk(
|
||||
exists(
|
||||
".admin-install-theme-modal .d-modal__footer .install-theme-warning"
|
||||
),
|
||||
"no Git warning is displayed"
|
||||
);
|
||||
assert
|
||||
.dom(".admin-install-theme-modal .d-modal__footer .install-theme-warning")
|
||||
.doesNotExist("no Git warning is displayed");
|
||||
|
||||
await click(".admin-install-theme-modal .d-modal__footer .btn-primary");
|
||||
assert.ok(
|
||||
exists(
|
||||
".admin-install-theme-modal .d-modal__footer .install-theme-warning"
|
||||
),
|
||||
"Git warning is displayed"
|
||||
);
|
||||
assert
|
||||
.dom(".admin-install-theme-modal .d-modal__footer .install-theme-warning")
|
||||
.exists("Git warning is displayed");
|
||||
|
||||
await click(".admin-install-theme-modal .d-modal__footer .btn-danger");
|
||||
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import { withPluginApi } from "discourse/lib/plugin-api";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
updateCurrentUser,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "discourse-i18n";
|
||||
@ -11,7 +10,7 @@ import I18n from "discourse-i18n";
|
||||
acceptance("Topic - Admin Menu Anonymous Users", function () {
|
||||
test("Enter as a regular user", async function (assert) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
assert.ok(exists("#topic"), "The topic was rendered");
|
||||
assert.dom("#topic").exists("the topic is rendered");
|
||||
assert
|
||||
.dom(".toggle-admin-menu")
|
||||
.doesNotExist("The admin menu button was not rendered");
|
||||
@ -24,20 +23,20 @@ acceptance("Topic - Admin Menu", function (needs) {
|
||||
updateCurrentUser({ moderator: false, admin: false, trust_level: 1 });
|
||||
|
||||
await visit("/t/topic-for-group-moderators/2480");
|
||||
assert.ok(exists("#topic"), "The topic was rendered");
|
||||
assert.dom("#topic").exists("the topic is rendered");
|
||||
assert
|
||||
.dom(".toggle-admin-menu")
|
||||
.exists("The admin menu button was rendered");
|
||||
|
||||
await click(".toggle-admin-menu");
|
||||
assert.ok(exists(".topic-admin-delete"), "The delete item was rendered");
|
||||
assert.dom(".topic-admin-delete").exists("the delete item is rendered");
|
||||
});
|
||||
|
||||
test("Enter as a user with moderator and admin permissions", async function (assert) {
|
||||
updateCurrentUser({ moderator: true, admin: true, trust_level: 4 });
|
||||
|
||||
await visit("/t/internationalization-localization/280");
|
||||
assert.ok(exists("#topic"), "The topic was rendered");
|
||||
assert.dom("#topic").exists("the topic is rendered");
|
||||
assert
|
||||
.dom(".toggle-admin-menu")
|
||||
.exists("The admin menu button was rendered");
|
||||
@ -61,7 +60,7 @@ acceptance("Topic - Admin Menu", function (needs) {
|
||||
});
|
||||
|
||||
await visit("/t/internationalization-localization/280");
|
||||
assert.ok(exists("#topic"), "The topic was rendered");
|
||||
assert.dom("#topic").exists("the topic is rendered");
|
||||
await click(".toggle-admin-menu");
|
||||
assert
|
||||
.dom(".extra-button svg.d-icon-heart")
|
||||
|
@ -1,12 +1,12 @@
|
||||
import { visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Topic - Anonymous", function () {
|
||||
test("Enter a Topic", async function (assert) {
|
||||
await visit("/t/internationalization-localization/280/1");
|
||||
assert.ok(exists("#topic"), "The topic was rendered");
|
||||
assert.ok(exists("#topic .cooked"), "The topic has cooked posts");
|
||||
assert.dom("#topic").exists("The topic was rendered");
|
||||
assert.dom("#topic .cooked").exists("The topic has cooked posts");
|
||||
assert
|
||||
.dom(".shared-draft-notice")
|
||||
.doesNotExist("no shared draft unless there's a dest category id");
|
||||
@ -14,24 +14,24 @@ acceptance("Topic - Anonymous", function () {
|
||||
|
||||
test("Enter without an id", async function (assert) {
|
||||
await visit("/t/internationalization-localization");
|
||||
assert.ok(exists("#topic"), "The topic was rendered");
|
||||
assert.dom("#topic").exists("The topic was rendered");
|
||||
});
|
||||
|
||||
test("Enter a 404 topic", async function (assert) {
|
||||
await visit("/t/not-found/404");
|
||||
assert.ok(!exists("#topic"), "The topic was not rendered");
|
||||
assert.ok(exists(".topic-error"), "An error message is displayed");
|
||||
assert.dom("#topic").doesNotExist("The topic was not rendered");
|
||||
assert.dom(".topic-error").exists("An error message is displayed");
|
||||
});
|
||||
|
||||
test("Enter without access", async function (assert) {
|
||||
await visit("/t/i-dont-have-access/403");
|
||||
assert.ok(!exists("#topic"), "The topic was not rendered");
|
||||
assert.ok(exists(".topic-error"), "An error message is displayed");
|
||||
assert.dom("#topic").doesNotExist("The topic was not rendered");
|
||||
assert.dom(".topic-error").exists("An error message is displayed");
|
||||
});
|
||||
|
||||
test("Enter with 500 errors", async function (assert) {
|
||||
await visit("/t/throws-error/500");
|
||||
assert.ok(!exists("#topic"), "The topic was not rendered");
|
||||
assert.ok(exists(".topic-error"), "An error message is displayed");
|
||||
assert.dom("#topic").doesNotExist("The topic was not rendered");
|
||||
assert.dom(".topic-error").exists("An error message is displayed");
|
||||
});
|
||||
});
|
||||
|
@ -6,7 +6,6 @@ import discoveryFixtures from "discourse/tests/fixtures/discovery-fixtures";
|
||||
import topFixtures from "discourse/tests/fixtures/top-fixtures";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
publishToMessageBus,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
@ -30,8 +29,8 @@ acceptance("Topic Discovery", function (needs) {
|
||||
document.body.classList.contains("navigation-topics"),
|
||||
"has the default navigation"
|
||||
);
|
||||
assert.ok(exists(".topic-list"), "The list of topics was rendered");
|
||||
assert.ok(exists(".topic-list .topic-list-item"), "has topics");
|
||||
assert.dom(".topic-list").exists("the list of topics was rendered");
|
||||
assert.dom(".topic-list .topic-list-item").exists("has topics");
|
||||
|
||||
assert
|
||||
.dom("a[data-user-card=eviltrout] img.avatar")
|
||||
@ -50,9 +49,9 @@ acceptance("Topic Discovery", function (needs) {
|
||||
);
|
||||
|
||||
await visit("/c/bug");
|
||||
assert.ok(exists(".topic-list"), "The list of topics was rendered");
|
||||
assert.ok(exists(".topic-list .topic-list-item"), "has topics");
|
||||
assert.ok(!exists(".category-list"), "doesn't render subcategories");
|
||||
assert.dom(".topic-list").exists("the list of topics was rendered");
|
||||
assert.dom(".topic-list .topic-list-item").exists("has topics");
|
||||
assert.dom(".category-list").doesNotExist("doesn't render subcategories");
|
||||
assert.ok(
|
||||
document.body.classList.contains("category-bug"),
|
||||
"has a custom css class for the category id on the body"
|
||||
@ -67,7 +66,7 @@ acceptance("Topic Discovery", function (needs) {
|
||||
!document.body.classList.contains("category-bug"),
|
||||
"removes the custom category class"
|
||||
);
|
||||
assert.ok(exists(".category"), "has a list of categories");
|
||||
assert.dom(".category").exists("has a list of categories");
|
||||
assert.ok(
|
||||
document.body.classList.contains("categories-list"),
|
||||
"has a custom class to indicate categories"
|
||||
@ -78,16 +77,16 @@ acceptance("Topic Discovery", function (needs) {
|
||||
!document.body.classList.contains("categories-list"),
|
||||
"removes the `categories-list` class"
|
||||
);
|
||||
assert.ok(exists(".topic-list .topic-list-item"), "has topics");
|
||||
assert.dom(".topic-list .topic-list-item").exists("has topics");
|
||||
|
||||
await visit("/c/feature");
|
||||
assert.ok(exists(".topic-list"), "The list of topics was rendered");
|
||||
assert.dom(".topic-list").exists("The list of topics was rendered");
|
||||
assert
|
||||
.dom(".category-boxes")
|
||||
.exists("The list of subcategories were rendered with box style");
|
||||
|
||||
await visit("/c/dev");
|
||||
assert.ok(exists(".topic-list"), "The list of topics was rendered");
|
||||
assert.dom(".topic-list").exists("The list of topics was rendered");
|
||||
assert
|
||||
.dom(".category-boxes-with-topics")
|
||||
.exists(
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import topicFixtures from "discourse/tests/fixtures/topic";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
queryAll,
|
||||
selectText,
|
||||
@ -34,8 +33,8 @@ acceptance("Topic - Quote button - logged in", function (needs) {
|
||||
test("Does not show the quote share buttons by default", async function (assert) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
await selectText("#post_5 blockquote");
|
||||
assert.ok(exists(".insert-quote"), "it shows the quote button");
|
||||
assert.ok(!exists(".quote-sharing"), "it does not show quote sharing");
|
||||
assert.dom(".insert-quote").exists("shows the quote button");
|
||||
assert.dom(".quote-sharing").doesNotExist("does not show quote sharing");
|
||||
});
|
||||
|
||||
test("Shows quote share buttons with the right site settings", async function (assert) {
|
||||
@ -44,7 +43,7 @@ acceptance("Topic - Quote button - logged in", function (needs) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
await selectText("#post_5 blockquote");
|
||||
|
||||
assert.ok(exists(".quote-sharing"), "it shows the quote sharing options");
|
||||
assert.dom(".quote-sharing").exists("shows the quote sharing options");
|
||||
assert
|
||||
.dom(`.quote-sharing .btn[title='${I18n.t("share.twitter")}']`)
|
||||
.exists("it includes the twitter share button");
|
||||
@ -80,7 +79,7 @@ acceptance("Closed Topic - Quote button - logged in", function (needs) {
|
||||
test("Shows quote button in closed topics", async function (assert) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
await selectText("#post_1 .cooked p:first-child");
|
||||
assert.ok(exists(".insert-quote"), "it shows the quote button");
|
||||
assert.dom(".insert-quote").exists("shows the quote button");
|
||||
|
||||
await click(".insert-quote");
|
||||
assert.ok(
|
||||
@ -109,7 +108,9 @@ acceptance("Topic - Quote button - anonymous", function (needs) {
|
||||
assert
|
||||
.dom(`.quote-sharing .btn[title='${I18n.t("share.email")}']`)
|
||||
.exists("it includes the email share button");
|
||||
assert.ok(!exists(".insert-quote"), "it does not show the quote button");
|
||||
assert
|
||||
.dom(".insert-quote")
|
||||
.doesNotExist("it does not show the quote button");
|
||||
});
|
||||
|
||||
test("Shows single share button when site setting only has one item", async function (assert) {
|
||||
@ -118,7 +119,7 @@ acceptance("Topic - Quote button - anonymous", function (needs) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
await selectText("#post_5 blockquote");
|
||||
|
||||
assert.ok(exists(".quote-sharing"), "it shows the quote sharing options");
|
||||
assert.dom(".quote-sharing").exists("shows the quote sharing options");
|
||||
assert
|
||||
.dom(`.quote-sharing .btn[title='${I18n.t("share.twitter")}']`)
|
||||
.exists("it includes the twitter share button");
|
||||
@ -133,8 +134,8 @@ acceptance("Topic - Quote button - anonymous", function (needs) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
await selectText("#post_5 blockquote");
|
||||
|
||||
assert.ok(!exists(".quote-sharing"), "it does not show quote sharing");
|
||||
assert.ok(!exists(".insert-quote"), "it does not show the quote button");
|
||||
assert.dom(".quote-sharing").doesNotExist("does not show quote sharing");
|
||||
assert.dom(".insert-quote").doesNotExist("does not show the quote button");
|
||||
});
|
||||
});
|
||||
|
||||
@ -145,7 +146,7 @@ acceptance("Topic - Quote button - keyboard shortcut", function (needs) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
await selectText("#post_1 .cooked");
|
||||
await triggerKeyEvent(document, "keypress", "Q");
|
||||
assert.ok(exists(".d-editor-input"), "the editor is open");
|
||||
assert.dom(".d-editor-input").exists("the editor is open");
|
||||
|
||||
assert.ok(
|
||||
query(".d-editor-input").value.includes("Any plans to support"),
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import topicFixtures from "discourse/tests/fixtures/topic";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
updateCurrentUser,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
@ -56,8 +55,8 @@ acceptance("Topic - Slow Mode - enabled", function (needs) {
|
||||
"enabled until combobox is switched to the option Pick Date and Time"
|
||||
);
|
||||
|
||||
assert.ok(exists("input.date-picker"), "date picker is rendered");
|
||||
assert.ok(exists("input.time-input"), "time picker is rendered");
|
||||
assert.dom("input.date-picker").exists("date picker is rendered");
|
||||
assert.dom("input.time-input").exists("time picker is rendered");
|
||||
});
|
||||
|
||||
test("'Enable' button changes to 'Update' button when slow mode is enabled", async function (assert) {
|
||||
|
@ -13,7 +13,6 @@ import {
|
||||
acceptance,
|
||||
chromeTest,
|
||||
count,
|
||||
exists,
|
||||
publishToMessageBus,
|
||||
query,
|
||||
selectText,
|
||||
@ -49,7 +48,7 @@ acceptance("Topic", function (needs) {
|
||||
await click("button.share:nth-of-type(1)");
|
||||
await click("button.new-topic");
|
||||
|
||||
assert.ok(exists(".d-editor-input"), "the composer input is visible");
|
||||
assert.dom(".d-editor-input").exists("the composer input is visible");
|
||||
|
||||
assert.strictEqual(
|
||||
query(".d-editor-input").value.trim(),
|
||||
@ -68,7 +67,7 @@ acceptance("Topic", function (needs) {
|
||||
await click("button.share:nth-of-type(1)");
|
||||
await click("button.new-topic");
|
||||
|
||||
assert.ok(exists(".d-editor-input"), "the composer input is visible");
|
||||
assert.dom(".d-editor-input").exists("the composer input is visible");
|
||||
|
||||
assert.strictEqual(
|
||||
query(".d-editor-input").value.trim(),
|
||||
@ -88,7 +87,7 @@ acceptance("Topic", function (needs) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
await click(".topic-post:first-child button.share");
|
||||
|
||||
assert.ok(exists(".share-topic-modal"), "it shows the share modal");
|
||||
assert.dom(".share-topic-modal").exists("shows the share modal");
|
||||
});
|
||||
|
||||
test("Copy Link Button", async function (assert) {
|
||||
@ -105,14 +104,14 @@ acceptance("Topic", function (needs) {
|
||||
|
||||
await click("#topic-title .d-icon-pencil");
|
||||
|
||||
assert.ok(exists("#edit-title"), "it shows the editing controls");
|
||||
assert.dom("#edit-title").exists("shows the editing controls");
|
||||
assert
|
||||
.dom(".title-wrapper .remove-featured-link")
|
||||
.doesNotExist("link to remove featured link is not shown");
|
||||
|
||||
await fillIn("#edit-title", "this is the new title");
|
||||
await click("#topic-title .cancel-edit");
|
||||
assert.ok(!exists("#edit-title"), "it hides the editing controls");
|
||||
assert.dom("#edit-title").doesNotExist("hides the editing controls");
|
||||
});
|
||||
|
||||
test("Updating the topic title and category", async function (assert) {
|
||||
@ -137,7 +136,7 @@ acceptance("Topic", function (needs) {
|
||||
test("Marking a topic as wiki", async function (assert) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
|
||||
assert.ok(!exists("a.wiki"), "it does not show the wiki icon");
|
||||
assert.dom("a.wiki").doesNotExist("does not show the wiki icon");
|
||||
|
||||
await click(".topic-post:nth-of-type(1) button.show-more-actions");
|
||||
await click(".topic-post:nth-of-type(1) button.show-post-admin-menu");
|
||||
@ -222,7 +221,7 @@ acceptance("Topic", function (needs) {
|
||||
await click(".topic-post:nth-of-type(1) button.show-more-actions");
|
||||
await click(".widget-button.delete");
|
||||
await click(".toggle-admin-menu");
|
||||
assert.ok(exists(".topic-admin-recover"), "it shows the recover button");
|
||||
assert.dom(".topic-admin-recover").exists("shows the recover button");
|
||||
});
|
||||
|
||||
test("Deleting a popular topic displays confirmation modal", async function (assert) {
|
||||
@ -243,14 +242,14 @@ acceptance("Topic", function (needs) {
|
||||
await click(".widget-button.delete");
|
||||
await click(".delete-topic-confirm-modal .btn-danger");
|
||||
await click(".toggle-admin-menu");
|
||||
assert.ok(exists(".topic-admin-recover"), "it shows the recover button");
|
||||
assert.dom(".topic-admin-recover").exists("shows the recover button");
|
||||
});
|
||||
|
||||
test("Group category moderator posts", async function (assert) {
|
||||
await visit("/t/topic-for-group-moderators/2480");
|
||||
|
||||
assert.ok(exists(".category-moderator"), "it has a class applied");
|
||||
assert.ok(exists(".d-icon-shield-halved"), "it shows an icon");
|
||||
assert.dom(".category-moderator").exists("has a class applied");
|
||||
assert.dom(".d-icon-shield-halved").exists("shows an icon");
|
||||
});
|
||||
|
||||
test("Suspended user posts", async function (assert) {
|
||||
@ -297,14 +296,6 @@ acceptance("Topic featured links", function (needs) {
|
||||
assert
|
||||
.dom(".title-wrapper .remove-featured-link")
|
||||
.exists("link to remove featured link");
|
||||
|
||||
// TODO: decide if we want to test this, test is flaky so it
|
||||
// was commented out.
|
||||
// If not fixed by May 2021, delete this code block
|
||||
//
|
||||
//await click(".title-wrapper .remove-featured-link");
|
||||
//await click(".title-wrapper .submit-edit");
|
||||
//assert.ok(!exists(".title-wrapper .topic-featured-link"), "link is gone");
|
||||
});
|
||||
|
||||
test("Converting to a public topic", async function (assert) {
|
||||
@ -380,7 +371,7 @@ acceptance("Topic featured links", function (needs) {
|
||||
await visit("/t/internationalization-localization/280");
|
||||
await click(".gap");
|
||||
|
||||
assert.ok(!exists(".gap"), "it hides gap");
|
||||
assert.dom(".gap").doesNotExist("hides gap");
|
||||
});
|
||||
|
||||
test("Quoting a quote keeps the original poster name", async function (assert) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { click, currentURL, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("Category 404", function (needs) {
|
||||
needs.pretender((server, helper) => {
|
||||
@ -51,7 +51,7 @@ acceptance("Unknown", function (needs) {
|
||||
|
||||
test("Permalink Unknown URL", async function (assert) {
|
||||
await visit("/url-that-doesn't-exist");
|
||||
assert.ok(exists(".page-not-found"), "The not found content is present");
|
||||
assert.dom(".page-not-found").exists("the not found content is present");
|
||||
});
|
||||
|
||||
test("Permalink URL to a Topic", async function (assert) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { currentRouteName, currentURL, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("User Anonymous", function () {
|
||||
test("Root URL", async function (assert) {
|
||||
@ -23,18 +23,18 @@ acceptance("User Anonymous", function () {
|
||||
document.body.classList.contains("user-activity-page"),
|
||||
"has the body class"
|
||||
);
|
||||
assert.ok(exists(".user-main .about"), "it has the about section");
|
||||
assert.ok(exists(".user-stream .item"), "it has stream items");
|
||||
assert.dom(".user-main .about").exists("has the about section");
|
||||
assert.dom(".user-stream .item").exists("has stream items");
|
||||
|
||||
await visit("/u/eviltrout/activity/topics");
|
||||
assert.ok(!exists(".user-stream .item"), "has no stream displayed");
|
||||
assert.ok(exists(".topic-list tr"), "it has a topic list");
|
||||
assert.dom(".user-stream .item").doesNotExist("has no stream displayed");
|
||||
assert.dom(".topic-list tr").exists("has a topic list");
|
||||
|
||||
await visit("/u/eviltrout/activity/replies");
|
||||
assert.ok(exists(".user-main .about"), "it has the about section");
|
||||
assert.ok(exists(".user-stream .item"), "it has stream items");
|
||||
assert.dom(".user-main .about").exists("has the about section");
|
||||
assert.dom(".user-stream .item").exists("has stream items");
|
||||
|
||||
assert.ok(exists(".user-stream.filter-5"), "stream has filter class");
|
||||
assert.dom(".user-stream.filter-5").exists("stream has filter class");
|
||||
});
|
||||
|
||||
test("Badges", async function (assert) {
|
||||
@ -44,7 +44,7 @@ acceptance("User Anonymous", function () {
|
||||
document.body.classList.contains("user-badges-page"),
|
||||
"has the body class"
|
||||
);
|
||||
assert.ok(exists(".badge-group-list .badge-card"), "shows a badge");
|
||||
assert.dom(".badge-group-list .badge-card").exists("shows a badge");
|
||||
});
|
||||
|
||||
test("Restricted Routes", async function (assert) {
|
||||
|
@ -3,7 +3,6 @@ import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
queryAll,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
@ -26,7 +25,7 @@ acceptance("Bookmark - Bulk Actions", function (needs) {
|
||||
|
||||
await dropdown.selectRowByValue("clear-reminders");
|
||||
|
||||
assert.ok(exists(".dialog-container"), "it should show the modal");
|
||||
assert.dom(".dialog-container").exists("shows the modal");
|
||||
assert.dom(".dialog-container .dialog-body").includesText(
|
||||
I18n.t("js.bookmark_bulk_actions.clear_reminders.description", {
|
||||
count: 2,
|
||||
@ -52,7 +51,7 @@ acceptance("Bookmark - Bulk Actions", function (needs) {
|
||||
await dropdown.expand();
|
||||
await dropdown.selectRowByValue("delete-bookmarks");
|
||||
|
||||
assert.ok(exists(".dialog-container"), "it should show the modal");
|
||||
assert.dom(".dialog-container").exists("shows the modal");
|
||||
|
||||
assert.dom(".dialog-container .dialog-body").includesText(
|
||||
I18n.t("js.bookmark_bulk_actions.delete_bookmarks.description", {
|
||||
|
@ -4,7 +4,6 @@ import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
normalizeHtml,
|
||||
query,
|
||||
visible,
|
||||
@ -36,7 +35,7 @@ acceptance("User Drafts", function (needs) {
|
||||
|
||||
test("Stream - resume draft", async function (assert) {
|
||||
await visit("/u/eviltrout/activity/drafts");
|
||||
assert.ok(exists(".user-stream-item"), "has drafts");
|
||||
assert.dom(".user-stream-item").exists("has drafts");
|
||||
|
||||
await click(".user-stream-item .resume-draft");
|
||||
assert.strictEqual(
|
||||
@ -47,7 +46,7 @@ acceptance("User Drafts", function (needs) {
|
||||
|
||||
test("Stream - has excerpt", async function (assert) {
|
||||
await visit("/u/eviltrout/activity/drafts");
|
||||
assert.ok(exists(".user-stream-item"), "has drafts");
|
||||
assert.dom(".user-stream-item").exists("has drafts");
|
||||
assert.strictEqual(
|
||||
query(".user-stream-item:nth-child(3) .category").textContent,
|
||||
"meta"
|
||||
|
@ -17,7 +17,6 @@ import TopicFixtures from "discourse/tests/fixtures/topic";
|
||||
import UserMenuFixtures from "discourse/tests/fixtures/user-menu";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
loggedInUser,
|
||||
publishToMessageBus,
|
||||
query,
|
||||
@ -798,7 +797,9 @@ acceptance("User menu", function (needs) {
|
||||
"/u/eviltrout/notifications",
|
||||
"clicking on active tab navigates to the page it links to"
|
||||
);
|
||||
assert.notOk(exists(".user-menu"), "user menu is closed after navigating");
|
||||
assert
|
||||
.dom(".user-menu")
|
||||
.doesNotExist("user menu is closed after navigating");
|
||||
|
||||
const tabs = [
|
||||
["#user-menu-button-custom-tab-1", "/u/eviltrout/preferences/account"],
|
||||
@ -820,15 +821,13 @@ acceptance("User menu", function (needs) {
|
||||
expectedLink,
|
||||
`clicking on the ${id} tab navigates to ${expectedLink}`
|
||||
);
|
||||
assert.notOk(
|
||||
exists(".user-menu"),
|
||||
"user menu is closed after navigating"
|
||||
);
|
||||
assert
|
||||
.dom(".user-menu")
|
||||
.doesNotExist("user menu is closed after navigating");
|
||||
} else {
|
||||
assert.ok(
|
||||
exists(".user-menu"),
|
||||
"user menu remains open if tab doesn't link to anywhere"
|
||||
);
|
||||
assert
|
||||
.dom(".user-menu")
|
||||
.exists("user menu remains open if tab doesn't link to anywhere");
|
||||
}
|
||||
await click("#site-logo");
|
||||
}
|
||||
@ -1096,9 +1095,9 @@ acceptance("User menu - Dismiss button", function (needs) {
|
||||
|
||||
await click(".user-menu .notifications-dismiss");
|
||||
|
||||
assert.ok(
|
||||
!exists("#user-menu-button-other-notifications .badge-notification")
|
||||
);
|
||||
assert
|
||||
.dom("#user-menu-button-other-notifications .badge-notification")
|
||||
.doesNotExist();
|
||||
assert.ok(
|
||||
markRead,
|
||||
"mark-read request is sent without a confirmation modal"
|
||||
|
@ -6,11 +6,7 @@ import pretender, {
|
||||
fixturesByUrl,
|
||||
response,
|
||||
} from "discourse/tests/helpers/create-pretender";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { cloneJSON } from "discourse-common/lib/object";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
@ -269,7 +265,7 @@ acceptance("User Preferences - Account", function (needs) {
|
||||
await visit("/u/eviltrout/preferences/account");
|
||||
await click(".pref-avatar .btn");
|
||||
|
||||
assert.ok(exists(".avatar-choice"), "opens the avatar selection modal");
|
||||
assert.dom(".avatar-choice").exists("opens the avatar selection modal");
|
||||
|
||||
await click(".avatar-selector-refresh-gravatar");
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
import { visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
acceptance("User Preferences Admin", function (needs) {
|
||||
needs.user({ admin: true });
|
||||
|
||||
test("Desktop user admin button", async function (assert) {
|
||||
await visit("/u/eviltrout");
|
||||
assert.ok(exists(".user-admin"), "desktop user admin nav button exists");
|
||||
assert.dom(".user-admin").exists("desktop user admin nav button exists");
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { click, fillIn, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import { acceptance, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
acceptance("User Preferences - Email", function (needs) {
|
||||
@ -17,7 +17,7 @@ acceptance("User Preferences - Email", function (needs) {
|
||||
test("email", async function (assert) {
|
||||
await visit("/u/eviltrout/preferences/email");
|
||||
|
||||
assert.ok(exists("#change-email"), "it has the input element");
|
||||
assert.dom("#change-email").exists("has the input element");
|
||||
|
||||
await fillIn("#change-email", "invalid-email");
|
||||
|
||||
@ -32,7 +32,7 @@ acceptance("User Preferences - Email", function (needs) {
|
||||
test("email field always shows up", async function (assert) {
|
||||
await visit("/u/eviltrout/preferences/email");
|
||||
|
||||
assert.ok(exists("#change-email"), "it has the input element");
|
||||
assert.dom("#change-email").exists("has the input element");
|
||||
|
||||
await fillIn("#change-email", "eviltrout@discourse.org");
|
||||
await click(".user-preferences button.btn-primary");
|
||||
@ -40,6 +40,6 @@ acceptance("User Preferences - Email", function (needs) {
|
||||
await visit("/u/eviltrout/preferences");
|
||||
await visit("/u/eviltrout/preferences/email");
|
||||
|
||||
assert.ok(exists("#change-email"), "it has the input element");
|
||||
assert.dom("#change-email").exists("has the input element");
|
||||
});
|
||||
});
|
||||
|
@ -7,7 +7,6 @@ import userFixtures from "discourse/tests/fixtures/user-fixtures";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
@ -28,9 +27,9 @@ acceptance("User Preferences - Interface", function (needs) {
|
||||
removeCookie("text_size");
|
||||
|
||||
const savePreferences = async () => {
|
||||
assert.ok(!exists(".saved"), "it hasn't been saved yet");
|
||||
assert.dom(".saved").doesNotExist("hasn't been saved yet");
|
||||
await click(".save-changes");
|
||||
assert.ok(exists(".saved"), "it displays the saved message");
|
||||
assert.dom(".saved").exists("it displays the saved message");
|
||||
query(".saved").remove();
|
||||
};
|
||||
|
||||
@ -72,7 +71,7 @@ acceptance("User Preferences - Interface", function (needs) {
|
||||
|
||||
test("does not show option to disable dark mode by default", async function (assert) {
|
||||
await visit("/u/eviltrout/preferences/interface");
|
||||
assert.ok(!exists(".control-group.dark-mode"), "option not visible");
|
||||
assert.dom(".control-group.dark-mode").doesNotExist("option not visible");
|
||||
});
|
||||
|
||||
test("shows light/dark color scheme pickers", async function (assert) {
|
||||
@ -83,8 +82,8 @@ acceptance("User Preferences - Interface", function (needs) {
|
||||
]);
|
||||
|
||||
await visit("/u/eviltrout/preferences/interface");
|
||||
assert.ok(exists(".light-color-scheme"), "has regular dropdown");
|
||||
assert.ok(exists(".dark-color-scheme"), "has dark color scheme dropdown");
|
||||
assert.dom(".light-color-scheme").exists("has regular dropdown");
|
||||
assert.dom(".dark-color-scheme").exists("has dark color scheme dropdown");
|
||||
});
|
||||
|
||||
test("shows light color scheme default option when theme's color scheme is not user selectable", async function (assert) {
|
||||
@ -96,7 +95,7 @@ acceptance("User Preferences - Interface", function (needs) {
|
||||
site.set("user_color_schemes", [{ id: 2, name: "Cool Breeze" }]);
|
||||
|
||||
await visit("/u/eviltrout/preferences/interface");
|
||||
assert.ok(exists(".light-color-scheme"), "has regular dropdown");
|
||||
assert.dom(".light-color-scheme").exists("has regular dropdown");
|
||||
|
||||
assert.strictEqual(
|
||||
selectKit(".light-color-scheme .select-kit").header().value(),
|
||||
@ -132,7 +131,7 @@ acceptance("User Preferences - Interface", function (needs) {
|
||||
|
||||
await visit("/u/eviltrout/preferences/interface");
|
||||
|
||||
assert.ok(exists(".light-color-scheme"), "has regular dropdown");
|
||||
assert.dom(".light-color-scheme").exists("has regular dropdown");
|
||||
assert.strictEqual(selectKit(".theme .select-kit").header().value(), "2");
|
||||
|
||||
await selectKit(".light-color-scheme .select-kit").expand();
|
||||
@ -187,10 +186,9 @@ acceptance(
|
||||
test("show option to disable dark mode", async function (assert) {
|
||||
await visit("/u/eviltrout/preferences/interface");
|
||||
|
||||
assert.ok(
|
||||
exists(".control-group.dark-mode"),
|
||||
"it has the option to disable dark mode"
|
||||
);
|
||||
assert
|
||||
.dom(".control-group.dark-mode")
|
||||
.exists("has the option to disable dark mode");
|
||||
});
|
||||
|
||||
test("no color scheme picker by default", async function (assert) {
|
||||
@ -206,11 +204,10 @@ acceptance(
|
||||
site.set("user_color_schemes", [{ id: 2, name: "Cool Breeze" }]);
|
||||
|
||||
await visit("/u/eviltrout/preferences/interface");
|
||||
assert.ok(exists(".light-color-scheme"), "has regular picker dropdown");
|
||||
assert.ok(
|
||||
!exists(".dark-color-scheme"),
|
||||
"does not have a dark color scheme picker"
|
||||
);
|
||||
assert.dom(".light-color-scheme").exists("has regular picker dropdown");
|
||||
assert
|
||||
.dom(".dark-color-scheme")
|
||||
.doesNotExist("does not have a dark color scheme picker");
|
||||
});
|
||||
|
||||
test("light color scheme defaults to custom scheme selected by user", async function (assert) {
|
||||
@ -220,7 +217,7 @@ acceptance(
|
||||
site.set("user_color_schemes", [{ id: 2, name: "Cool Breeze" }]);
|
||||
|
||||
await visit("/u/eviltrout/preferences/interface");
|
||||
assert.ok(exists(".light-color-scheme"), "has light scheme dropdown");
|
||||
assert.dom(".light-color-scheme").exists("has light scheme dropdown");
|
||||
assert.strictEqual(
|
||||
query(".light-color-scheme .selected-name").dataset.value,
|
||||
session.userColorSchemeId.toString(),
|
||||
@ -243,7 +240,7 @@ acceptance(
|
||||
|
||||
await visit("/u/eviltrout/preferences/interface");
|
||||
|
||||
assert.ok(exists(".light-color-scheme"), "has regular dropdown");
|
||||
assert.dom(".light-color-scheme").exists("has regular dropdown");
|
||||
const dropdownObject = selectKit(".light-color-scheme .select-kit");
|
||||
assert.strictEqual(dropdownObject.header().value(), null);
|
||||
assert.strictEqual(
|
||||
@ -269,24 +266,23 @@ acceptance(
|
||||
]);
|
||||
|
||||
const savePreferences = async () => {
|
||||
assert.ok(!exists(".saved"), "it hasn't been saved yet");
|
||||
assert.dom(".saved").doesNotExist("hasn't been saved yet");
|
||||
await click(".save-changes");
|
||||
assert.ok(exists(".saved"), "it displays the saved message");
|
||||
assert.dom(".saved").exists("displays the saved message");
|
||||
query(".saved").remove();
|
||||
};
|
||||
|
||||
await visit("/u/eviltrout/preferences/interface");
|
||||
assert.ok(exists(".light-color-scheme"), "has regular dropdown");
|
||||
assert.ok(exists(".dark-color-scheme"), "has dark color scheme dropdown");
|
||||
assert.dom(".light-color-scheme").exists("has regular dropdown");
|
||||
assert.dom(".dark-color-scheme").exists("has dark color scheme dropdown");
|
||||
assert.strictEqual(
|
||||
query(".dark-color-scheme .selected-name").dataset.value,
|
||||
session.userDarkSchemeId.toString(),
|
||||
"sets site default as selected dark scheme"
|
||||
);
|
||||
assert.ok(
|
||||
!exists(".control-group.dark-mode"),
|
||||
"it does not show disable dark mode checkbox"
|
||||
);
|
||||
assert
|
||||
.dom(".control-group.dark-mode")
|
||||
.doesNotExist("does not show disable dark mode checkbox");
|
||||
|
||||
removeCookie("color_scheme_id");
|
||||
removeCookie("dark_scheme_id");
|
||||
@ -298,10 +294,9 @@ acceptance(
|
||||
undefined,
|
||||
"cookie is not set"
|
||||
);
|
||||
assert.ok(
|
||||
exists(".color-scheme-checkbox input:checked"),
|
||||
"defaults to storing values in user options"
|
||||
);
|
||||
assert
|
||||
.dom(".color-scheme-checkbox input:checked")
|
||||
.exists("defaults to storing values in user options");
|
||||
|
||||
await savePreferences();
|
||||
assert.strictEqual(
|
||||
|
@ -2,7 +2,6 @@ import { click, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
updateCurrentUser,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
@ -39,7 +38,7 @@ acceptance("User Preferences - Second Factor Backup", function (needs) {
|
||||
|
||||
await click(".second-factor-backup-edit-modal .btn-primary");
|
||||
|
||||
assert.ok(exists(".backup-codes-area"), "shows backup codes");
|
||||
assert.dom(".backup-codes-area").exists("shows backup codes");
|
||||
});
|
||||
|
||||
test("delete backup codes", async function (assert) {
|
||||
|
@ -8,7 +8,6 @@ import {
|
||||
import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
updateCurrentUser,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
@ -67,7 +66,7 @@ acceptance("User Preferences - Second Factor", function (needs) {
|
||||
await visit("/u/eviltrout/preferences/second-factor");
|
||||
|
||||
await click(".new-totp");
|
||||
assert.ok(exists(".qr-code img"), "shows qr code image");
|
||||
assert.dom(".qr-code img").exists("shows qr code image");
|
||||
|
||||
await click(".modal a.show-second-factor-key");
|
||||
assert
|
||||
@ -85,7 +84,7 @@ acceptance("User Preferences - Second Factor", function (needs) {
|
||||
await visit("/u/eviltrout/preferences/second-factor");
|
||||
|
||||
await click(".new-security-key");
|
||||
assert.ok(exists("#security-key-name"), "shows security key name input");
|
||||
assert.dom("#security-key-name").exists("shows security key name input");
|
||||
|
||||
await fillIn("#security-key-name", "");
|
||||
|
||||
|
@ -11,7 +11,6 @@ import { fixturesByUrl } from "discourse/tests/helpers/create-pretender";
|
||||
import {
|
||||
acceptance,
|
||||
count,
|
||||
exists,
|
||||
publishToMessageBus,
|
||||
query,
|
||||
updateCurrentUser,
|
||||
@ -38,10 +37,9 @@ acceptance(
|
||||
"displays the topic list"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!exists(".group-notifications-button"),
|
||||
"displays the group notifications button"
|
||||
);
|
||||
assert
|
||||
.dom(".group-notifications-button")
|
||||
.doesNotExist("displays the group notifications button");
|
||||
});
|
||||
|
||||
test("viewing messages of another user", async function (assert) {
|
||||
@ -49,15 +47,13 @@ acceptance(
|
||||
|
||||
await visit("/u/eviltrout/messages");
|
||||
|
||||
assert.ok(
|
||||
!exists(".messages-nav li a.new"),
|
||||
"it does not display new filter"
|
||||
);
|
||||
assert
|
||||
.dom(".messages-nav li a.new")
|
||||
.doesNotExist("it does not display new filter");
|
||||
|
||||
assert.ok(
|
||||
!exists(".messages-nav li a.unread"),
|
||||
"it does not display unread filter"
|
||||
);
|
||||
assert
|
||||
.dom(".messages-nav li a.unread")
|
||||
.doesNotExist("it does not display unread filter");
|
||||
});
|
||||
}
|
||||
);
|
||||
@ -304,11 +300,11 @@ acceptance("User Private Messages - sorting", function (needs) {
|
||||
test("order by posts_count", async function (assert) {
|
||||
await visit("/u/eviltrout/messages");
|
||||
|
||||
assert.ok(exists(".topic-list-header th.posts.sortable"), "is sortable");
|
||||
assert.dom(".topic-list-header th.posts.sortable").exists("is sortable");
|
||||
|
||||
await click(".topic-list-header th.posts.sortable");
|
||||
|
||||
assert.ok(exists(".topic-list-header th.posts.sortable.sorting"), "sorted");
|
||||
assert.dom(".topic-list-header th.posts.sortable.sorting").exists("sorted");
|
||||
});
|
||||
});
|
||||
|
||||
@ -326,10 +322,9 @@ acceptance(
|
||||
actingUserId: 5,
|
||||
});
|
||||
|
||||
assert.ok(
|
||||
!exists(".show-mores"),
|
||||
`does not display the topic incoming info`
|
||||
);
|
||||
assert
|
||||
.dom(".show-mores")
|
||||
.doesNotExist(`does not display the topic incoming info`);
|
||||
});
|
||||
|
||||
test("incoming group archive message on inbox and archive filter", async function (assert) {
|
||||
@ -341,10 +336,9 @@ acceptance(
|
||||
|
||||
await publishGroupArchiveToMessageBus({ groupIds: [14], topicId: 1 });
|
||||
|
||||
assert.ok(
|
||||
exists(".show-mores"),
|
||||
`${url} displays the topic incoming info`
|
||||
);
|
||||
assert
|
||||
.dom(".show-mores")
|
||||
.exists(`${url} displays the topic incoming info`);
|
||||
}
|
||||
|
||||
for (const url of [
|
||||
@ -355,10 +349,9 @@ acceptance(
|
||||
|
||||
await publishGroupArchiveToMessageBus({ groupIds: [14], topicId: 1 });
|
||||
|
||||
assert.ok(
|
||||
!exists(".show-mores"),
|
||||
`${url} does not display the topic incoming info`
|
||||
);
|
||||
assert
|
||||
.dom(".show-mores")
|
||||
.doesNotExist(`${url} does not display the topic incoming info`);
|
||||
}
|
||||
});
|
||||
|
||||
@ -392,7 +385,7 @@ acceptance(
|
||||
"displays the right count"
|
||||
);
|
||||
|
||||
assert.ok(exists(".show-mores"), "displays the topic incoming info");
|
||||
assert.dom(".show-mores").exists("displays the topic incoming info");
|
||||
|
||||
await publishNewToMessageBus({ topicId: 2 });
|
||||
|
||||
@ -402,7 +395,7 @@ acceptance(
|
||||
"displays the right count"
|
||||
);
|
||||
|
||||
assert.ok(exists(".show-mores"), "displays the topic incoming info");
|
||||
assert.dom(".show-mores").exists("displays the topic incoming info");
|
||||
});
|
||||
|
||||
test("incoming unread messages while viewing unread", async function (assert) {
|
||||
@ -416,7 +409,7 @@ acceptance(
|
||||
"displays the right count"
|
||||
);
|
||||
|
||||
assert.ok(exists(".show-mores"), "displays the topic incoming info");
|
||||
assert.dom(".show-mores").exists("displays the topic incoming info");
|
||||
});
|
||||
|
||||
test("incoming unread and new messages while viewing group unread", async function (assert) {
|
||||
@ -439,7 +432,7 @@ acceptance(
|
||||
"displays the right count"
|
||||
);
|
||||
|
||||
assert.ok(exists(".show-mores"), "displays the topic incoming info");
|
||||
assert.dom(".show-mores").exists("displays the topic incoming info");
|
||||
|
||||
await visit("/u/charlie/messages/unread");
|
||||
|
||||
@ -464,10 +457,9 @@ acceptance(
|
||||
|
||||
await visit("/u/charlie/messages");
|
||||
|
||||
assert.ok(
|
||||
!exists(".show-mores"),
|
||||
"does not display the topic incoming info"
|
||||
);
|
||||
assert
|
||||
.dom(".show-mores")
|
||||
.doesNotExist("does not display the topic incoming info");
|
||||
});
|
||||
|
||||
test("dismissing all unread messages", async function (assert) {
|
||||
@ -640,10 +632,9 @@ acceptance(
|
||||
"displays the right topic list"
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(".group-notifications-button"),
|
||||
"displays the group notifications button"
|
||||
);
|
||||
assert
|
||||
.dom(".group-notifications-button")
|
||||
.exists("displays the group notifications button");
|
||||
});
|
||||
|
||||
test("navigating between user messages route with dropdown", async function (assert) {
|
||||
|
@ -1,11 +1,7 @@
|
||||
import { click, currentURL, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import userFixtures from "discourse/tests/fixtures/user-fixtures";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { acceptance, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { cloneJSON } from "discourse-common/lib/object";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
@ -17,13 +13,13 @@ acceptance("User Profile - Summary", function (needs) {
|
||||
test("Viewing Summary", async function (assert) {
|
||||
await visit("/u/eviltrout/summary");
|
||||
|
||||
assert.ok(exists(".replies-section li a"), "replies");
|
||||
assert.ok(exists(".topics-section li a"), "topics");
|
||||
assert.ok(exists(".links-section li a"), "links");
|
||||
assert.ok(exists(".replied-section .user-info"), "liked by");
|
||||
assert.ok(exists(".liked-by-section .user-info"), "liked by");
|
||||
assert.ok(exists(".liked-section .user-info"), "liked");
|
||||
assert.ok(exists(".badges-section .badge-card"), "badges");
|
||||
assert.dom(".replies-section li a").exists("replies");
|
||||
assert.dom(".topics-section li a").exists("topics");
|
||||
assert.dom(".links-section li a").exists("links");
|
||||
assert.dom(".replied-section .user-info").exists("liked by");
|
||||
assert.dom(".liked-by-section .user-info").exists("liked by");
|
||||
assert.dom(".liked-section .user-info").exists("liked");
|
||||
assert.dom(".badges-section .badge-card").exists("badges");
|
||||
assert
|
||||
.dom(".top-categories-section .category-link")
|
||||
.exists("top categories");
|
||||
|
@ -2,7 +2,6 @@ import { click, fillIn, visit } from "@ember/test-helpers";
|
||||
import { test } from "qunit";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
publishToMessageBus,
|
||||
query,
|
||||
updateCurrentUser,
|
||||
@ -122,10 +121,10 @@ acceptance("User Status", function (needs) {
|
||||
await visit("/");
|
||||
await openUserStatusModal();
|
||||
|
||||
assert.ok(exists(`.d-icon-discourse-emojis`), "empty status icon is shown");
|
||||
assert.dom(".d-icon-discourse-emojis").exists("empty status icon is shown");
|
||||
|
||||
await click(".btn-emoji");
|
||||
assert.ok(exists(".emoji-picker.opened"), "emoji picker is opened");
|
||||
assert.dom(".emoji-picker.opened").exists("emoji picker is opened");
|
||||
|
||||
await fillIn(".emoji-picker-content .filter", userStatusEmoji);
|
||||
await click(".results .emoji");
|
||||
@ -249,7 +248,7 @@ acceptance("User Status", function (needs) {
|
||||
await openUserStatusModal();
|
||||
await pickEmoji(userStatusEmoji);
|
||||
|
||||
assert.ok(exists(`.btn-primary[disabled]`), "the save button is disabled");
|
||||
assert.dom(".btn-primary").isDisabled("the save button is disabled");
|
||||
});
|
||||
|
||||
test("sets default status emoji automatically after user started inputting status description", async function (assert) {
|
||||
@ -323,7 +322,7 @@ acceptance("User Status", function (needs) {
|
||||
await click(".btn.delete-status");
|
||||
await openUserStatusModal();
|
||||
|
||||
assert.ok(exists(`.d-icon-discourse-emojis`), "empty status icon is shown");
|
||||
assert.dom(".d-icon-discourse-emojis").exists("empty status icon is shown");
|
||||
assert.equal(
|
||||
query(".user-status-description").value,
|
||||
"",
|
||||
@ -496,7 +495,7 @@ acceptance("User Status - user menu", function (needs) {
|
||||
await click(".header-dropdown-toggle.current-user button");
|
||||
await click("#user-menu-button-profile");
|
||||
|
||||
assert.ok(exists("li.set-user-status .btn"), "shows the button");
|
||||
assert.dom("li.set-user-status .btn").exists("shows the button");
|
||||
assert
|
||||
.dom("li.set-user-status svg.d-icon-circle-plus")
|
||||
.exists("shows the icon on the button");
|
||||
|
@ -10,7 +10,6 @@ import { test } from "qunit";
|
||||
import userFixtures from "discourse/tests/fixtures/user-fixtures";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
publishToMessageBus,
|
||||
query,
|
||||
queryAll,
|
||||
@ -112,12 +111,12 @@ acceptance("User Routes", function (needs) {
|
||||
"userActivity.index",
|
||||
"it defaults to activity"
|
||||
);
|
||||
assert.ok(exists(".container.viewing-self"), "has the viewing-self class");
|
||||
assert.dom(".container.viewing-self").exists("has the viewing-self class");
|
||||
});
|
||||
|
||||
test("Viewing Drafts", async function (assert) {
|
||||
await visit("/u/eviltrout/activity/drafts");
|
||||
assert.ok(exists(".user-stream"), "has drafts stream");
|
||||
assert.dom(".user-stream").exists("has drafts stream");
|
||||
assert
|
||||
.dom(".user-stream .user-stream-item-draft-actions")
|
||||
.exists("has draft action buttons");
|
||||
@ -168,7 +167,7 @@ acceptance("User Routes - Moderator viewing warnings", function (needs) {
|
||||
document.body.classList.contains("user-messages-page"),
|
||||
"has the body class"
|
||||
);
|
||||
assert.ok(exists("div.alert-info"), "has the permissions alert");
|
||||
assert.dom("div.alert-info").exists("has the permissions alert");
|
||||
});
|
||||
});
|
||||
|
||||
@ -276,10 +275,9 @@ acceptance(
|
||||
|
||||
test("Notification level is set to normal and can be changed to muted", async function (assert) {
|
||||
await visit("/u/charlie");
|
||||
assert.ok(
|
||||
exists(".user-notifications-dropdown"),
|
||||
"Notification level dropdown is present"
|
||||
);
|
||||
assert
|
||||
.dom(".user-notifications-dropdown")
|
||||
.exists("notification level dropdown is present");
|
||||
|
||||
const dropdown = selectKit(".user-notifications-dropdown");
|
||||
await dropdown.expand();
|
||||
@ -316,10 +314,9 @@ acceptance(
|
||||
});
|
||||
test("Notification level can be changed to ignored", async function (assert) {
|
||||
await visit("/u/charlie");
|
||||
assert.ok(
|
||||
exists(".user-notifications-dropdown"),
|
||||
"Notification level dropdown is present"
|
||||
);
|
||||
assert
|
||||
.dom(".user-notifications-dropdown")
|
||||
.exists("notification level dropdown is present");
|
||||
|
||||
const notificationLevelDropdown = selectKit(
|
||||
".user-notifications-dropdown"
|
||||
|
@ -4,7 +4,6 @@ import directoryFixtures from "discourse/tests/fixtures/directory-fixtures";
|
||||
import pretender, { response } from "discourse/tests/helpers/create-pretender";
|
||||
import {
|
||||
acceptance,
|
||||
exists,
|
||||
query,
|
||||
queryAll,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
@ -25,7 +24,7 @@ acceptance("User Directory", function () {
|
||||
|
||||
test("Visit All Time", async function (assert) {
|
||||
await visit("/u?period=all");
|
||||
assert.ok(exists(".time-read"), "has time read column");
|
||||
assert.dom(".time-read").exists("has time read column");
|
||||
});
|
||||
|
||||
test("Visit Without Usernames", async function (assert) {
|
||||
|
@ -2,7 +2,6 @@ import { render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { assert, module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
module("Addons | truth-helpers | Integration | includes", function (hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
@ -14,14 +13,14 @@ module("Addons | truth-helpers | Integration | includes", function (hooks) {
|
||||
hbs`{{#if (includes this.foo this.bar)}}<span class="test"></span>{{/if}}`
|
||||
);
|
||||
|
||||
assert.ok(exists(".test"), "it returns true when element is found");
|
||||
assert.dom(".test").exists("is true when element is found");
|
||||
|
||||
this.bar = 2;
|
||||
await render(
|
||||
hbs`{{#if (includes this.foo this.bar)}}<span class="test"></span>{{/if}}`
|
||||
);
|
||||
|
||||
assert.notOk(exists(".test"), "it returns false when element is not found");
|
||||
assert.dom(".test").doesNotExist("is false when element is not found");
|
||||
});
|
||||
|
||||
test("when using a string", async function () {
|
||||
@ -31,13 +30,13 @@ module("Addons | truth-helpers | Integration | includes", function (hooks) {
|
||||
hbs`{{#if (includes this.foo this.bar)}}<span class="test"></span>{{/if}}`
|
||||
);
|
||||
|
||||
assert.ok(exists(".test"), "it returns true when element is found");
|
||||
assert.dom(".test").exists("is true when element is found");
|
||||
|
||||
this.bar = "b";
|
||||
await render(
|
||||
hbs`{{#if (includes this.foo this.bar)}}<span class="test"></span>{{/if}}`
|
||||
);
|
||||
|
||||
assert.notOk(exists(".test"), "it returns false when element is not found");
|
||||
assert.dom(".test").doesNotExist("is false when element is not found");
|
||||
});
|
||||
});
|
||||
|
@ -5,7 +5,7 @@ import { formattedReminderTime } from "discourse/lib/bookmark";
|
||||
import { tomorrow } from "discourse/lib/time-utils";
|
||||
import Bookmark from "discourse/models/bookmark";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
module("Integration | Component | bookmark-icon", function (hooks) {
|
||||
@ -22,9 +22,9 @@ module("Integration | Component | bookmark-icon", function (hooks) {
|
||||
|
||||
await render(hbs`<BookmarkIcon @bookmark={{this.bookmark}} />`);
|
||||
|
||||
assert.ok(
|
||||
exists(".d-icon-discourse-bookmark-clock.bookmark-icon__bookmarked")
|
||||
);
|
||||
assert
|
||||
.dom(".d-icon-discourse-bookmark-clock.bookmark-icon__bookmarked")
|
||||
.exists();
|
||||
assert.strictEqual(
|
||||
query(".svg-icon-title").title,
|
||||
I18n.t("bookmarks.created_with_reminder_generic", {
|
||||
|
@ -3,7 +3,6 @@ import { click, render, triggerKeyEvent } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { withSilencedDeprecationsAsync } from "discourse-common/lib/deprecated";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
@ -13,36 +12,36 @@ module("Integration | Component | d-button", function (hooks) {
|
||||
test("icon only button", async function (assert) {
|
||||
await render(hbs`<DButton @icon="plus" tabindex="3" />`);
|
||||
|
||||
assert.ok(exists("button.btn.btn-icon.no-text"), "it has all the classes");
|
||||
assert.ok(exists("button .d-icon.d-icon-plus"), "it has the icon");
|
||||
assert.dom("button").hasAttribute("tabindex", "3", "it has the tabindex");
|
||||
assert.dom("button.btn.btn-icon.no-text").exists("has all the classes");
|
||||
assert.dom("button .d-icon.d-icon-plus").exists("has the icon");
|
||||
assert.dom("button").hasAttribute("tabindex", "3", "has the tabindex");
|
||||
});
|
||||
|
||||
test("icon and text button", async function (assert) {
|
||||
await render(hbs`<DButton @icon="plus" @label="topic.create" />`);
|
||||
|
||||
assert.ok(exists("button.btn.btn-icon-text"), "it has all the classes");
|
||||
assert.ok(exists("button .d-icon.d-icon-plus"), "it has the icon");
|
||||
assert.ok(exists("button span.d-button-label"), "it has the label");
|
||||
assert.dom("button.btn.btn-icon-text").exists("has all the classes");
|
||||
assert.dom("button .d-icon.d-icon-plus").exists("has the icon");
|
||||
assert.dom("button span.d-button-label").exists("has the label");
|
||||
});
|
||||
|
||||
test("text only button", async function (assert) {
|
||||
await render(hbs`<DButton @label="topic.create" />`);
|
||||
|
||||
assert.ok(exists("button.btn.btn-text"), "it has all the classes");
|
||||
assert.ok(exists("button span.d-button-label"), "it has the label");
|
||||
assert.dom("button.btn.btn-text").exists("has all the classes");
|
||||
assert.dom("button span.d-button-label").exists("has the label");
|
||||
});
|
||||
|
||||
test("form attribute", async function (assert) {
|
||||
await render(hbs`<DButton @form="login-form" />`);
|
||||
|
||||
assert.ok(exists("button[form=login-form]"), "it has the form attribute");
|
||||
assert.dom("button[form=login-form]").exists("has the form attribute");
|
||||
});
|
||||
|
||||
test("link-styled button", async function (assert) {
|
||||
await render(hbs`<DButton @display="link" />`);
|
||||
|
||||
assert.ok(exists("button.btn-link:not(.btn)"), "it has the right classes");
|
||||
assert.dom("button.btn-link:not(.btn)").exists("has the right classes");
|
||||
});
|
||||
|
||||
test("isLoading button", async function (assert) {
|
||||
@ -52,19 +51,15 @@ module("Integration | Component | d-button", function (hooks) {
|
||||
|
||||
assert
|
||||
.dom("button.is-loading .loading-icon")
|
||||
.exists("it has a spinner showing");
|
||||
assert
|
||||
.dom("button[disabled]")
|
||||
.exists("while loading the button is disabled");
|
||||
.exists("has a spinner showing");
|
||||
assert.dom("button").isDisabled("while loading the button is disabled");
|
||||
|
||||
this.set("isLoading", false);
|
||||
|
||||
assert
|
||||
.dom("button .loading-icon")
|
||||
.doesNotExist("it doesn't have a spinner showing");
|
||||
assert
|
||||
.dom("button:not([disabled])")
|
||||
.exists("while not loading the button is enabled");
|
||||
.doesNotExist("doesn't have a spinner showing");
|
||||
assert.dom("button").isEnabled("while not loading the button is enabled");
|
||||
});
|
||||
|
||||
test("button without isLoading attribute", async function (assert) {
|
||||
@ -72,11 +67,11 @@ module("Integration | Component | d-button", function (hooks) {
|
||||
|
||||
assert
|
||||
.dom("button.is-loading")
|
||||
.doesNotExist("it doesn't have class is-loading");
|
||||
.doesNotExist("doesn't have class is-loading");
|
||||
assert
|
||||
.dom("button .loading-icon")
|
||||
.doesNotExist("it doesn't have a spinner showing");
|
||||
assert.notOk(exists("button[disabled]"), "it isn't disabled");
|
||||
.doesNotExist("doesn't have a spinner showing");
|
||||
assert.dom("button").isNotDisabled();
|
||||
});
|
||||
|
||||
test("isLoading button explicitly set to undefined state", async function (assert) {
|
||||
@ -86,11 +81,11 @@ module("Integration | Component | d-button", function (hooks) {
|
||||
|
||||
assert
|
||||
.dom("button.is-loading")
|
||||
.doesNotExist("it doesn't have class is-loading");
|
||||
.doesNotExist("doesn't have class is-loading");
|
||||
assert
|
||||
.dom("button .loading-icon")
|
||||
.doesNotExist("it doesn't have a spinner showing");
|
||||
assert.notOk(exists("button[disabled]"), "it isn't disabled");
|
||||
.doesNotExist("doesn't have a spinner showing");
|
||||
assert.dom("button").isNotDisabled();
|
||||
});
|
||||
|
||||
test("disabled button", async function (assert) {
|
||||
@ -98,10 +93,10 @@ module("Integration | Component | d-button", function (hooks) {
|
||||
|
||||
await render(hbs`<DButton @disabled={{this.disabled}} />`);
|
||||
|
||||
assert.ok(exists("button[disabled]"), "the button is disabled");
|
||||
assert.dom("button").isDisabled();
|
||||
|
||||
this.set("disabled", false);
|
||||
assert.ok(exists("button:not([disabled])"), "the button is enabled");
|
||||
assert.dom("button").isEnabled();
|
||||
});
|
||||
|
||||
test("aria-label", async function (assert) {
|
||||
|
@ -2,7 +2,6 @@ import { render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
module("Integration | Component | d-toggle-switch", function (hooks) {
|
||||
@ -13,7 +12,7 @@ module("Integration | Component | d-toggle-switch", function (hooks) {
|
||||
|
||||
await render(hbs`<DToggleSwitch @state={{this.state}}/>`);
|
||||
|
||||
assert.ok(exists(".d-toggle-switch"), "it renders a toggle switch");
|
||||
assert.dom(".d-toggle-switch").exists("renders a toggle switch");
|
||||
assert.dom(".d-toggle-switch__checkbox").hasAria("checked", "false");
|
||||
});
|
||||
|
||||
@ -22,7 +21,7 @@ module("Integration | Component | d-toggle-switch", function (hooks) {
|
||||
|
||||
await render(hbs`<DToggleSwitch @state={{this.state}}/>`);
|
||||
|
||||
assert.ok(exists(".d-toggle-switch"), "it renders a toggle switch");
|
||||
assert.dom(".d-toggle-switch").exists("renders a toggle switch");
|
||||
assert.dom(".d-toggle-switch__checkbox").hasAria("checked", "true");
|
||||
});
|
||||
|
||||
|
@ -2,7 +2,7 @@ import { render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { query } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
function dateInput() {
|
||||
return query(".date-picker");
|
||||
@ -61,7 +61,7 @@ module("Integration | Component | date-time-input", function (hooks) {
|
||||
hbs`<DateTimeInput @date={{this.date}} @showTime={{false}} />`
|
||||
);
|
||||
|
||||
assert.notOk(exists(timeInput()));
|
||||
assert.dom(".d-time-input .combo-box-header").doesNotExist();
|
||||
});
|
||||
|
||||
test("supports swapping timezone without changing visible date/time", async function (assert) {
|
||||
|
@ -2,7 +2,6 @@ import { render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
module(
|
||||
"Integration | Component | form-template-field | checkbox",
|
||||
@ -12,12 +11,11 @@ module(
|
||||
test("renders a checkbox input", async function (assert) {
|
||||
await render(hbs`<FormTemplateField::Checkbox />`);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".form-template-field[data-field-type='checkbox'] input[type='checkbox']"
|
||||
),
|
||||
"A checkbox component exists"
|
||||
);
|
||||
)
|
||||
.exists("a checkbox component exists");
|
||||
});
|
||||
|
||||
test("renders a checkbox with a label", async function (assert) {
|
||||
@ -30,12 +28,11 @@ module(
|
||||
hbs`<FormTemplateField::Checkbox @attributes={{this.attributes}} />`
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
assert
|
||||
.dom(
|
||||
".form-template-field[data-field-type='checkbox'] input[type='checkbox']"
|
||||
),
|
||||
"A checkbox component exists"
|
||||
);
|
||||
)
|
||||
.exists("a checkbox component exists");
|
||||
|
||||
assert.dom(".form-template-field__label").hasText("Click this box");
|
||||
});
|
||||
|
@ -2,7 +2,7 @@ import { render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists, query, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { query, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
|
||||
module(
|
||||
@ -21,10 +21,9 @@ module(
|
||||
await render(
|
||||
hbs`<FormTemplateField::Dropdown @choices={{this.choices}}/>`
|
||||
);
|
||||
assert.ok(
|
||||
exists(".form-template-field__dropdown"),
|
||||
"A dropdown component exists"
|
||||
);
|
||||
assert
|
||||
.dom(".form-template-field__dropdown")
|
||||
.exists("a dropdown component exists");
|
||||
|
||||
const dropdown = queryAll(
|
||||
".form-template-field__dropdown option:not(.form-template-field__dropdown-placeholder)"
|
||||
@ -60,10 +59,9 @@ module(
|
||||
await render(
|
||||
hbs`<FormTemplateField::Dropdown @choices={{this.choices}} @attributes={{this.attributes}} />`
|
||||
);
|
||||
assert.ok(
|
||||
exists(".form-template-field__dropdown"),
|
||||
"A dropdown component exists"
|
||||
);
|
||||
assert
|
||||
.dom(".form-template-field__dropdown")
|
||||
.exists("a dropdown component exists");
|
||||
|
||||
assert.strictEqual(
|
||||
query(".form-template-field__dropdown-placeholder").innerText,
|
||||
|
@ -2,7 +2,7 @@ import { render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { query } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
module(
|
||||
"Integration | Component | form-template-field | input",
|
||||
@ -12,12 +12,9 @@ module(
|
||||
test("renders a text input", async function (assert) {
|
||||
await render(hbs`<FormTemplateField::Input />`);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
".form-template-field[data-field-type='input'] input[type='text']"
|
||||
),
|
||||
"A text input component exists"
|
||||
);
|
||||
assert
|
||||
.dom(".form-template-field[data-field-type='input'] input[type='text']")
|
||||
.exists("a text input component exists");
|
||||
});
|
||||
|
||||
test("renders a text input with attributes", async function (assert) {
|
||||
@ -31,12 +28,9 @@ module(
|
||||
hbs`<FormTemplateField::Input @attributes={{this.attributes}} />`
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(
|
||||
".form-template-field[data-field-type='input'] input[type='text']"
|
||||
),
|
||||
"A text input component exists"
|
||||
);
|
||||
assert
|
||||
.dom(".form-template-field[data-field-type='input'] input[type='text']")
|
||||
.exists("a text input component exists");
|
||||
|
||||
assert.dom(".form-template-field__label").hasText("My text label");
|
||||
assert.strictEqual(
|
||||
|
@ -2,7 +2,7 @@ import { render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists, query, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { query, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
|
||||
module(
|
||||
@ -22,10 +22,9 @@ module(
|
||||
await render(
|
||||
hbs`<FormTemplateField::MultiSelect @choices={{this.choices}}/>`
|
||||
);
|
||||
assert.ok(
|
||||
exists(".form-template-field__multi-select"),
|
||||
"A multiselect component exists"
|
||||
);
|
||||
assert
|
||||
.dom(".form-template-field__multi-select")
|
||||
.exists("a multiselect component exists");
|
||||
|
||||
const dropdown = queryAll(
|
||||
".form-template-field__multi-select option:not(.form-template-field__multi-select-placeholder)"
|
||||
@ -61,10 +60,9 @@ module(
|
||||
await render(
|
||||
hbs`<FormTemplateField::MultiSelect @choices={{this.choices}} @attributes={{this.attributes}} />`
|
||||
);
|
||||
assert.ok(
|
||||
exists(".form-template-field__multi-select"),
|
||||
"A multiselect dropdown component exists"
|
||||
);
|
||||
assert
|
||||
.dom(".form-template-field__multi-select")
|
||||
.exists("a multiselect dropdown component exists");
|
||||
|
||||
assert.strictEqual(
|
||||
query(".form-template-field__multi-select-placeholder").innerText,
|
||||
|
@ -2,7 +2,7 @@ import { render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { query } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
module(
|
||||
"Integration | Component | form-template-field | textarea",
|
||||
@ -12,10 +12,9 @@ module(
|
||||
test("renders a textarea input", async function (assert) {
|
||||
await render(hbs`<FormTemplateField::Textarea />`);
|
||||
|
||||
assert.ok(
|
||||
exists(".form-template-field__textarea"),
|
||||
"A textarea input component exists"
|
||||
);
|
||||
assert
|
||||
.dom(".form-template-field__textarea")
|
||||
.exists("a textarea input component exists");
|
||||
});
|
||||
|
||||
test("renders a text input with attributes", async function (assert) {
|
||||
@ -29,10 +28,9 @@ module(
|
||||
hbs`<FormTemplateField::Textarea @attributes={{this.attributes}} />`
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(".form-template-field__textarea"),
|
||||
"A textarea input component exists"
|
||||
);
|
||||
assert
|
||||
.dom(".form-template-field__textarea")
|
||||
.exists("a textarea input component exists");
|
||||
|
||||
assert.dom(".form-template-field__label").hasText("My text label");
|
||||
assert.strictEqual(
|
||||
|
@ -3,7 +3,6 @@ import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import pretender, { response } from "discourse/tests/helpers/create-pretender";
|
||||
import { exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
module(
|
||||
"Integration | Component | form-template-field | wrapper",
|
||||
@ -19,7 +18,7 @@ module(
|
||||
assert
|
||||
.dom(".form-template-field")
|
||||
.doesNotExist("A form template field should not exist");
|
||||
assert.ok(exists(".alert"), "An alert message should exist");
|
||||
assert.dom(".alert").exists("an alert message should exist");
|
||||
});
|
||||
|
||||
test("renders a component based on the component type found in the content YAML", async function (assert) {
|
||||
@ -44,10 +43,9 @@ module(
|
||||
);
|
||||
|
||||
componentTypes.forEach((componentType) => {
|
||||
assert.ok(
|
||||
exists(`.form-template-field[data-field-type='${componentType}']`),
|
||||
`${componentType} component exists`
|
||||
);
|
||||
assert
|
||||
.dom(`.form-template-field[data-field-type='${componentType}']`)
|
||||
.exists(`${componentType} component exists`);
|
||||
});
|
||||
});
|
||||
|
||||
@ -95,10 +93,9 @@ module(
|
||||
hbs`<FormTemplateField::Wrapper @id={{this.formTemplateId}} />`
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
exists(`.form-template-field[data-field-type='checkbox']`),
|
||||
`Checkbox component renders`
|
||||
);
|
||||
assert
|
||||
.dom(`.form-template-field[data-field-type='checkbox']`)
|
||||
.exists("checkbox component renders");
|
||||
});
|
||||
}
|
||||
);
|
||||
|
@ -2,7 +2,7 @@ import { render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { count, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { count } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
module("Integration | Component | group-membership-button", function (hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
@ -22,7 +22,7 @@ module("Integration | Component | group-membership-button", function (hooks) {
|
||||
.doesNotExist("can't join group if user is already in the group");
|
||||
|
||||
this.set("model.is_group_user", false);
|
||||
assert.ok(exists(".group-index-join"), "allowed to join group");
|
||||
assert.dom(".group-index-join").exists("allowed to join group");
|
||||
});
|
||||
|
||||
test("canLeaveGroup", async function (assert) {
|
||||
|
@ -3,7 +3,7 @@ import { render } from "@ember/test-helpers";
|
||||
import { module, test } from "qunit";
|
||||
import LightDarkImg from "discourse/components/light-dark-img";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { count, exists, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { count, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
const lightSrc = { url: "/images/light.jpg", width: 376, height: 500 };
|
||||
const darkSrc = { url: "/images/light.jpg", width: 432, height: 298 };
|
||||
@ -23,9 +23,9 @@ module("Integration | Component | light-dark-img", function (hooks) {
|
||||
|
||||
await render(<template><LightDarkImg /></template>);
|
||||
|
||||
assert.ok(!exists("picture"), "there is no picture tag");
|
||||
assert.ok(!exists("img"), "there is no img tag");
|
||||
assert.ok(!exists("source"), "there are no source tags");
|
||||
assert.dom("picture").doesNotExist("there is no picture tag");
|
||||
assert.dom("img").doesNotExist("there is no img tag");
|
||||
assert.dom("source").doesNotExist("there are no source tags");
|
||||
});
|
||||
|
||||
test("light theme with only light image provided | dark mode not available", async function (assert) {
|
||||
@ -34,14 +34,14 @@ module("Integration | Component | light-dark-img", function (hooks) {
|
||||
|
||||
await render(<template><LightDarkImg @lightImg={{lightSrc}} /></template>);
|
||||
|
||||
assert.ok(!exists("picture"), "there is no picture tag");
|
||||
assert.dom("picture").doesNotExist("there is no picture tag");
|
||||
assert.strictEqual(count("img"), 1, "there is an img tag");
|
||||
assert.strictEqual(
|
||||
query("img").getAttribute("src"),
|
||||
lightSrc.url,
|
||||
"the img src is the light image"
|
||||
);
|
||||
assert.ok(!exists("source"), "there are no source tags");
|
||||
assert.dom("source").doesNotExist("there are no source tags");
|
||||
});
|
||||
|
||||
test("light theme with light and dark images provided | dark mode not available", async function (assert) {
|
||||
@ -52,14 +52,14 @@ module("Integration | Component | light-dark-img", function (hooks) {
|
||||
<LightDarkImg @lightImg={{lightSrc}} @darkImg={{darkSrc}} />
|
||||
</template>);
|
||||
|
||||
assert.ok(!exists("picture"), "there is no picture tag");
|
||||
assert.dom("picture").doesNotExist("there is no picture tag");
|
||||
assert.strictEqual(count("img"), 1, "there is an img tag");
|
||||
assert.strictEqual(
|
||||
query("img").getAttribute("src"),
|
||||
lightSrc.url,
|
||||
"the img src is the light image"
|
||||
);
|
||||
assert.ok(!exists("source"), "there are no source tags");
|
||||
assert.dom("source").doesNotExist("there are no source tags");
|
||||
});
|
||||
|
||||
test("light theme with no images provided | dark mode available", async function (assert) {
|
||||
@ -68,9 +68,9 @@ module("Integration | Component | light-dark-img", function (hooks) {
|
||||
|
||||
await render(<template><LightDarkImg /></template>);
|
||||
|
||||
assert.ok(!exists("picture"), "there is no picture tag");
|
||||
assert.ok(!exists("img"), "there is no img tag");
|
||||
assert.ok(!exists("source"), "there are no source tags");
|
||||
assert.dom("picture").doesNotExist("there is no picture tag");
|
||||
assert.dom("img").doesNotExist("there is no img tag");
|
||||
assert.dom("source").doesNotExist("there are no source tags");
|
||||
});
|
||||
|
||||
test("light theme with only light image provided | dark mode available", async function (assert) {
|
||||
@ -79,14 +79,14 @@ module("Integration | Component | light-dark-img", function (hooks) {
|
||||
|
||||
await render(<template><LightDarkImg @lightImg={{lightSrc}} /></template>);
|
||||
|
||||
assert.ok(!exists("picture"), "there is no picture tag");
|
||||
assert.dom("picture").doesNotExist("there is no picture tag");
|
||||
assert.strictEqual(count("img"), 1, "there is an img tag");
|
||||
assert.strictEqual(
|
||||
query("img").getAttribute("src"),
|
||||
lightSrc.url,
|
||||
"the img src is the light image"
|
||||
);
|
||||
assert.ok(!exists("source"), "there are no source tags");
|
||||
assert.dom("source").doesNotExist("there are no source tags");
|
||||
});
|
||||
|
||||
test("light theme with light and dark images provided | dark mode available", async function (assert) {
|
||||
@ -118,9 +118,9 @@ module("Integration | Component | light-dark-img", function (hooks) {
|
||||
|
||||
await render(<template><LightDarkImg /></template>);
|
||||
|
||||
assert.ok(!exists("picture"), "there is no picture tag");
|
||||
assert.ok(!exists("img"), "there is no img tag");
|
||||
assert.ok(!exists("source"), "there are no source tags");
|
||||
assert.dom("picture").doesNotExist("there is no picture tag");
|
||||
assert.dom("img").doesNotExist("there is no img tag");
|
||||
assert.dom("source").doesNotExist("there are no source tags");
|
||||
});
|
||||
|
||||
test("dark theme with only light image provided | dark mode not available", async function (assert) {
|
||||
@ -129,14 +129,14 @@ module("Integration | Component | light-dark-img", function (hooks) {
|
||||
|
||||
await render(<template><LightDarkImg @lightImg={{lightSrc}} /></template>);
|
||||
|
||||
assert.ok(!exists("picture"), "there is no picture tag");
|
||||
assert.dom("picture").doesNotExist("there is no picture tag");
|
||||
assert.strictEqual(count("img"), 1, "there is an img tag");
|
||||
assert.strictEqual(
|
||||
query("img").getAttribute("src"),
|
||||
lightSrc.url,
|
||||
"the img src is the light image"
|
||||
);
|
||||
assert.ok(!exists("source"), "there are no source tags");
|
||||
assert.dom("source").doesNotExist("there are no source tags");
|
||||
});
|
||||
|
||||
test("dark theme with light and dark images provided | dark mode not available", async function (assert) {
|
||||
@ -168,9 +168,9 @@ module("Integration | Component | light-dark-img", function (hooks) {
|
||||
|
||||
await render(<template><LightDarkImg /></template>);
|
||||
|
||||
assert.ok(!exists("picture"), "there is no picture tag");
|
||||
assert.ok(!exists("img"), "there is no img tag");
|
||||
assert.ok(!exists("source"), "there are no source tags");
|
||||
assert.dom("picture").doesNotExist("there is no picture tag");
|
||||
assert.dom("img").doesNotExist("there is no img tag");
|
||||
assert.dom("source").doesNotExist("there are no source tags");
|
||||
});
|
||||
|
||||
test("dark theme with only light image provided | dark mode available", async function (assert) {
|
||||
@ -179,14 +179,14 @@ module("Integration | Component | light-dark-img", function (hooks) {
|
||||
|
||||
await render(<template><LightDarkImg @lightImg={{lightSrc}} /></template>);
|
||||
|
||||
assert.ok(!exists("picture"), "there is no picture tag");
|
||||
assert.dom("picture").doesNotExist("there is no picture tag");
|
||||
assert.strictEqual(count("img"), 1, "there is an img tag");
|
||||
assert.strictEqual(
|
||||
query("img").getAttribute("src"),
|
||||
lightSrc.url,
|
||||
"the img src is the light image"
|
||||
);
|
||||
assert.ok(!exists("source"), "there are no source tags");
|
||||
assert.dom("source").doesNotExist("there are no source tags");
|
||||
});
|
||||
|
||||
test("dark theme with light and dark images provided | dark mode available", async function (assert) {
|
||||
|
@ -6,7 +6,7 @@ import SearchMenu, {
|
||||
import searchFixtures from "discourse/tests/fixtures/search-fixtures";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import pretender, { response } from "discourse/tests/helpers/create-pretender";
|
||||
import { exists, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
// Note this isn't a full-fledge test of the search menu. Those tests are in
|
||||
@ -36,7 +36,7 @@ module("Integration | Component | search-menu", function (hooks) {
|
||||
.dom(".show-advanced-search")
|
||||
.exists("it shows full page search button");
|
||||
|
||||
assert.notOk(exists(".menu-panel"), "Menu panel is not rendered yet");
|
||||
assert.dom(".menu-panel").doesNotExist("Menu panel is not rendered yet");
|
||||
|
||||
await click("#search-term");
|
||||
|
||||
@ -60,7 +60,7 @@ module("Integration | Component | search-menu", function (hooks) {
|
||||
|
||||
await triggerKeyEvent("#search-term", "keydown", "Escape");
|
||||
|
||||
assert.notOk(exists(".menu-panel"), "Menu panel is gone");
|
||||
assert.dom(".menu-panel").doesNotExist("Menu panel is gone");
|
||||
|
||||
await click("#search-term");
|
||||
await click("#search-term");
|
||||
|
@ -2,7 +2,7 @@ import { fillIn, render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists, paste, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { paste, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
import pretender, { response } from "../../../helpers/create-pretender";
|
||||
|
||||
@ -132,7 +132,7 @@ module(
|
||||
await this.subject.expand();
|
||||
await fillIn(".filter-input", "test-user");
|
||||
|
||||
assert.ok(exists(".user-status-message"), "user status is rendered");
|
||||
assert.dom(".user-status-message").exists("user status is rendered");
|
||||
assert
|
||||
.dom(".user-status-message .emoji")
|
||||
.hasAttribute("alt", status.emoji, "status emoji is correct");
|
||||
|
@ -2,11 +2,7 @@ import { fillIn, render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import {
|
||||
exists,
|
||||
fakeTime,
|
||||
queryAll,
|
||||
} from "discourse/tests/helpers/qunit-helpers";
|
||||
import { fakeTime, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
@ -40,7 +36,7 @@ module(
|
||||
/>
|
||||
`);
|
||||
|
||||
assert.ok(exists(".future-date-input-selector"), "Selector is rendered");
|
||||
assert.dom(".future-date-input-selector").exists("selector is rendered");
|
||||
|
||||
assert.strictEqual(
|
||||
this.subject.header().label(),
|
||||
@ -50,10 +46,9 @@ module(
|
||||
|
||||
await this.subject.expand();
|
||||
|
||||
assert.ok(
|
||||
exists(".select-kit-collection"),
|
||||
"List of options is rendered"
|
||||
);
|
||||
assert
|
||||
.dom(".select-kit-collection")
|
||||
.exists("list of options is rendered");
|
||||
});
|
||||
|
||||
test("renders default options", async function (assert) {
|
||||
|
@ -2,7 +2,7 @@ import { click, render, triggerKeyEvent } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists, query, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { query, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
@ -84,10 +84,9 @@ module(
|
||||
})
|
||||
);
|
||||
await this.subject.fillInFilter("dawg");
|
||||
assert.notOk(
|
||||
exists(".select-kit-collection .select-kit-row"),
|
||||
"it doesn’t show any options"
|
||||
);
|
||||
assert
|
||||
.dom(".select-kit-collection .select-kit-row")
|
||||
.doesNotExist("doesn’t show any options");
|
||||
});
|
||||
|
||||
test("required_tag_group", async function (assert) {
|
||||
@ -122,19 +121,17 @@ module(
|
||||
await this.subject.expand();
|
||||
await this.subject.fillInFilter("#");
|
||||
|
||||
assert.notOk(exists(".select-kit-error"), "it doesn’t show any error");
|
||||
assert.notOk(
|
||||
exists(".select-kit-row[data-value='#']"),
|
||||
"it doesn’t allow to create this tag"
|
||||
);
|
||||
assert.dom(".select-kit-error").doesNotExist("doesn’t show any error");
|
||||
assert
|
||||
.dom(".select-kit-row[data-value='#']")
|
||||
.doesNotExist("doesn't allow to create this tag");
|
||||
|
||||
await this.subject.fillInFilter("test");
|
||||
|
||||
assert.strictEqual(this.subject.filter().value(), "#test");
|
||||
assert.ok(
|
||||
exists(".select-kit-row[data-value='test']"),
|
||||
"it filters out the invalid char from the suggested tag"
|
||||
);
|
||||
assert
|
||||
.dom(".select-kit-row[data-value='test']")
|
||||
.exists("filters out the invalid char from the suggested tag");
|
||||
});
|
||||
|
||||
test("creating a tag over the length limit", async function (assert) {
|
||||
@ -143,10 +140,9 @@ module(
|
||||
await this.subject.expand();
|
||||
await this.subject.fillInFilter("foo");
|
||||
|
||||
assert.ok(
|
||||
exists(".select-kit-row[data-value='f']"),
|
||||
"it forces the max length of the tag"
|
||||
);
|
||||
assert
|
||||
.dom(".select-kit-row[data-value='f']")
|
||||
.exists("forces the max length of the tag");
|
||||
});
|
||||
|
||||
test("values in hiddenFromPreview will not display in preview", async function (assert) {
|
||||
|
@ -2,7 +2,6 @@ import { click, render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
module("Integration | Component | sidebar | section", function (hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
@ -43,7 +42,7 @@ module("Integration | Component | sidebar | section", function (hooks) {
|
||||
.doesNotExist("section is not displayed");
|
||||
|
||||
this.set("displaySection", true);
|
||||
assert.ok(exists(".sidebar-section-wrapper"), "section is displayed");
|
||||
assert.dom(".sidebar-section-wrapper").exists("section is displayed");
|
||||
});
|
||||
|
||||
test("can expand and collapse content when section is collapsible", async function (assert) {
|
||||
@ -59,7 +58,7 @@ module("Integration | Component | sidebar | section", function (hooks) {
|
||||
this.headerActions = [];
|
||||
await render(template);
|
||||
|
||||
assert.ok(exists(".sidebar-section-content"), "shows content by default");
|
||||
assert.dom(".sidebar-section-content").exists("shows content by default");
|
||||
|
||||
await click(".sidebar-section-header-caret");
|
||||
|
||||
|
@ -2,7 +2,7 @@ import { render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { count, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { count } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
module("Integration | Component | slow-mode-info", function (hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
@ -12,7 +12,7 @@ module("Integration | Component | slow-mode-info", function (hooks) {
|
||||
|
||||
await render(hbs`<SlowModeInfo @topic={{this.topic}} />`);
|
||||
|
||||
assert.ok(!exists(".slow-mode-heading"), "it doesn't render the notice");
|
||||
assert.dom(".slow-mode-heading").doesNotExist("doesn't render the notice");
|
||||
});
|
||||
|
||||
test("doesn't render if the slow mode is disabled", async function (assert) {
|
||||
@ -20,7 +20,7 @@ module("Integration | Component | slow-mode-info", function (hooks) {
|
||||
|
||||
await render(hbs`<SlowModeInfo @topic={{this.topic}} />`);
|
||||
|
||||
assert.ok(!exists(".slow-mode-heading"), "it doesn't render the notice");
|
||||
assert.dom(".slow-mode-heading").doesNotExist("doesn't render the notice");
|
||||
});
|
||||
|
||||
test("renders if slow mode is enabled", async function (assert) {
|
||||
|
@ -3,7 +3,6 @@ import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import {
|
||||
exists,
|
||||
fakeTime,
|
||||
query,
|
||||
queryAll,
|
||||
@ -59,7 +58,7 @@ module("Integration | Component | time-shortcut-picker", function (hooks) {
|
||||
|
||||
await render(hbs`<TimeShortcutPicker @_itsatrap={{this.itsatrap}} />`);
|
||||
|
||||
assert.ok(exists("#tap_tile_later_this_week"), "it has later this week");
|
||||
assert.dom("#tap_tile_later_this_week").exists("has later this week");
|
||||
});
|
||||
|
||||
test("does not show 'Later This Week' if today is >= Thursday", async function (assert) {
|
||||
@ -100,7 +99,7 @@ module("Integration | Component | time-shortcut-picker", function (hooks) {
|
||||
|
||||
await render(hbs`<TimeShortcutPicker @_itsatrap={{this.itsatrap}} />`);
|
||||
|
||||
assert.ok(exists("#tap_tile_later_today"), "it does have later today");
|
||||
assert.dom("#tap_tile_later_today").exists("has later today");
|
||||
});
|
||||
|
||||
test("does not show 'Later Today' if it is after 5pm", async function (assert) {
|
||||
|
@ -2,7 +2,7 @@ import { click, render } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { count, exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { count } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
module("Integration | Component | uppy-image-uploader", function (hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
@ -48,7 +48,7 @@ module("Integration | Component | uppy-image-uploader", function (hooks) {
|
||||
"it displays the upload icon"
|
||||
);
|
||||
|
||||
assert.ok(!exists(".d-icon-trash-can"), "it does not display trash icon");
|
||||
assert.dom(".d-icon-trash-can").doesNotExist("does not display trash icon");
|
||||
|
||||
assert
|
||||
.dom(".image-uploader-lightbox-btn")
|
||||
@ -66,7 +66,7 @@ module("Integration | Component | uppy-image-uploader", function (hooks) {
|
||||
"it displays the upload icon"
|
||||
);
|
||||
|
||||
assert.ok(!exists(".d-icon-trash-can"), "it does not display trash icon");
|
||||
assert.dom(".d-icon-trash-can").doesNotExist("does not display trash icon");
|
||||
|
||||
assert
|
||||
.dom(".image-uploader-lightbox-btn")
|
||||
|
@ -3,7 +3,6 @@ import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { resetFlair } from "discourse/lib/avatar-flair";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
function setupSiteGroups(that) {
|
||||
that.site.groups = [
|
||||
@ -60,8 +59,8 @@ module("Integration | Component | user-avatar-flair", function (hooks) {
|
||||
|
||||
await render(hbs`<UserAvatarFlair @user={{this.args}} />`);
|
||||
|
||||
assert.ok(exists(".avatar-flair"), "it has the tag");
|
||||
assert.ok(exists("svg.d-icon-bars"), "it has the svg icon");
|
||||
assert.dom(".avatar-flair").exists("has the tag");
|
||||
assert.dom("svg.d-icon-bars").exists("has the svg icon");
|
||||
assert.dom(".avatar-flair").hasStyle({
|
||||
backgroundColor: "rgb(204, 0, 10)",
|
||||
color: "rgb(255, 255, 250)",
|
||||
@ -79,8 +78,8 @@ module("Integration | Component | user-avatar-flair", function (hooks) {
|
||||
|
||||
await render(hbs`<UserAvatarFlair @user={{this.args}} />`);
|
||||
|
||||
assert.ok(exists(".avatar-flair"), "it has the tag");
|
||||
assert.ok(exists("svg.d-icon-bars"), "it has the svg icon");
|
||||
assert.dom(".avatar-flair").exists("has the tag");
|
||||
assert.dom("svg.d-icon-bars").exists("has the svg icon");
|
||||
assert.dom(".avatar-flair").hasStyle({
|
||||
backgroundColor: "rgb(204, 0, 5)",
|
||||
color: "rgb(255, 255, 245)",
|
||||
@ -98,8 +97,8 @@ module("Integration | Component | user-avatar-flair", function (hooks) {
|
||||
|
||||
await render(hbs`<UserAvatarFlair @user={{this.args}} />`);
|
||||
|
||||
assert.ok(exists(".avatar-flair"), "it has the tag");
|
||||
assert.ok(exists("svg.d-icon-dice-two"), "it has the svg icon");
|
||||
assert.dom(".avatar-flair").exists("has the tag");
|
||||
assert.dom("svg.d-icon-dice-two").exists("has the svg icon");
|
||||
assert.dom(".avatar-flair").hasStyle({
|
||||
backgroundColor: "rgb(204, 0, 2)",
|
||||
color: "rgb(255, 255, 242)",
|
||||
@ -117,7 +116,7 @@ module("Integration | Component | user-avatar-flair", function (hooks) {
|
||||
|
||||
await render(hbs`<UserAvatarFlair @user={{this.args}} />`);
|
||||
|
||||
assert.ok(!exists(".avatar-flair"), "it does not render a flair");
|
||||
assert.dom(".avatar-flair").doesNotExist("does not render a flair");
|
||||
});
|
||||
|
||||
test("avatar flair for trust level with fallback", async function (assert) {
|
||||
@ -131,8 +130,8 @@ module("Integration | Component | user-avatar-flair", function (hooks) {
|
||||
|
||||
await render(hbs`<UserAvatarFlair @user={{this.args}} />`);
|
||||
|
||||
assert.ok(exists(".avatar-flair"), "it has the tag");
|
||||
assert.ok(exists("svg.d-icon-dice-two"), "it has the svg icon");
|
||||
assert.dom(".avatar-flair").exists("has the tag");
|
||||
assert.dom("svg.d-icon-dice-two").exists("has the svg icon");
|
||||
assert.dom(".avatar-flair").hasStyle({
|
||||
backgroundColor: "rgb(204, 0, 2)",
|
||||
color: "rgb(255, 255, 242)",
|
||||
@ -151,7 +150,7 @@ module("Integration | Component | user-avatar-flair", function (hooks) {
|
||||
|
||||
await render(hbs`<UserAvatarFlair @user={{this.args}} />`);
|
||||
|
||||
assert.ok(!exists(".avatar-flair"), "it does not render a flair");
|
||||
assert.dom(".avatar-flair").doesNotExist("does not render a flair");
|
||||
});
|
||||
|
||||
test("avatar flair for primary group flair", async function (assert) {
|
||||
@ -170,8 +169,8 @@ module("Integration | Component | user-avatar-flair", function (hooks) {
|
||||
|
||||
await render(hbs`<UserAvatarFlair @user={{this.args}} />`);
|
||||
|
||||
assert.ok(exists(".avatar-flair"), "it has the tag");
|
||||
assert.ok(exists("svg.d-icon-xmark"), "it has the svg icon");
|
||||
assert.dom(".avatar-flair").exists("has the tag");
|
||||
assert.dom("svg.d-icon-xmark").exists("has the svg icon");
|
||||
assert.dom(".avatar-flair").hasStyle({
|
||||
backgroundColor: "rgb(18, 52, 86)",
|
||||
color: "rgb(176, 176, 176)",
|
||||
@ -188,6 +187,6 @@ module("Integration | Component | user-avatar-flair", function (hooks) {
|
||||
|
||||
await render(hbs`<UserAvatarFlair @user={{this.args}} />`);
|
||||
|
||||
assert.ok(!exists(".avatar-flair"), "it does not render a flair");
|
||||
assert.dom(".avatar-flair").doesNotExist("does not render a flair");
|
||||
});
|
||||
});
|
||||
|
@ -2,7 +2,7 @@ import { render, triggerEvent } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { query } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
module("Integration | Component | user-info", function (hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
@ -33,7 +33,7 @@ module("Integration | Component | user-info", function (hooks) {
|
||||
);
|
||||
|
||||
this.set("includeLink", true);
|
||||
assert.ok(exists(`.name-line a[href="/u/${this.currentUser.username}"]`));
|
||||
assert.dom(`.name-line a[href="/u/${this.currentUser.username}"]`).exists();
|
||||
|
||||
this.set("includeLink", false);
|
||||
assert
|
||||
|
@ -4,7 +4,7 @@ import { module, test } from "qunit";
|
||||
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import pretender, { response } from "discourse/tests/helpers/create-pretender";
|
||||
import { exists, query, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { query, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
module(
|
||||
@ -78,10 +78,9 @@ module(
|
||||
I18n.t("user.no_bookmarks_body", { icon: "" }).trim(),
|
||||
"empty state body is shown"
|
||||
);
|
||||
assert.ok(
|
||||
exists(".empty-state-body svg.d-icon-bookmark"),
|
||||
"icon is correctly rendered in the empty state body"
|
||||
);
|
||||
assert
|
||||
.dom(".empty-state-body svg.d-icon-bookmark")
|
||||
.exists("icon is correctly rendered in the empty state body");
|
||||
});
|
||||
}
|
||||
);
|
||||
|
@ -11,7 +11,7 @@ import UserMenuReviewable from "discourse/models/user-menu-reviewable";
|
||||
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
|
||||
import PrivateMessagesFixture from "discourse/tests/fixtures/private-messages-fixtures";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { cloneJSON, deepMerge } from "discourse-common/lib/object";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
@ -68,14 +68,12 @@ module(
|
||||
this.item.notification.read = true;
|
||||
await settled();
|
||||
|
||||
assert.ok(
|
||||
exists("li.read"),
|
||||
"the item re-renders when the read property is updated"
|
||||
);
|
||||
assert.notOk(
|
||||
exists("li.unread"),
|
||||
"the item re-renders when the read property is updated"
|
||||
);
|
||||
assert
|
||||
.dom("li.read")
|
||||
.exists("the item re-renders when the read property is updated");
|
||||
assert
|
||||
.dom("li.unread")
|
||||
.doesNotExist("the item re-renders when the read property is updated");
|
||||
});
|
||||
|
||||
test("pushes the notification type name to the classList", async function (assert) {
|
||||
@ -95,10 +93,9 @@ module(
|
||||
);
|
||||
await settled();
|
||||
|
||||
assert.ok(
|
||||
exists("li.private-message"),
|
||||
"replaces underscores in type name with dashes"
|
||||
);
|
||||
assert
|
||||
.dom("li.private-message")
|
||||
.exists("replaces underscores in type name with dashes");
|
||||
});
|
||||
|
||||
test("pushes is-warning to the classList if the notification originates from a warning PM", async function (assert) {
|
||||
@ -208,10 +205,11 @@ module(
|
||||
})
|
||||
);
|
||||
await render(template);
|
||||
assert.ok(
|
||||
exists("li a .item-description img.emoji"),
|
||||
"emojis are unescaped when fancy_title is used for description"
|
||||
);
|
||||
assert
|
||||
.dom("li a .item-description img.emoji")
|
||||
.exists(
|
||||
"emojis are unescaped when fancy_title is used for description"
|
||||
);
|
||||
});
|
||||
|
||||
test("topic_title from data is emoji-unescaped safely", async function (assert) {
|
||||
@ -232,10 +230,9 @@ module(
|
||||
"unsafe title with <a> unescaped emoji",
|
||||
"topic_title is rendered safely"
|
||||
);
|
||||
assert.ok(
|
||||
exists(".item-description img.emoji"),
|
||||
"emoji is rendered correctly"
|
||||
);
|
||||
assert
|
||||
.dom(".item-description img.emoji")
|
||||
.exists("emoji is rendered correctly");
|
||||
});
|
||||
|
||||
test("various aspects can be customized according to the notification's render director", async function (assert) {
|
||||
@ -289,10 +286,9 @@ module(
|
||||
|
||||
await render(template);
|
||||
|
||||
assert.ok(
|
||||
exists("li.additional.classes"),
|
||||
"extra classes are included on the item"
|
||||
);
|
||||
assert
|
||||
.dom("li.additional.classes")
|
||||
.exists("extra classes are included on the item");
|
||||
|
||||
const link = query("li a");
|
||||
assert.ok(
|
||||
@ -305,7 +301,7 @@ module(
|
||||
"link title is customized and rendered safely"
|
||||
);
|
||||
|
||||
assert.ok(exists("svg.d-icon-wrench"), "icon is customized");
|
||||
assert.dom("svg.d-icon-wrench").exists("icon is customized");
|
||||
|
||||
const label = query("li .item-label");
|
||||
assert.ok(
|
||||
@ -356,7 +352,9 @@ module(
|
||||
);
|
||||
|
||||
await render(template);
|
||||
assert.notOk(exists(".item-description"), "description is not rendered");
|
||||
assert
|
||||
.dom(".item-description")
|
||||
.doesNotExist("description is not rendered");
|
||||
assert.strictEqual(
|
||||
query("li").textContent.trim(),
|
||||
"notification label",
|
||||
@ -395,7 +393,7 @@ module(
|
||||
"notification description",
|
||||
"only notification description is displayed"
|
||||
);
|
||||
assert.notOk(exists(".item-label"), "label is not rendered");
|
||||
assert.dom(".item-label").doesNotExist("label is not rendered");
|
||||
});
|
||||
}
|
||||
);
|
||||
|
@ -5,7 +5,7 @@ import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notificati
|
||||
import NotificationFixtures from "discourse/tests/fixtures/notification-fixtures";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import pretender, { response } from "discourse/tests/helpers/create-pretender";
|
||||
import { exists, query, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { query, queryAll } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { cloneJSON } from "discourse-common/lib/object";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
@ -120,10 +120,9 @@ module(
|
||||
2,
|
||||
"notifications list is refreshed"
|
||||
);
|
||||
assert.ok(
|
||||
!exists(".panel-body-bottom .btn.notifications-dismiss"),
|
||||
"dismiss button is not shown"
|
||||
);
|
||||
assert
|
||||
.dom(".panel-body-bottom .btn.notifications-dismiss")
|
||||
.doesNotExist("dismiss button is not shown");
|
||||
});
|
||||
|
||||
test("all notifications tab shows pending reviewables and sorts them with unread notifications based on their creation date", async function (assert) {
|
||||
|
@ -2,7 +2,7 @@ import { render, triggerEvent } from "@ember/test-helpers";
|
||||
import { hbs } from "ember-cli-htmlbars";
|
||||
import { module, test } from "qunit";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { exists, fakeTime, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { fakeTime, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
|
||||
async function mouseenter() {
|
||||
await triggerEvent(query(".user-status-message"), "mousemove");
|
||||
@ -24,7 +24,7 @@ module("Integration | Component | user-status-message", function (hooks) {
|
||||
|
||||
test("it renders user status emoji", async function (assert) {
|
||||
await render(hbs`<UserStatusMessage @status={{this.status}} />`);
|
||||
assert.ok(exists("img.emoji[alt='tooth']"), "the status emoji is shown");
|
||||
assert.dom("img.emoji[alt='tooth']").exists("the status emoji is shown");
|
||||
});
|
||||
|
||||
test("it renders status description if enabled", async function (assert) {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user