mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-11-02 19:02:28 +00:00
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:
1 parent
c3c8bd587d
commit
d59eec4653
1 file changed
+30
-24
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user