fix(test): mock window.matchMedia and document.createElementNS in modal-utils tests

This commit is contained in:
Ulas
2026-04-05 12:58:53 +02:00
parent a5ae0bac7e
commit 205ff603d4
+26 -1
View File
@@ -10,6 +10,27 @@ import assert from 'node:assert/strict';
// /i18n.js wird durch test-browser-loader.mjs gemockt (--loader Flag) // /i18n.js wird durch test-browser-loader.mjs gemockt (--loader Flag)
const { wireBlurValidation, btnSuccess, btnError } = await import('./public/components/modal.js'); const { wireBlurValidation, btnSuccess, btnError } = await import('./public/components/modal.js');
// window.matchMedia und document.createElementNS werden von btnSuccess/btnError benötigt
global.window = { matchMedia: () => ({ matches: false }) };
const _makeSvgEl = (tag) => {
const attrs = {};
const children = [];
return {
tag,
setAttribute(k, v) { attrs[k] = v; },
appendChild(child) { children.push(child); },
get outerHTML() {
const attrStr = Object.entries(attrs).map(([k, v]) => ` ${k}="${v}"`).join('');
const inner = children.map(c => c.outerHTML ?? '').join('');
return `<${tag}${attrStr}>${inner}</${tag}>`;
},
_attrs: attrs,
_children: children,
};
};
global.document = { createElementNS: (_ns, tag) => _makeSvgEl(tag) };
const _origSetTimeout = setTimeout; const _origSetTimeout = setTimeout;
// -------------------------------------------------------- // --------------------------------------------------------
@@ -53,15 +74,19 @@ function makeContainer(inputs = []) {
function makeBtn({ textContent = 'Speichern' } = {}) { function makeBtn({ textContent = 'Speichern' } = {}) {
const classes = new Set(); const classes = new Set();
const listeners = {}; const listeners = {};
let _children = [];
return { return {
textContent, textContent,
innerHTML: '', get innerHTML() {
return _children.map(c => c?.outerHTML ?? '').join('');
},
offsetWidth: 0, offsetWidth: 0,
classList: { classList: {
add(cls) { classes.add(cls); }, add(cls) { classes.add(cls); },
remove(cls) { classes.delete(cls); }, remove(cls) { classes.delete(cls); },
contains(cls) { return classes.has(cls); }, contains(cls) { return classes.has(cls); },
}, },
replaceChildren(...nodes) { _children = nodes; },
addEventListener(event, fn) { listeners[event] = fn; }, addEventListener(event, fn) { listeners[event] = fn; },
_classes: classes, _classes: classes,
_listeners: listeners, _listeners: listeners,