Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-22 09:20:29 +01:00
DEV: Add admin submissions modal action tests
Dieser Commit ist enthalten in:
Ursprung
ed37c13664
Commit
9793ef6453
2 geänderte Dateien mit 197 neuen und 2 gelöschten Zeilen
|
@ -3,6 +3,7 @@ import { test } from "qunit";
|
||||||
import { click, findAll, visit } from "@ember/test-helpers";
|
import { click, findAll, visit } from "@ember/test-helpers";
|
||||||
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
import selectKit from "discourse/tests/helpers/select-kit-helper";
|
||||||
import {
|
import {
|
||||||
|
getAnotherWizardSubmission,
|
||||||
getUnsubscribedAdminWizards,
|
getUnsubscribedAdminWizards,
|
||||||
getWizard,
|
getWizard,
|
||||||
getWizardSubmissions,
|
getWizardSubmissions,
|
||||||
|
@ -18,11 +19,15 @@ acceptance("Admin | Submissions", function (needs) {
|
||||||
server.get("/admin/wizards/submissions", () => {
|
server.get("/admin/wizards/submissions", () => {
|
||||||
return helper.response([
|
return helper.response([
|
||||||
{ id: "this_is_testing_wizard", name: "This is testing wizard" },
|
{ 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", () => {
|
server.get("/admin/wizards/submissions/this_is_testing_wizard", () => {
|
||||||
return helper.response(getWizardSubmissions);
|
return helper.response(getWizardSubmissions);
|
||||||
});
|
});
|
||||||
|
server.get("/admin/wizards/submissions/another_wizard", () => {
|
||||||
|
return helper.response(getAnotherWizardSubmission);
|
||||||
|
});
|
||||||
server.get("/admin/wizards", () => {
|
server.get("/admin/wizards", () => {
|
||||||
return helper.response(getUnsubscribedAdminWizards);
|
return helper.response(getUnsubscribedAdminWizards);
|
||||||
});
|
});
|
||||||
|
@ -30,7 +35,7 @@ acceptance("Admin | Submissions", function (needs) {
|
||||||
return helper.response(getWizard);
|
return helper.response(getWizard);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
test("viewing submissions fields tab", async (assert) => {
|
test("View submissions fields tab and content", async (assert) => {
|
||||||
await visit("/admin/wizards/submissions");
|
await visit("/admin/wizards/submissions");
|
||||||
const wizards = selectKit(".select-kit");
|
const wizards = selectKit(".select-kit");
|
||||||
assert.ok(
|
assert.ok(
|
||||||
|
@ -51,7 +56,33 @@ acceptance("Admin | Submissions", function (needs) {
|
||||||
),
|
),
|
||||||
"it displays submissions for a selected wizard"
|
"it displays submissions for a selected wizard"
|
||||||
);
|
);
|
||||||
assert.ok(find("table"));
|
const submissions = getWizardSubmissions.submissions; // Get submissions data from your JSON file
|
||||||
|
const rows = findAll("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(
|
assert.ok(
|
||||||
findAll("table tbody tr").length >= 1,
|
findAll("table tbody tr").length >= 1,
|
||||||
"Displays submissions list"
|
"Displays submissions list"
|
||||||
|
@ -62,4 +93,116 @@ acceptance("Admin | Submissions", function (needs) {
|
||||||
const wizardContainerDiv = find(".admin-wizard-container");
|
const wizardContainerDiv = find(".admin-wizard-container");
|
||||||
assert.ok(wizardContainerDiv.children().length === 0, "the div is empty");
|
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 = findAll("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(
|
||||||
|
findAll("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(".modal-inner-container").exists("Modal is displayed");
|
||||||
|
|
||||||
|
const userCheckbox = find(
|
||||||
|
".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 = find(
|
||||||
|
".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");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
const getWizard = {
|
const getWizard = {
|
||||||
wizard_list: [
|
wizard_list: [
|
||||||
{ id: "this_is_testing_wizard", name: "This is testing wizard" },
|
{ id: "this_is_testing_wizard", name: "This is testing wizard" },
|
||||||
|
{ id: "another_wizard", name: "another wizard" },
|
||||||
],
|
],
|
||||||
field_types: {
|
field_types: {
|
||||||
text: {
|
text: {
|
||||||
|
@ -317,6 +318,56 @@ const getWizardSubmissions = {
|
||||||
],
|
],
|
||||||
total: 1,
|
total: 1,
|
||||||
};
|
};
|
||||||
|
const getAnotherWizardSubmission = {
|
||||||
|
wizard: { id: "another_wizard", name: "another wizard" },
|
||||||
|
submissions: [
|
||||||
|
{
|
||||||
|
id: "00925bcd58366d07fb698dc5",
|
||||||
|
fields: {
|
||||||
|
step_1_field_1: {
|
||||||
|
value: "More content here by user",
|
||||||
|
type: "text",
|
||||||
|
label: "Content to be inserted",
|
||||||
|
},
|
||||||
|
step_2_field_1: {
|
||||||
|
value: "body of the content created by the user",
|
||||||
|
type: "textarea",
|
||||||
|
label: "Step 2 content",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
submitted_at: "2023-05-10T20:58:11-04:00",
|
||||||
|
user: {
|
||||||
|
id: 29,
|
||||||
|
username: "anotheruser",
|
||||||
|
name: null,
|
||||||
|
avatar_template: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "dc094efcd4873d6da4666c1a",
|
||||||
|
fields: {
|
||||||
|
step_1_field_1: {
|
||||||
|
value: "Title for the content being created",
|
||||||
|
type: "text",
|
||||||
|
label: "Content to be inserted",
|
||||||
|
},
|
||||||
|
step_2_field_1: {
|
||||||
|
value: "THis is the body of the content that will be created",
|
||||||
|
type: "textarea",
|
||||||
|
label: "Step 2 content",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
submitted_at: "2023-05-10T20:56:14-04:00",
|
||||||
|
user: {
|
||||||
|
id: 1,
|
||||||
|
username: "someuser",
|
||||||
|
name: null,
|
||||||
|
avatar_template: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
total: 2,
|
||||||
|
};
|
||||||
const getBusinessAdminWizard = {
|
const getBusinessAdminWizard = {
|
||||||
subscribed: true,
|
subscribed: true,
|
||||||
subscription_type: "business",
|
subscription_type: "business",
|
||||||
|
@ -694,4 +745,5 @@ export {
|
||||||
getCreatedWizard,
|
getCreatedWizard,
|
||||||
getNewApi,
|
getNewApi,
|
||||||
putNewApi,
|
putNewApi,
|
||||||
|
getAnotherWizardSubmission,
|
||||||
};
|
};
|
||||||
|
|
Laden …
In neuem Issue referenzieren