Tests
Le runner Bun, la logique pure testée en isolation, et la cible test de Nx.
Le runner Bun
Les tests unitaires tournent avec le runner natif de Bun. Pas de framework de test supplémentaire à installer, bun test découvre et exécute les fichiers *.test.ts.
bun run test # nx run-many -t test sur les projets qui ont des testsLa logique pure dans packages/core
La logique métier pure vit dans packages/core et se teste en isolation, sans base ni serveur. C'est là que se trouvent les briques de sécurité, testées comme le reste du domaine.
Chaque règle de sécurité importante mérite son test. Une décision de proportionnalité qui n'est pas couverte par un test est une décision qui peut régresser en silence.
Exemple : les briques déjà testées
Deux fonctions pures du domaine sont déjà couvertes.
| Fonction | Ce qu'elle garantit |
|---|---|
trustRank | Ordonne les niveaux de confiance, de new à flagger |
reportPriority | Amortit le volume : une meute coordonnée ne peut pas dominer la file de modération |
it("damps volume so a coordinated flood cannot dominate the queue", () => {
const oneTrustedThreat = reportPriority({ reason: "threat", reporterTrust: "trusted", clusterSize: 0 });
const floodOfHundred = reportPriority({ reason: "spam", reporterTrust: "new", clusterSize: 100 });
expect(oneTrustedThreat).toBeGreaterThan(floodOfHundred);
});La cible test de Nx
La cible test est déclarée dans nx.json et câblée sur le script test de chaque package. Nx met en cache les résultats et ne relance que ce qui a changé.
À venir
Les tests d'intégration du serveur sont prévus : exercer les routes Elysia via app.handle, avec un service PostgreSQL dans la CI pour couvrir les repositories et les migrations. Cette couche viendra une fois le backend métier en place.