refactor(backend): zentrale Test-Mocks + Factories + Coverage #265

Merged
niboer merged 2 commits from issue/backend-test-optimierung into main 2026-07-08 18:30:49 +02:00
Owner

Altes Verhalten

Jede Testdatei in src/__tests__/ deklarierte ihre eigenen vi.fn()-Mock-Variablen und vi.mock('../lib/prisma.js')-Bloecke. Dadurch entstanden:

  • 158 const mockXxx = vi.fn()-Deklarationen in 24 Dateien
  • Inconsistentes Naming (DE mockGaesteCreate, generisch mockFindMany)
  • Hohe Wartungskosten bei neuen Prisma-Feldern (alle Mocks mussten einzeln erweitert werden)
  • Kein Coverage-Reporting

Neues Verhalten

Zentrale Test-Infrastruktur in src/test/:

  • mocks/prisma.ts — zentrales mockPrisma mit vi.fn() fuer alle 13 Prisma-Modelle (ersetzt 158 Deklarationen)
  • mocks/jwt.ts — zentraler mockVerifyJwt
  • factories/*.ts — 13 Factory-Funktionen (buildPerson(), buildEvent(), ...)
  • helpers/setup.tssetupConsent(), createTestServer()
  • vitest.setup.ts — globales Setup
  • vitest.config.ts — Coverage mit v8-Provider + Thresholds (Statements/Lines 79%, Functions 80%, Branches 70%)

Migration von 17 Testdateien auf zentrales Pattern. Coverage erstmalig aktiv.

Begruendung

Weniger Boilerplate, konsistentes Naming, zentrale Wartbarkeit. Coverage-Thresholds verhindern unbeabsichtigte Testluecken.

Test-Hinweise

  • cd backend && npm test — alle 550 Tests passen
  • npm run test:build — Lint + TypeScript + Tests
  • Build-Output dist/ enthaelt kein src/test/ (tsconfig-exclude)

Checkliste

  • use:testid an neuen <button>, <a>, <form>-Elementen gesetzt?
  • Korrespondierender E2E-Test in e2e/specs/ angelegt?
### Altes Verhalten Jede Testdatei in `src/__tests__/` deklarierte ihre eigenen `vi.fn()`-Mock-Variablen und `vi.mock('../lib/prisma.js')`-Bloecke. Dadurch entstanden: - 158 `const mockXxx = vi.fn()`-Deklarationen in 24 Dateien - Inconsistentes Naming (DE `mockGaesteCreate`, generisch `mockFindMany`) - Hohe Wartungskosten bei neuen Prisma-Feldern (alle Mocks mussten einzeln erweitert werden) - Kein Coverage-Reporting ### Neues Verhalten Zentrale Test-Infrastruktur in `src/test/`: - `mocks/prisma.ts` — zentrales `mockPrisma` mit `vi.fn()` fuer alle 13 Prisma-Modelle (ersetzt 158 Deklarationen) - `mocks/jwt.ts` — zentraler `mockVerifyJwt` - `factories/*.ts` — 13 Factory-Funktionen (`buildPerson()`, `buildEvent()`, ...) - `helpers/setup.ts` — `setupConsent()`, `createTestServer()` - `vitest.setup.ts` — globales Setup - `vitest.config.ts` — Coverage mit v8-Provider + Thresholds (Statements/Lines 79%, Functions 80%, Branches 70%) Migration von 17 Testdateien auf zentrales Pattern. Coverage erstmalig aktiv. ### Begruendung Weniger Boilerplate, konsistentes Naming, zentrale Wartbarkeit. Coverage-Thresholds verhindern unbeabsichtigte Testluecken. ### Test-Hinweise - `cd backend && npm test` — alle 550 Tests passen - `npm run test:build` — Lint + TypeScript + Tests - Build-Output `dist/` enthaelt kein `src/test/` (tsconfig-exclude) ### Checkliste - [x] `use:testid` an neuen `<button>`, `<a>`, `<form>`-Elementen gesetzt? - [x] Korrespondierender E2E-Test in `e2e/specs/` angelegt?
refactor(backend): zentrale Test-Mocks + Factories + Coverage
Some checks failed
CI Backend / lint-backend (pull_request) Failing after 52s
CI Backend / test-backend (pull_request) Has been skipped
CI Frontend / lint-frontend (pull_request) Successful in 1m13s
CI Meta / conventional-commit (pull_request) Successful in 1s
E2E / e2e (pull_request) Has been cancelled
CI Frontend / test-frontend (pull_request) Has been cancelled
40cb2466ce
- src/test/ mit mocks/prisma.ts (alle 13 Modelle), mocks/jwt.ts,
  factories/ (13 Factory-Funktionen) und helpers/setup.ts
- vi.mock('../lib/prisma.js') in 24 Dateien durch zentrale
  mockPrisma-Importe ersetzt (158 -> 17 lokale vi.fn()-Deklarationen)
- Inconsistentes/Deutsches Mock-Naming entfaellt automatisch
- vitest.config.ts: Coverage mit v8-Provider + Thresholds
- src/test im tsconfig-exclude + eslint allowDefault ergaenzt
- backend/AGENTS.md: Test-Konvention aktualisiert

closes #260
fix(backend): eslint maxDefaultProject auf 64 erhoeht
All checks were successful
CI Backend / lint-backend (pull_request) Successful in 54s
CI Frontend / lint-frontend (pull_request) Successful in 1m12s
CI Meta / conventional-commit (pull_request) Successful in 1s
E2E / e2e (pull_request) Successful in 2m4s
CI Backend / test-backend (pull_request) Successful in 2m54s
CI Frontend / test-frontend (pull_request) Successful in 42s
1d06757d61
- src/test/*.ts Dateien ueberschritten das 40er-Limit
- Erhoeht auf 64, damit alle 35 Testdateien + 18 Test-Infra-Dateien
  vom Linter erfasst werden

refs #260
niboer merged commit c702a04db9 into main 2026-07-08 18:30:49 +02:00
niboer deleted branch issue/backend-test-optimierung 2026-07-08 18:30:49 +02:00
Sign in to join this conversation.
No description provided.