test(categories): complete test coverage for migration flow (#123) #133

Merged
maximus merged 1 commit from issue-123-complete-tests into main 2026-04-21 23:28:09 +00:00
Owner

Fixes #123

Coverage ajoutée

Unitaires

  • categoryMappingService.test.ts — étendu à 100 tests couvrant chaque entrée DEFAULT_MAPPINGS, les 4 passes (keyword / supplier / default / review), détection custom, splits, priorité passe-par-passe.
  • categoryBackupService.test.ts — 23 tests avec mocks Tauri : succès normal, échec write, échec integrity check, profil avec PIN.
  • categoryMigrationService.test.ts — 16 tests sur le writer SQL atomique : flow BEGIN/COMMIT, backup-missing abort, custom parent creation (id 2000), journal last_categories_migration.

Intégration

  • src/__integration__/category-migration.test.ts — 5 flows : plan → backup → migrate → verify, rollback SREF, échec backup sans écriture, échec SQL → ROLLBACK.

Régression

  • src/__integration__/regression-v2-v1.test.ts — 14 tests paramétrés .each([v2, v1]) : auto-catégorisation, budget agrégation parent/enfant, splits préservés.

Fixtures

  • src/__fixtures__/profiles.tsmakeV2Profile, makeV1Profile, makeV2ProfileWithCustom (catégories réalistes, keywords, suppliers, transactions, budgets).

QA manuelle

  • docs/qa-refonte-seed-categories-ipc.md — checklist 14 sections : pré-migration, guide, 3 étapes migration, cas nominal, échec backup, échec SQL, bannière 90j, restauration, profils custom/sans-custom, régression, i18n.

Résultats

  • npx tsc --noEmit clean
  • npx vitest run331 tests green (up from 193 baseline = +138 nouveaux)
  • npm run build clean

Note finale

  • Ce PR wrap-up le milestone spec-refonte-seed-categories-ipc. Issues #115-#123 toutes mergées à l'issue de ce merge.

Depends on #115, #116, #119, #120, #121 (tous mergés).

Fixes #123 ## Coverage ajoutée ### Unitaires - `categoryMappingService.test.ts` — étendu à 100 tests couvrant chaque entrée `DEFAULT_MAPPINGS`, les 4 passes (keyword / supplier / default / review), détection custom, splits, priorité passe-par-passe. - `categoryBackupService.test.ts` — 23 tests avec mocks Tauri : succès normal, échec write, échec integrity check, profil avec PIN. - `categoryMigrationService.test.ts` — 16 tests sur le writer SQL atomique : flow BEGIN/COMMIT, backup-missing abort, custom parent creation (id 2000), journal `last_categories_migration`. ### Intégration - `src/__integration__/category-migration.test.ts` — 5 flows : plan → backup → migrate → verify, rollback SREF, échec backup sans écriture, échec SQL → ROLLBACK. ### Régression - `src/__integration__/regression-v2-v1.test.ts` — 14 tests paramétrés `.each([v2, v1])` : auto-catégorisation, budget agrégation parent/enfant, splits préservés. ### Fixtures - `src/__fixtures__/profiles.ts` — `makeV2Profile`, `makeV1Profile`, `makeV2ProfileWithCustom` (catégories réalistes, keywords, suppliers, transactions, budgets). ### QA manuelle - `docs/qa-refonte-seed-categories-ipc.md` — checklist 14 sections : pré-migration, guide, 3 étapes migration, cas nominal, échec backup, échec SQL, bannière 90j, restauration, profils custom/sans-custom, régression, i18n. ## Résultats - `npx tsc --noEmit` clean - `npx vitest run` — **331 tests** green (up from 193 baseline = +138 nouveaux) - `npm run build` clean ## Note finale - Ce PR wrap-up le milestone `spec-refonte-seed-categories-ipc`. Issues #115-#123 toutes mergées à l'issue de ce merge. Depends on #115, #116, #119, #120, #121 (tous mergés).
maximus added 1 commit 2026-04-21 23:25:38 +00:00
test(categories): complete test coverage for migration flow (#123)
All checks were successful
PR Check / rust (push) Successful in 22m48s
PR Check / frontend (push) Successful in 2m20s
PR Check / rust (pull_request) Successful in 22m51s
PR Check / frontend (pull_request) Successful in 2m21s
12d1877870
Adds unit + integration + regression tests and a QA checklist for the
v2→v1 seed migration feature.

- Fixtures: src/__fixtures__/profiles.ts (makeV2Profile, makeV1Profile,
  makeV2ProfileWithCustom) with realistic categories, keywords,
  suppliers, transactions, budgets.
- Unit: categoryMappingService (100 cases covering every DEFAULT_MAPPINGS
  entry, 4-pass priority, splits, preserved/custom detection),
  categoryBackupService (23 cases — Tauri mocks: success, write error,
  integrity check, PIN-encrypted profile), categoryMigrationService (16
  cases — BEGIN/COMMIT/ROLLBACK flow, backup-missing abort, journaling,
  custom parent creation).
- Integration: full plan→backup→migrate→verify flow; rollback via SREF
  import; backup failure → no DB write; migration SQL failure → ROLLBACK
  + intact state.
- Regression: parameterised v2/v1 fixtures covering auto-categorisation,
  budget aggregation, splits preservation.
- Docs: docs/qa-refonte-seed-categories-ipc.md — manual checklist for UX,
  system errors, encrypted profile, custom preservation, 90-day banner,
  restore flow.

331 vitest tests pass (up from 193 baseline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Author
Owner

Self-review — APPROVE

Summary : +138 tests nouveaux (331 total, tous verts). Aucune modification de code applicatif, uniquement des tests + fixtures + doc QA. Risque regression : nul.

Checklist

  • Security : aucun secret, aucun token, aucune surface réseau. Fixtures sont des données synthétiques.
  • Correctness : tests déterministes (pas de Date.now() non-mocké, pas de timing flaky). Mocks cohérents avec les signatures réelles.
  • Quality : fixtures réutilisables (makeV2Profile, makeV1Profile, makeV2ProfileWithCustom), structure claire __fixtures__/ + __integration__/.
  • Data : aucune modification de schéma, aucune migration SQL touchée.
  • i18n/changelog : N/A (tests + doc QA).
  • Typecheck clean, build clean.

Observations mineures (non bloquantes)

  • docs/qa-refonte-seed-categories-ipc.md liste les tests automatisés équivalents en bas → utile pour la maintenance. Bien.
  • Section 8 (échec SQL rollback) note qu'il est difficile à simuler manuellement ; le test automatisé dans categoryMigrationService.test.ts couvre le chemin ROLLBACK.

Verdict : prêt à merger. Ce PR clôt le milestone spec-refonte-seed-categories-ipc.

## Self-review — APPROVE ✅ **Summary** : +138 tests nouveaux (331 total, tous verts). Aucune modification de code applicatif, uniquement des tests + fixtures + doc QA. Risque regression : nul. **Checklist** - Security : aucun secret, aucun token, aucune surface réseau. Fixtures sont des données synthétiques. - Correctness : tests déterministes (pas de `Date.now()` non-mocké, pas de timing flaky). Mocks cohérents avec les signatures réelles. - Quality : fixtures réutilisables (`makeV2Profile`, `makeV1Profile`, `makeV2ProfileWithCustom`), structure claire `__fixtures__/` + `__integration__/`. - Data : aucune modification de schéma, aucune migration SQL touchée. - i18n/changelog : N/A (tests + doc QA). - Typecheck clean, build clean. **Observations mineures (non bloquantes)** - `docs/qa-refonte-seed-categories-ipc.md` liste les tests automatisés équivalents en bas → utile pour la maintenance. Bien. - Section 8 (échec SQL rollback) note qu'il est difficile à simuler manuellement ; le test automatisé dans `categoryMigrationService.test.ts` couvre le chemin ROLLBACK. Verdict : prêt à merger. Ce PR clôt le milestone `spec-refonte-seed-categories-ipc`.
maximus merged commit 95f708c8fd into main 2026-04-21 23:28:09 +00:00
maximus deleted branch issue-123-complete-tests 2026-04-21 23:28:09 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#133
No description provided.