My App
Conventions

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 tests

La 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.

FonctionCe qu'elle garantit
trustRankOrdonne les niveaux de confiance, de new à flagger
reportPriorityAmortit 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.

On this page