0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-09 20:02:54 +01:00
discourse-custom-wizard/test/javascripts/acceptance/admin-submissions-test.js
2024-01-26 16:18:11 +01:00

237 Zeilen
8 KiB
JavaScript

import {
acceptance,
query,
queryAll,
} from "discourse/tests/helpers/qunit-helpers";
import { test } from "qunit";
import { click, visit } from "@ember/test-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
import {
getAnotherWizardSubmission,
getSuppliers,
getUnsubscribedAdminWizards,
getWizard,
getWizardSubmissions,
} from "../helpers/admin-wizard";
acceptance("Admin | Submissions", function (needs) {
needs.user();
needs.settings({
custom_wizard_enabled: true,
available_locales: JSON.stringify([{ name: "English", value: "en" }]),
});
needs.pretender((server, helper) => {
server.get("/admin/wizards/submissions", () => {
return helper.response([
{ id: "this_is_testing_wizard", name: "This is testing wizard" },
{ id: "another_wizard", name: "another wizard" },
]);
});
server.get("/admin/wizards/submissions/this_is_testing_wizard", () => {
return helper.response(getWizardSubmissions);
});
server.get("/admin/wizards/submissions/another_wizard", () => {
return helper.response(getAnotherWizardSubmission);
});
server.get("/admin/wizards/subscription", () => {
return helper.response(getUnsubscribedAdminWizards);
});
server.get("/admin/wizards/wizard", () => {
return helper.response(getWizard);
});
server.get("/admin/plugins/subscription-client/suppliers", () => {
return helper.response(getSuppliers);
});
});
test("View submissions fields tab and content", async (assert) => {
await visit("/admin/wizards/submissions");
const wizards = selectKit(".select-kit");
assert.ok(
query(".message-content").innerText.includes(
"Select a wizard to see its submissions"
),
"it displays submissions message"
);
assert.ok(
query(".message-content").innerText.includes("Select a wizard"),
"it displays list of wizards"
);
await wizards.expand();
await wizards.selectRowByValue("this_is_testing_wizard");
assert.ok(
query(".message-content").innerText.includes(
"You're viewing the submissions of the This is testing wizard"
),
"it displays submissions for a selected wizard"
);
const submissions = getWizardSubmissions.submissions; // Get submissions data from your JSON file
const rows = queryAll("table tbody tr");
for (let i = 0; i < submissions.length; i++) {
const dateCell = rows[i].querySelector("td:nth-child(1)");
const userCell = rows[i].querySelector("td:nth-child(2)");
const stepCell = rows[i].querySelector("td:nth-child(3)");
const expectedDate = moment(submissions[i].submitted_at).format(
"MMM D, YYYY h:mm a"
);
assert.equal(
dateCell.innerText,
expectedDate,
`Date is displayed correctly for submission ${i + 1}`
);
assert.equal(
userCell.innerText.trim(),
submissions[i].user.username,
`User is displayed correctly for submission ${i + 1}`
);
assert.equal(
stepCell.innerText.trim().split("\n")[0],
submissions[i].fields.step_1_field_1.value,
`Step is displayed correctly for submission ${i + 1}`
);
}
assert.ok(
queryAll("table tbody tr").length >= 1,
"Displays submissions list"
);
await wizards.expand();
await click('[data-name="Select a wizard"]');
const wizardContainerDiv = query(".admin-wizard-container");
assert.ok(wizardContainerDiv.children.length === 0, "the div is empty");
});
test("View submissions tab for another wizard with more steps", async (assert) => {
await visit("/admin/wizards/submissions");
const wizards = selectKit(".select-kit");
await wizards.expand();
await wizards.selectRowByValue("another_wizard");
assert.ok(
query(".message-content").innerText.includes(
"You're viewing the submissions of the another wizard"
),
"it displays submissions for another wizard"
);
const submissions = getAnotherWizardSubmission.submissions; // Get submissions data from your JSON file
const rows = queryAll("table tbody tr");
for (let i = 0; i < submissions.length; i++) {
const dateCell = rows[i].querySelector("td:nth-child(1)");
const userCell = rows[i].querySelector("td:nth-child(2)");
const step1Cell = rows[i].querySelector("td:nth-child(3)");
const step2Cell = rows[i].querySelector("td:nth-child(4)");
const submission = submissions[i];
const expectedDate = moment(submission.submitted_at).format(
"MMM D, YYYY h:mm a"
);
assert.equal(
dateCell.innerText,
expectedDate,
`Date is displayed correctly for submission ${i + 1}`
);
assert.equal(
userCell.innerText.trim(),
submissions[i].user.username,
`User is displayed correctly for submission ${i + 1}`
);
assert.equal(
step1Cell.innerText.trim().split("\n")[0],
submissions[i].fields.step_1_field_1.value,
`Step 1 is displayed correctly for submission ${i + 1}`
);
assert.equal(
step2Cell.innerText.trim().split("\n")[0],
submissions[i].fields.step_2_field_1.value,
`Step 2 is displayed correctly for submission ${i + 1}`
);
}
assert.ok(
queryAll("table tbody tr").length >= 1,
"Displays submissions list for another wizard"
);
});
test("Modal actions for submissions", async (assert) => {
await visit("/admin/wizards/submissions");
const wizards = await selectKit(".select-kit");
await wizards.expand();
await wizards.selectRowByValue("this_is_testing_wizard");
await click(".open-edit-columns-btn");
assert.dom(".d-modal__body").exists("Modal is displayed");
const userCheckbox = queryAll(
".edit-directory-columns-container .edit-directory-column:nth-child(2) .left-content .column-name input"
);
assert.ok(userCheckbox, "User checkbox is present");
assert.ok(userCheckbox[0].checked, "User checkbox is checked by default");
await click(userCheckbox[0]);
assert.notOk(
userCheckbox[0].checked,
"User checkbox is unchecked after clicking"
);
await click(".modal-footer .btn-primary");
assert
.dom("table thead th")
.doesNotIncludeText("User", "User column is not displayed");
await click(".open-edit-columns-btn");
const submittedAtCheckbox = queryAll(
".edit-directory-columns-container .edit-directory-column:nth-child(1) .left-content .column-name input"
);
assert.ok(submittedAtCheckbox, "Submitted At checkbox is present");
assert.ok(
submittedAtCheckbox[0].checked,
"Submitted At checkbox is checked by default"
);
await click(submittedAtCheckbox[0]);
await click(".modal-footer .btn-primary");
assert.notOk(
submittedAtCheckbox[0].checked,
"Submitted At checkbox is unchecked after clicking"
);
assert
.dom("table thead th")
.doesNotIncludeText(
"Submitted At",
"Submitted At column is not displayed"
);
await click(".open-edit-columns-btn");
await click(".modal-footer .btn-secondary");
assert
.dom("table thead th:nth-child(1)")
.hasText("Submitted At", "Submitted At column is displayed after reset");
assert
.dom("table thead th:nth-child(2)")
.hasText("User", "User column is displayed after reset");
});
test("Download submissions", async (assert) => {
await visit("/admin/wizards/submissions");
const wizards = await selectKit(".select-kit");
await wizards.expand();
await wizards.selectRowByValue("this_is_testing_wizard");
const downloadLinks = queryAll(".download-link");
assert.ok(downloadLinks.length > 1, "Download links are present");
const downloadLink = downloadLinks[1];
await click(downloadLink);
const expectedURL =
"/admin/wizards/submissions/this_is_testing_wizard/download";
const actualURL = new URL(downloadLink.href);
assert.equal(
actualURL.pathname,
expectedURL,
"Download link has correct URL"
);
});
});