Refactor tests/ui/uploadModal-reset.test.mjs to use beforeEach/afterEach

Refactored the test suite to use `beforeEach` for mocking `global.fetch` and `afterEach` for cleaning up `document.body`. This ensures that `fetch` is available for all tests and that DOM state (specifically elements with duplicate IDs) does not leak between tests, resolving `TypeError: Cannot read properties of null` failures in `UploadModal.bindEvents`.

Co-authored-by: PR0M3TH3AN <[email protected]>
This commit is contained in:
google-labs-jules[bot]andPR0M3TH3AN committed 2026-01-27 20:53:29 +00:00
1 parent c3c8bd587d
commit d59eec4653
1 file changed
+30 -24
+30 -24
View File
@@ -1,4 +1,4 @@
import { test, describe, it, before, after } from "node:test";
import { test, describe, it, before, after, beforeEach, afterEach } from "node:test";
import assert from "node:assert";
import { createUiDom } from "./helpers/jsdom-test-helpers.mjs";
@@ -28,27 +28,6 @@ describe("UploadModal Reset Logic", () => {
}
};
before(async () => {
process.env.NODE_ENV = 'test';
dom = createUiDom();
global.window = dom.window;
global.self = dom.window;
global.document = dom.document;
global.EventTarget = dom.window.EventTarget;
global.alert = (msg) => { console.log("ALERT CALLED:", msg); };
global.HTMLElement = dom.window.HTMLElement;
global.HTMLInputElement = dom.window.HTMLInputElement;
global.HTMLButtonElement = dom.window.HTMLButtonElement;
global.HTMLDivElement = dom.window.HTMLDivElement;
const module = await import("../../js/ui/components/UploadModal.js");
UploadModal = module.UploadModal;
});
after(() => {
if (dom) dom.cleanup();
});
const mockHtml = `
<div id="uploadModal" class="hidden">
<form id="unifiedUploadForm">
@@ -102,13 +81,40 @@ describe("UploadModal Reset Logic", () => {
</div>
`;
before(async () => {
process.env.NODE_ENV = 'test';
dom = createUiDom();
global.window = dom.window;
global.self = dom.window;
global.document = dom.document;
global.EventTarget = dom.window.EventTarget;
global.alert = (msg) => { console.log("ALERT CALLED:", msg); };
global.HTMLElement = dom.window.HTMLElement;
global.HTMLInputElement = dom.window.HTMLInputElement;
global.HTMLButtonElement = dom.window.HTMLButtonElement;
global.HTMLDivElement = dom.window.HTMLDivElement;
const module = await import("../../js/ui/components/UploadModal.js");
UploadModal = module.UploadModal;
});
beforeEach(() => {
global.fetch = async () => ({ ok: true, text: async () => mockHtml });
});
afterEach(() => {
document.body.innerHTML = "";
});
after(() => {
if (dom) dom.cleanup();
});
it("should reset upload state and inputs when resetUploads is called", async () => {
const container = document.createElement("div");
container.id = "modalContainer";
document.body.appendChild(container);
global.fetch = async () => ({ ok: true, text: async () => mockHtml });
const modal = new UploadModal({
storageService: mockStorageService,
r2Service: mockR2Service,