Skip to content

test: suite de tests automatisés in-process + CI (vitest)#6

Merged
apolocine merged 1 commit into
feat/duckdb-dialectfrom
test/orm-ci-suite
Jun 13, 2026
Merged

test: suite de tests automatisés in-process + CI (vitest)#6
apolocine merged 1 commit into
feat/duckdb-dialectfrom
test/orm-ci-suite

Conversation

@apolocine

Copy link
Copy Markdown
Owner

Auteur : Dr Hamid MADANI drmdh@msn.com

Résumé

Premier filet de tests automatisés rejouable en CI, sans aucune infrastructure (ni Docker, ni serveur) : tout tourne en mémoire sur les dialectes in-process — SQLite, sql.js, pglite, DuckDB. Jusqu'ici, @mostajs/orm n'avait aucun test automatisé (validation 100 % manuelle sur DB réelles).

PR stackée sur feat/duckdb-dialect (= base de la PR #5). Diff focalisé sur le seul commit de tests.

Contenu (1 commit)

  • vitest 4 + vitest.config.ts (pool forks, timeouts, tests/**/*.test.ts).
  • Helpers : createIsolatedDialect (hors singleton/env global) + BaseRepository, paramétrés sur les 4 dialectes in-process.
  • tests/crud.test.ts (60 tests = scénario complet ×4) : schéma, create, relations many-to-one, findById/findOne/findAll, count + count(filter) (couvre la régression de casse d'alias cnt/CNT corrigée en 2.10.1), update, upsert idempotent, pagination, delete/deleteMany.
  • tests/transactions.test.ts (8 tests = ×4) : commit (persiste) & rollback (annule) via $transaction(cb).
  • Scripts npm : test (vitest run), test:watch, typecheck (tsc --noEmit).
  • CI .github/workflows/test.yml : Node 20/22, typecheck + build + test (npm installpackage-lock.json non versionné).

Résultat

68 tests verts en ~6 s, zéro dépendance serveur. Base de non-régression pour les refactors à venir.

Premier filet de non-régression rejouable en CI, SANS infrastructure : tout tourne
en mémoire sur les dialectes in-process (sqlite, sql.js, pglite, duckdb).

- vitest 4 + config (tests/**/*.test.ts, pool forks, timeouts).
- Helpers : createIsolatedDialect (hors singleton/env global) + BaseRepository,
  paramétrés sur les 4 dialectes in-process.
- tests/crud.test.ts : scénario complet ×4 dialectes (60 tests) — schéma, create,
  relations many-to-one, findById/findOne/findAll, count + count(filter) [couvre la
  régression de casse d'alias cnt/CNT], update, upsert (idempotent), pagination,
  delete/deleteMany.
- tests/transactions.test.ts : commit (persiste) & rollback (annule) via $transaction(cb)
  ×4 dialectes (8 tests).
- Scripts npm : test (vitest run), test:watch, typecheck (tsc --noEmit).
- CI GitHub Actions (.github/workflows/test.yml) : Node 20/22, typecheck + build + test
  (npm install — package-lock.json non versionné).

Total : 68 tests, ~6 s, zéro dépendance serveur.

Author: Dr Hamid MADANI <drmdh@msn.com>
@apolocine apolocine merged commit 7d1c8a8 into feat/duckdb-dialect Jun 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant