Merge pull request #1844 from PR0M3TH3AN/fix-npm-ci-lockfile-13099291000237224520

Fix npm ci failure and UploadModal integration tests
This commit is contained in:
thePR0M3TH3AN authored and GitHub committed 2026-01-27 15:42:43 -05:00
commit 1b0ad8dfce
3 files changed
+93 -74

No files matched your search

+3
View File
@@ -162,6 +162,9 @@ export class UploadModal {
targetContainer.appendChild(wrapper.firstElementChild);
this.root = targetContainer.querySelector("#uploadModal");
if (!this.root && targetContainer.lastElementChild && targetContainer.lastElementChild.id === "uploadModal") {
this.root = targetContainer.lastElementChild;
}
this.container = targetContainer;
this.cacheElements();
+13
View File
@@ -920,6 +920,19 @@
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@noble/hashes": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz",
"integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==",
"devOptional": true,
"license": "MIT",
"engines": {
"node": ">= 20.19.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+77 -74
View File
@@ -16,6 +16,66 @@ describe("UploadModal Integration", () => {
isMock: true
};
// Updated Mock HTML matching refactored component
const mockHtml = `
<div id="uploadModal" class="hidden">
<form id="unifiedUploadForm">
<button id="btn-mode-upload"></button>
<button id="btn-mode-external"></button>
<div id="section-source-upload">
<button id="btn-storage-settings"></button>
<!-- Storage Settings Container -->
<div id="section-storage-settings" class="hidden">
<!-- Summary View -->
<div id="storage-summary-view" class="hidden">
<span id="storage-lock-status">Locked 🔒</span>
<button id="btn-storage-unlock" class="hidden">Unlock</button>
<button id="btn-manage-storage">Manage</button>
<span id="summary-provider">--</span>
<span id="summary-bucket">--</span>
<span id="summary-url-style">--</span>
<span id="summary-copy"></span>
</div>
<!-- Empty View -->
<div id="storage-empty-view" class="hidden">
<button id="btn-configure-storage">Configure Storage</button>
</div>
</div>
<div id="upload-status-text"></div>
<div id="upload-percent-text"></div>
<progress id="input-progress"></progress>
</div>
<div id="section-source-external"></div>
<!-- Inputs -->
<input id="input-title" />
<textarea id="input-description"></textarea>
<input id="input-thumbnail" />
<input id="input-thumbnail-file" />
<input id="input-file" />
<input id="input-url" />
<input id="input-magnet" />
<input id="check-nsfw" type="checkbox" />
<input id="check-kids" type="checkbox" />
<input id="check-comments" type="checkbox" />
<input id="check-summary-unlock" type="checkbox" />
<button id="btn-advanced-toggle"></button>
<button id="btn-thumbnail-file"></button>
<div id="section-advanced"></div>
<button id="btn-submit"></button>
<div id="submit-status"></div>
</form>
<button id="closeUploadModal"></button>
</div>
`;
before(async () => {
dom = createUiDom();
global.window = dom.window;
@@ -29,6 +89,16 @@ describe("UploadModal Integration", () => {
global.HTMLButtonElement = dom.window.HTMLButtonElement;
global.HTMLDivElement = dom.window.HTMLDivElement;
global.fetch = async (url) => {
if (url.includes("upload-modal.html")) {
return {
ok: true,
text: async () => mockHtml
};
}
return { ok: false };
};
// Load UploadModal class
const module = await import("../../js/ui/components/UploadModal.js");
UploadModal = module.UploadModal;
@@ -67,76 +137,6 @@ describe("UploadModal Integration", () => {
setGlobalModalState: () => {},
});
// Updated Mock HTML matching refactored component
const mockHtml = `
<div id="uploadModal" class="hidden">
<form id="unifiedUploadForm">
<button id="btn-mode-upload"></button>
<button id="btn-mode-external"></button>
<div id="section-source-upload">
<button id="btn-storage-settings"></button>
<!-- Storage Settings Container -->
<div id="section-storage-settings" class="hidden">
<!-- Summary View -->
<div id="storage-summary-view" class="hidden">
<span id="storage-lock-status">Locked 🔒</span>
<button id="btn-storage-unlock" class="hidden">Unlock</button>
<button id="btn-manage-storage">Manage</button>
<span id="summary-provider">--</span>
<span id="summary-bucket">--</span>
<span id="summary-url-style">--</span>
<span id="summary-copy"></span>
</div>
<!-- Empty View -->
<div id="storage-empty-view" class="hidden">
<button id="btn-configure-storage">Configure Storage</button>
</div>
</div>
<div id="upload-status-text"></div>
<div id="upload-percent-text"></div>
<progress id="input-progress"></progress>
</div>
<div id="section-source-external"></div>
<!-- Inputs -->
<input id="input-title" />
<textarea id="input-description"></textarea>
<input id="input-thumbnail" />
<input id="input-thumbnail-file" />
<input id="input-file" />
<input id="input-url" />
<input id="input-magnet" />
<input id="check-nsfw" type="checkbox" />
<input id="check-kids" type="checkbox" />
<input id="check-comments" type="checkbox" />
<input id="check-summary-unlock" type="checkbox" />
<button id="btn-advanced-toggle"></button>
<button id="btn-thumbnail-file"></button>
<div id="section-advanced"></div>
<button id="btn-submit"></button>
<div id="submit-status"></div>
</form>
<button id="closeUploadModal"></button>
</div>
`;
global.fetch = async (url) => {
if (url.includes("upload-modal.html")) {
return {
ok: true,
text: async () => mockHtml
};
}
return { ok: false };
};
await modal.load({ container });
// Verify State
@@ -170,10 +170,13 @@ describe("UploadModal Integration", () => {
meta: { bucket: "locked-bucket" }
}];
// Setup DOM
const container = document.createElement("div");
container.id = "modalContainer2"; // Different ID to avoid collision if DOM persists
document.body.appendChild(container);
// Setup DOM - Reuse existing container or create if missing (cleaned by load)
let container = document.getElementById("modalContainer");
if (!container) {
container = document.createElement("div");
container.id = "modalContainer";
document.body.appendChild(container);
}
// Re-instantiate
const modal = new UploadModal({