waffensachkunde

Waffensachkunde – Lernsoftware für die Sachkundeprüfung nach § 7 WaffG. Barrierefrei, offline, EUPL-1.2.

/ app tests setup.ts

1,3 KB Rohdatei
app/tests/setup.ts — 50 Zeilen
1 import '@testing-library/jest-dom/vitest';
2
3 import { cleanup } from '@testing-library/react';
4 import { afterEach, beforeEach, vi } from 'vitest';
5
6 /**
7 * jsdom implementiert `matchMedia` nicht. Der Stub liefert standardmäßig
8 * „trifft nicht zu“ für alle Media Queries – Tests, die ein bestimmtes
9 * Systemverhalten prüfen wollen, überschreiben ihn gezielt.
10 */
11 function matchMediaStubEinrichten(): void {
12 vi.stubGlobal(
13 'matchMedia',
14 vi.fn((query: string): MediaQueryList => {
15 const liste: MediaQueryList = {
16 matches: false,
17 media: query,
18 onchange: null,
19 addEventListener: vi.fn(),
20 removeEventListener: vi.fn(),
21 addListener: vi.fn(),
22 removeListener: vi.fn(),
23 dispatchEvent: vi.fn(() => false),
24 };
25 return liste;
26 }),
27 );
28 }
29
30 /**
31 * Die Setup-Datei gilt für ALLE Testdateien – auch für solche mit
32 * `@vitest-environment node` (z. B. tests/sicherheit.test.ts). Ohne DOM
33 * werden die Aufräumschritte deshalb übersprungen.
34 */
35 const mitDom = typeof window !== 'undefined';
36
37 beforeEach(() => {
38 if (!mitDom) {
39 return;
40 }
41 matchMediaStubEinrichten();
42 window.localStorage.clear();
43 document.documentElement.removeAttribute('data-thema');
44 });
45
46 afterEach(() => {
47 if (mitDom) {
48 cleanup();
49 }
50 });