import { acceptance, query } from "discourse/tests/helpers/qunit-helpers"; import { test } from "qunit"; import { click, find, findAll, visit, waitUntil } from "@ember/test-helpers"; import { getUnsubscribedAdminWizards, getWizard, getWizardTestingLog, } from "../helpers/admin-wizard"; import { Promise } from "rsvp"; acceptance("Admin | Manager", 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/manager/this_is_testing_wizard", () => { return helper.response(getWizardTestingLog); }); server.get("/admin/wizards", () => { return helper.response(getUnsubscribedAdminWizards); }); server.get("/admin/wizards/wizard", () => { return helper.response(getWizard); }); server.delete("/admin/wizards/manager/destroy", () => { return helper.response({ success: "OK", destroyed: [ { id: "this_is_testing_wizard", name: "This is testing wizard" }, ], failures: [], }); }); }); async function waitForDestructionAndResetMessage() { await waitUntil( () => document.querySelector(".message-content")?.innerText === "Destruction complete", { timeout: 5000 } ); await waitUntil( () => document.querySelector(".message-content")?.innerText === "Export, import or destroy wizards" && !document.querySelector(".message-block.primary ul") && !find(".message-block.primary svg").classList.contains( "d-icon-check-circle" ), { timeout: 15000 } ); // Wait an additional second after the conditions are met await new Promise((resolve) => setTimeout(resolve, 1000)); } test("viewing manager fields content", async (assert) => { await visit("/admin/wizards/manager"); assert.ok( query(".message-content").innerText.includes( "Export, import or destroy wizards" ), "it displays manager message" ); assert.ok( find('table tr[data-wizard-id="this-is-testing-wizard"]'), "table shows the wizard content list" ); const checkbox = findAll( 'table tr[data-wizard-id="this-is-testing-wizard"] input[type="checkbox"]' ); const exportCheck = checkbox[0]; const destroyCheck = checkbox[1]; const exportButton = find("#export-button"); assert.ok( exportButton.hasAttribute("disabled"), "the export button is disabled when export checkbox is unchecked" ); await click(exportCheck); assert.ok( !exportButton.hasAttribute("disabled"), "the export button is enabled when export checkbox is clicked" ); await click(exportCheck); assert.ok( exportButton.hasAttribute("disabled"), "the export button is disabled when export checkbox is unchecked" ); const destroyButton = find("#destroy-button"); assert.ok( destroyButton.hasAttribute("disabled"), "the destroy button is disabled when destroy checkbox is unchecked" ); await click(destroyCheck); assert.ok( !destroyButton.hasAttribute("disabled"), "the destroy button is enabled when destroy checkbox is clicked" ); await click("#destroy-button"); assert.notOk( find('table tr[data-wizard-id="this-is-testing-wizard"]'), "the wizard row is removed after destroy button is clicked" ); await waitForDestructionAndResetMessage(); }); });