DEV: Update tests (#323)

new imports, resolved deprecations, qunit-dom, strict assertions, fixed flakes, migrated the legacy component test, typos, gjs
This commit is contained in:
Jarek Radosz
2024-08-28 13:51:37 +02:00
committed by GitHub
parent ba9ead855e
commit f62d8cc8a2
10 changed files with 372 additions and 499 deletions
@@ -1,20 +1,11 @@
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
import { clearPopupMenuOptionsCallback } from "discourse/controllers/composer";
import {
acceptance,
count,
exists,
query,
} from "discourse/tests/helpers/qunit-helpers";
import I18n from "I18n";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import I18n from "discourse-i18n";
acceptance("Data Explorer Plugin | List Queries", function (needs) {
needs.user();
needs.settings({ data_explorer_enabled: true });
needs.hooks.beforeEach(() => {
clearPopupMenuOptionsCallback();
});
needs.pretender((server, helper) => {
server.get("/admin/plugins/explorer/groups.json", () => {
@@ -142,44 +133,38 @@ acceptance("Data Explorer Plugin | List Queries", function (needs) {
});
});
test("it renders the page with the list of queries", async function (assert) {
test("renders the page with the list of queries", async function (assert) {
await visit("/admin/plugins/explorer");
assert.ok(
query("div.query-list input.ember-text-field").placeholder ===
assert
.dom("div.query-list input.ember-text-field")
.hasAttribute(
"placeholder",
I18n.t("explorer.search_placeholder"),
"the search box was rendered"
);
"the search box was rendered"
);
assert.ok(
exists("div.query-list button.btn-icon svg.d-icon-plus"),
"the add query button was rendered"
);
assert
.dom("div.query-list button.btn-icon svg.d-icon-plus")
.exists("the add query button was rendered");
assert.ok(
query("div.query-list button.btn-icon-text span.d-button-label")
.innerText === I18n.t("explorer.import.label"),
"the import button was rendered"
);
assert
.dom("div.query-list button.btn-icon-text span.d-button-label")
.hasText(
I18n.t("explorer.import.label"),
"the import button was rendered"
);
assert.equal(
count("div.container table.recent-queries tbody tr"),
2,
"the list of queries was rendered"
);
assert
.dom("div.container table.recent-queries tbody tr")
.exists({ count: 2 }, "the list of queries was rendered");
assert.ok(
query(
"div.container table.recent-queries tbody tr:nth-child(1) td a"
).innerText.startsWith("Top 100 Likers"),
"The first query was rendered"
);
assert
.dom("div.container table.recent-queries tbody tr:nth-child(1) td a")
.hasText(/^\s*Top 100 Likers/, "The first query was rendered");
assert.ok(
query(
"div.container table.recent-queries tbody tr:nth-child(2) td a"
).innerText.startsWith("Top 100 Active Topics"),
"The second query was rendered"
);
assert
.dom("div.container table.recent-queries tbody tr:nth-child(2) td a")
.hasText(/^\s*Top 100 Active Topics/, "The second query was rendered");
});
});
@@ -1,14 +1,10 @@
import { click, currentURL, fillIn, visit } from "@ember/test-helpers";
import { test } from "qunit";
import { clearPopupMenuOptionsCallback } from "discourse/controllers/composer";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
acceptance("Data Explorer Plugin | New Query", function (needs) {
needs.user();
needs.settings({ data_explorer_enabled: true });
needs.hooks.beforeEach(() => {
clearPopupMenuOptionsCallback();
});
needs.pretender((server, helper) => {
server.get("/admin/plugins/explorer/groups.json", () => {
@@ -61,6 +57,6 @@ acceptance("Data Explorer Plugin | New Query", function (needs) {
// select create new query button
await click(".query-create button");
assert.equal(currentURL(), "/admin/plugins/explorer?id=-15");
assert.strictEqual(currentURL(), "/admin/plugins/explorer?id=-15");
});
});
+17 -20
View File
@@ -1,10 +1,6 @@
import { click, currentURL, fillIn, visit } from "@ember/test-helpers";
import { test } from "qunit";
import {
acceptance,
exists,
query,
} from "discourse/tests/helpers/qunit-helpers";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
acceptance("Data Explorer Plugin | Param Input", function (needs) {
needs.user();
@@ -327,6 +323,7 @@ acceptance("Data Explorer Plugin | Param Input", function (needs) {
},
});
});
server.put("/admin/plugins/explorer/queries/3", () => {
return helper.response({
query: {
@@ -353,7 +350,7 @@ acceptance("Data Explorer Plugin | Param Input", function (needs) {
});
});
test("it puts params for the query into the url", async function (assert) {
test("puts params for the query into the url", async function (assert) {
await visit("/admin/plugins/explorer?id=-6");
const monthsAgoValue = "2";
await fillIn(".query-params input", monthsAgoValue);
@@ -361,10 +358,10 @@ acceptance("Data Explorer Plugin | Param Input", function (needs) {
const searchParams = new URLSearchParams(currentURL().split("?")[1]);
const monthsAgoParam = JSON.parse(searchParams.get("params")).months_ago;
assert.equal(monthsAgoParam, monthsAgoValue);
assert.strictEqual(monthsAgoParam, monthsAgoValue);
});
test("it puts params for the query into the url for group reports", async function (assert) {
test("puts params for the query into the url for group reports", async function (assert) {
await visit("/g/discourse/reports/-8");
const monthsAgoValue = "2";
await fillIn(".query-params input", monthsAgoValue);
@@ -372,32 +369,32 @@ acceptance("Data Explorer Plugin | Param Input", function (needs) {
const searchParams = new URLSearchParams(currentURL().split("?")[1]);
const monthsAgoParam = JSON.parse(searchParams.get("params")).months_ago;
assert.equal(monthsAgoParam, monthsAgoValue);
assert.strictEqual(monthsAgoParam, monthsAgoValue);
});
test("it loads the page if one of the parameter is null", async function (assert) {
test("loads the page if one of the parameter is null", async function (assert) {
await visit('/admin/plugins/explorer?id=-7&params={"user":null}');
assert.ok(exists(".query-params .user-chooser"));
assert.ok(exists(".query-run .btn.btn-primary"));
assert.dom(".query-params .user-chooser").exists();
assert.dom(".query-run .btn.btn-primary").exists();
});
test("it loads the page if one of the parameter is null for group reports", async function (assert) {
test("loads the page if one of the parameter is null for group reports", async function (assert) {
await visit('/g/discourse/reports/-8?params={"months_ago":null}');
assert.ok(exists(".query-params input"));
assert.ok(exists(".query-run .btn.btn-primary"));
assert.dom(".query-params input").exists();
assert.dom(".query-run .btn.btn-primary").exists();
});
test("it applies params when running a report", async function (assert) {
test("applies params when running a report", async function (assert) {
await visit("/g/discourse/reports/-8");
const monthsAgoValue = "2";
await fillIn(".query-params input", monthsAgoValue);
await click("form.query-run button");
assert.equal(query(".query-params input").value, monthsAgoValue);
assert.dom(".query-params input").hasValue(monthsAgoValue);
});
test("it creates input boxes if has parameters when save", async function (assert) {
test("creates input boxes if has parameters when save", async function (assert) {
await visit("/admin/plugins/explorer?id=3");
assert.notOk(exists(".query-params input"));
assert.dom(".query-params input").doesNotExist();
await click(".query-edit .btn-edit-query");
await click(".query-editor .ace_text-input");
await fillIn(
@@ -405,6 +402,6 @@ acceptance("Data Explorer Plugin | Param Input", function (needs) {
"-- [params]\n-- int :months_ago = 1\n\nSELECT 1"
);
await click(".query-edit .btn-save-query");
assert.ok(exists(".query-params input"));
assert.dom(".query-params input").exists();
});
});
+33 -56
View File
@@ -1,20 +1,11 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
import { clearPopupMenuOptionsCallback } from "discourse/controllers/composer";
import {
acceptance,
exists,
query,
queryAll,
} from "discourse/tests/helpers/qunit-helpers";
import I18n from "I18n";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import I18n from "discourse-i18n";
acceptance("Data Explorer Plugin | Run Query", function (needs) {
needs.user();
needs.settings({ data_explorer_enabled: true });
needs.hooks.beforeEach(() => {
clearPopupMenuOptionsCallback();
});
needs.pretender((server, helper) => {
server.get("/admin/plugins/explorer/groups.json", () => {
@@ -185,71 +176,57 @@ acceptance("Data Explorer Plugin | Run Query", function (needs) {
});
});
test("it runs query and renders data and a chart", async function (assert) {
test("runs query and renders data and a chart", async function (assert) {
await visit("/admin/plugins/explorer?id=-6");
assert.ok(
query("div.name h1").innerText.trim() === "Top 100 Likers",
"the query name was rendered"
);
assert
.dom("div.name h1")
.hasText("Top 100 Likers", "the query name was rendered");
assert.ok(exists("div.query-edit"), "the query code was rendered");
assert.dom("div.query-edit").exists("the query code was rendered");
assert.ok(
query("form.query-run button span").innerText.trim() ===
I18n.t("explorer.run"),
"the run button was rendered"
);
assert
.dom("form.query-run button span")
.hasText(I18n.t("explorer.run"), "the run button was rendered");
await click("form.query-run button");
assert.ok(
queryAll("div.query-results table tbody tr").length === 2,
"the table with query results was rendered"
);
assert
.dom("div.query-results table tbody tr")
.exists({ count: 2 }, "the table with query results was rendered");
assert.ok(
query("div.result-info button:nth-child(3) span").innerText.trim() ===
I18n.t("explorer.show_graph"),
"the chart button was rendered"
);
assert
.dom("div.result-info button:nth-child(3) span")
.hasText(I18n.t("explorer.show_graph"), "the chart button was rendered");
await click("div.result-info button:nth-child(3)");
assert.ok(exists("canvas"), "the chart was rendered");
assert.dom("canvas").exists("the chart was rendered");
});
test("it runs query and renders 0, false, and NULL values correctly", async function (assert) {
test("runs query and renders 0, false, and NULL values correctly", async function (assert) {
await visit("/admin/plugins/explorer?id=2");
assert.ok(
query("div.name h1").innerText.trim() === "What about 0?",
"the query name was rendered"
);
assert
.dom("div.name h1")
.hasText("What about 0?", "the query name was rendered");
assert.ok(
query("form.query-run button span").innerText.trim() ===
I18n.t("explorer.run"),
"the run button was rendered"
);
assert
.dom("form.query-run button span")
.hasText(I18n.t("explorer.run"), "the run button was rendered");
await click("form.query-run button");
assert.ok(
query("div.query-results tbody td:nth-child(1)").innerText.trim() === "0",
"renders '0' values"
);
assert
.dom("div.query-results tbody td:nth-child(1)")
.hasText("0", "renders '0' values");
assert.ok(
query("div.query-results tbody td:nth-child(2)").innerText.trim() ===
"NULL",
"renders 'NULL' values"
);
assert
.dom("div.query-results tbody td:nth-child(2)")
.hasText("NULL", "renders 'NULL' values");
assert.ok(
query("div.query-results tbody td:nth-child(3)").innerText.trim() ===
"false",
"renders 'false' values"
);
assert
.dom("div.query-results tbody td:nth-child(3)")
.hasText("false", "renders 'false' values");
});
});