From 714486f43c1e72b8c63878cbee7f9177cba9654f Mon Sep 17 00:00:00 2001 From: Djalim Simaila Date: Sun, 26 Apr 2026 19:07:15 +0200 Subject: [PATCH] chore: formated tests --- tests/e2e/ajustements_test.ts | 84 +++++++++++++++---- tests/e2e/enseignements_test.ts | 93 ++++++++++++++++----- tests/e2e/notes_test.ts | 59 +++++++++++--- tests/e2e/ue_modules_test.ts | 75 +++++++++++++---- tests/e2e/ues_test.ts | 14 +++- tests/e2e/users_test.ts | 34 ++++++-- tests/integration/ajustements_test.ts | 55 ++++++++++--- tests/integration/enseignements_test.ts | 21 ++++- tests/integration/notes_test.ts | 46 +++++++++-- tests/integration/ue_modules_test.ts | 71 +++++++++++++--- tests/integration/ues_test.ts | 19 +++-- tests/unit/ajustements_test.ts | 59 +++++++++++--- tests/unit/enseignements_test.ts | 104 +++++++++++++++++++----- tests/unit/notes_test.ts | 46 +++++++++-- tests/unit/ue_modules_test.ts | 87 +++++++++++++++----- tests/unit/ues_test.ts | 8 +- 16 files changed, 699 insertions(+), 176 deletions(-) diff --git a/tests/e2e/ajustements_test.ts b/tests/e2e/ajustements_test.ts index 8b07a04..2ca2ef7 100644 --- a/tests/e2e/ajustements_test.ts +++ b/tests/e2e/ajustements_test.ts @@ -26,10 +26,17 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Dupont", prenom: "Jean", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Dupont", + prenom: "Jean", + idPromo: "P1", + }]); const [ue] = await seedUes([{ nom: "UE Info" }]); await seedAjustements([{ numEtud: s.numEtud, idUE: ue.id, valeur: 13.0 }]); - const res = await ajustementsHandler.GET!(makeGetRequest("/ajustements"), makeEmployeeContext()); + const res = await ajustementsHandler.GET!( + makeGetRequest("/ajustements"), + makeEmployeeContext(), + ); assertEquals(res.status, 200); const body = await res.json(); assertEquals(body.length, 1); @@ -43,8 +50,16 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s1] = await seedStudents([{ nom: "Dupont", prenom: "Jean", idPromo: "P1" }]); - const [s2] = await seedStudents([{ nom: "Martin", prenom: "Alice", idPromo: "P1" }]); + const [s1] = await seedStudents([{ + nom: "Dupont", + prenom: "Jean", + idPromo: "P1", + }]); + const [s2] = await seedStudents([{ + nom: "Martin", + prenom: "Alice", + idPromo: "P1", + }]); const [ue] = await seedUes([{ nom: "UE Info" }]); await seedAjustements([ { numEtud: s1.numEtud, idUE: ue.id, valeur: 13.0 }, @@ -80,14 +95,23 @@ Deno.test({ // --- POST /ajustements --- Deno.test({ - name: "e2e ajustements: POST /ajustements creates ajustement (201) as employee", + name: + "e2e ajustements: POST /ajustements creates ajustement (201) as employee", async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Leroy", prenom: "Paul", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Leroy", + prenom: "Paul", + idPromo: "P1", + }]); const [ue] = await seedUes([{ nom: "UE Info" }]); const res = await ajustementsHandler.POST!( - makeJsonRequest("/ajustements", "POST", { numEtud: s.numEtud, idUE: ue.id, valeur: 14.5 }), + makeJsonRequest("/ajustements", "POST", { + numEtud: s.numEtud, + idUE: ue.id, + valeur: 14.5, + }), makeEmployeeContext(), ); assertEquals(res.status, 201); @@ -104,7 +128,11 @@ Deno.test({ async fn() { await truncateAll(); const res = await ajustementsHandler.POST!( - makeJsonRequest("/ajustements", "POST", { numEtud: 1, idUE: 1, valeur: 10.0 }), + makeJsonRequest("/ajustements", "POST", { + numEtud: 1, + idUE: 1, + valeur: 10.0, + }), makeContextWithAffiliation("student"), ); assertEquals(res.status, 403); @@ -130,7 +158,8 @@ Deno.test({ // --- GET /ajustements/:numEtud/:idUE --- Deno.test({ - name: "e2e ajustements: GET /ajustements/:numEtud/:idUE returns correct ajustement (employee)", + name: + "e2e ajustements: GET /ajustements/:numEtud/:idUE returns correct ajustement (employee)", async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); @@ -147,7 +176,10 @@ Deno.test({ ]); const res = await ajustementHandler.GET!( makeGetRequest(`/ajustements/${s1.numEtud}/${ue1.id}`), - makeEmployeeContext({ numEtud: String(s1.numEtud), idUE: String(ue1.id) }), + makeEmployeeContext({ + numEtud: String(s1.numEtud), + idUE: String(ue1.id), + }), ); assertEquals(res.status, 200); const body = await res.json(); @@ -189,19 +221,28 @@ Deno.test({ // --- PUT /ajustements/:numEtud/:idUE --- Deno.test({ - name: "e2e ajustements: PUT /ajustements/:numEtud/:idUE updates only targeted row (employee)", + name: + "e2e ajustements: PUT /ajustements/:numEtud/:idUE updates only targeted row (employee)", async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Thomas", prenom: "Eva", idPromo: "P1" }]); - const [ue1, ue2] = await seedUes([{ nom: "UE Physique" }, { nom: "UE Chimie" }]); + const [s] = await seedStudents([{ + nom: "Thomas", + prenom: "Eva", + idPromo: "P1", + }]); + const [ue1, ue2] = await seedUes([{ nom: "UE Physique" }, { + nom: "UE Chimie", + }]); // Deux ajustements pour le même étudiant — seul ue1 doit être modifié await seedAjustements([ { numEtud: s.numEtud, idUE: ue1.id, valeur: 10.0 }, { numEtud: s.numEtud, idUE: ue2.id, valeur: 7.0 }, ]); const res = await ajustementHandler.PUT!( - makeJsonRequest(`/ajustements/${s.numEtud}/${ue1.id}`, "PUT", { valeur: 19.0 }), + makeJsonRequest(`/ajustements/${s.numEtud}/${ue1.id}`, "PUT", { + valeur: 19.0, + }), makeEmployeeContext({ numEtud: String(s.numEtud), idUE: String(ue1.id) }), ); assertEquals(res.status, 200); @@ -247,11 +288,16 @@ Deno.test({ // --- DELETE /ajustements/:numEtud/:idUE --- Deno.test({ - name: "e2e ajustements: DELETE /ajustements/:numEtud/:idUE deletes only targeted row (employee)", + name: + "e2e ajustements: DELETE /ajustements/:numEtud/:idUE deletes only targeted row (employee)", async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Petit", prenom: "Hugo", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Petit", + prenom: "Hugo", + idPromo: "P1", + }]); const [ue1, ue2] = await seedUes([{ nom: "UE Chimie" }, { nom: "UE Bio" }]); // Deux ajustements pour le même étudiant — seul ue1 doit être supprimé await seedAjustements([ @@ -273,7 +319,8 @@ Deno.test({ }); Deno.test({ - name: "e2e ajustements: DELETE /ajustements/:numEtud/:idUE 403 for non-employee", + name: + "e2e ajustements: DELETE /ajustements/:numEtud/:idUE 403 for non-employee", async fn() { await truncateAll(); const res = await ajustementHandler.DELETE!( @@ -287,7 +334,8 @@ Deno.test({ }); Deno.test({ - name: "e2e ajustements: DELETE /ajustements/:numEtud/:idUE 404 when not found", + name: + "e2e ajustements: DELETE /ajustements/:numEtud/:idUE 404 when not found", async fn() { await truncateAll(); const res = await ajustementHandler.DELETE!( diff --git a/tests/e2e/enseignements_test.ts b/tests/e2e/enseignements_test.ts index 77751f4..32c9326 100644 --- a/tests/e2e/enseignements_test.ts +++ b/tests/e2e/enseignements_test.ts @@ -20,14 +20,19 @@ import { handler as enseignementHandler } from "$apps/admin/api/enseignements/[i // --- POST /enseignements --- Deno.test({ - name: "e2e enseignements: POST /enseignements creates enseignement (201) as employee", + name: + "e2e enseignements: POST /enseignements creates enseignement (201) as employee", async fn() { await truncateAll(); await seedUsers([{ id: "prof.dupont", nom: "Dupont", prenom: "Jean" }]); await seedModules([{ id: "M1", nom: "Mod A" }]); await seedPromotions([{ id: "P1" }]); const res = await enseignementsHandler.POST!( - makeJsonRequest("/enseignements", "POST", { idProf: "prof.dupont", idModule: "M1", idPromo: "P1" }), + makeJsonRequest("/enseignements", "POST", { + idProf: "prof.dupont", + idModule: "M1", + idPromo: "P1", + }), makeEmployeeContext(), ); assertEquals(res.status, 201); @@ -44,7 +49,11 @@ Deno.test({ async fn() { await truncateAll(); const res = await enseignementsHandler.POST!( - makeJsonRequest("/enseignements", "POST", { idProf: "p", idModule: "M1", idPromo: "P1" }), + makeJsonRequest("/enseignements", "POST", { + idProf: "p", + idModule: "M1", + idPromo: "P1", + }), makeContextWithAffiliation("student"), ); assertEquals(res.status, 403); @@ -74,9 +83,17 @@ Deno.test({ await seedUsers([{ id: "prof.dupont", nom: "Dupont", prenom: "Jean" }]); await seedModules([{ id: "M1", nom: "Mod A" }]); await seedPromotions([{ id: "P1" }]); - await seedEnseignements([{ idProf: "prof.dupont", idModule: "M1", idPromo: "P1" }]); + await seedEnseignements([{ + idProf: "prof.dupont", + idModule: "M1", + idPromo: "P1", + }]); const res = await enseignementsHandler.POST!( - makeJsonRequest("/enseignements", "POST", { idProf: "prof.dupont", idModule: "M1", idPromo: "P1" }), + makeJsonRequest("/enseignements", "POST", { + idProf: "prof.dupont", + idModule: "M1", + idPromo: "P1", + }), makeEmployeeContext(), ); assertEquals(res.status, 409); @@ -88,16 +105,25 @@ Deno.test({ // --- GET /enseignements/:idProf/:idModule/:idPromo --- Deno.test({ - name: "e2e enseignements: GET /enseignements/:idProf/:idModule/:idPromo returns enseignement (employee)", + name: + "e2e enseignements: GET /enseignements/:idProf/:idModule/:idPromo returns enseignement (employee)", async fn() { await truncateAll(); await seedUsers([{ id: "prof.dupont", nom: "Dupont", prenom: "Jean" }]); await seedModules([{ id: "M1", nom: "Mod A" }]); await seedPromotions([{ id: "P1" }]); - await seedEnseignements([{ idProf: "prof.dupont", idModule: "M1", idPromo: "P1" }]); + await seedEnseignements([{ + idProf: "prof.dupont", + idModule: "M1", + idPromo: "P1", + }]); const res = await enseignementHandler.GET!( makeGetRequest("/enseignements/prof.dupont/M1/P1"), - makeEmployeeContext({ idProf: "prof.dupont", idModule: "M1", idPromo: "P1" }), + makeEmployeeContext({ + idProf: "prof.dupont", + idModule: "M1", + idPromo: "P1", + }), ); assertEquals(res.status, 200); const body = await res.json(); @@ -109,12 +135,17 @@ Deno.test({ }); Deno.test({ - name: "e2e enseignements: GET /enseignements/:idProf/:idModule/:idPromo 403 for non-employee", + name: + "e2e enseignements: GET /enseignements/:idProf/:idModule/:idPromo 403 for non-employee", async fn() { await truncateAll(); const res = await enseignementHandler.GET!( makeGetRequest("/enseignements/p/M1/P1"), - makeContextWithAffiliation("student", { idProf: "p", idModule: "M1", idPromo: "P1" }), + makeContextWithAffiliation("student", { + idProf: "p", + idModule: "M1", + idPromo: "P1", + }), ); assertEquals(res.status, 403); }, @@ -123,12 +154,17 @@ Deno.test({ }); Deno.test({ - name: "e2e enseignements: GET /enseignements/:idProf/:idModule/:idPromo 404 when not found", + name: + "e2e enseignements: GET /enseignements/:idProf/:idModule/:idPromo 404 when not found", async fn() { await truncateAll(); const res = await enseignementHandler.GET!( makeGetRequest("/enseignements/ghost/GHOST/GHOST"), - makeEmployeeContext({ idProf: "ghost", idModule: "GHOST", idPromo: "GHOST" }), + makeEmployeeContext({ + idProf: "ghost", + idModule: "GHOST", + idPromo: "GHOST", + }), ); assertEquals(res.status, 404); }, @@ -139,16 +175,25 @@ Deno.test({ // --- DELETE /enseignements/:idProf/:idModule/:idPromo --- Deno.test({ - name: "e2e enseignements: DELETE /enseignements/:idProf/:idModule/:idPromo returns 204 (employee)", + name: + "e2e enseignements: DELETE /enseignements/:idProf/:idModule/:idPromo returns 204 (employee)", async fn() { await truncateAll(); await seedUsers([{ id: "prof.dupont", nom: "Dupont", prenom: "Jean" }]); await seedModules([{ id: "M1", nom: "Mod A" }]); await seedPromotions([{ id: "P1" }]); - await seedEnseignements([{ idProf: "prof.dupont", idModule: "M1", idPromo: "P1" }]); + await seedEnseignements([{ + idProf: "prof.dupont", + idModule: "M1", + idPromo: "P1", + }]); const res = await enseignementHandler.DELETE!( makeGetRequest("/enseignements/prof.dupont/M1/P1"), - makeEmployeeContext({ idProf: "prof.dupont", idModule: "M1", idPromo: "P1" }), + makeEmployeeContext({ + idProf: "prof.dupont", + idModule: "M1", + idPromo: "P1", + }), ); assertEquals(res.status, 204); }, @@ -157,12 +202,17 @@ Deno.test({ }); Deno.test({ - name: "e2e enseignements: DELETE /enseignements/:idProf/:idModule/:idPromo 403 for non-employee", + name: + "e2e enseignements: DELETE /enseignements/:idProf/:idModule/:idPromo 403 for non-employee", async fn() { await truncateAll(); const res = await enseignementHandler.DELETE!( makeGetRequest("/enseignements/p/M1/P1"), - makeContextWithAffiliation("student", { idProf: "p", idModule: "M1", idPromo: "P1" }), + makeContextWithAffiliation("student", { + idProf: "p", + idModule: "M1", + idPromo: "P1", + }), ); assertEquals(res.status, 403); }, @@ -171,12 +221,17 @@ Deno.test({ }); Deno.test({ - name: "e2e enseignements: DELETE /enseignements/:idProf/:idModule/:idPromo 404 when not found", + name: + "e2e enseignements: DELETE /enseignements/:idProf/:idModule/:idPromo 404 when not found", async fn() { await truncateAll(); const res = await enseignementHandler.DELETE!( makeGetRequest("/enseignements/ghost/GHOST/GHOST"), - makeEmployeeContext({ idProf: "ghost", idModule: "GHOST", idPromo: "GHOST" }), + makeEmployeeContext({ + idProf: "ghost", + idModule: "GHOST", + idPromo: "GHOST", + }), ); assertEquals(res.status, 404); }, diff --git a/tests/e2e/notes_test.ts b/tests/e2e/notes_test.ts index 78be912..ee1f491 100644 --- a/tests/e2e/notes_test.ts +++ b/tests/e2e/notes_test.ts @@ -23,13 +23,20 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Dupont", prenom: "Jean", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Dupont", + prenom: "Jean", + idPromo: "P1", + }]); await seedModules([{ id: "M1", nom: "Mod A" }, { id: "M2", nom: "Mod B" }]); await seedNotes([ { numEtud: s.numEtud, idModule: "M1", note: 15.0 }, { numEtud: s.numEtud, idModule: "M2", note: 12.0 }, ]); - const res = await notesHandler.GET!(makeGetRequest("/notes"), makeEmployeeContext()); + const res = await notesHandler.GET!( + makeGetRequest("/notes"), + makeEmployeeContext(), + ); assertEquals(res.status, 200); const body = await res.json(); assertEquals(body.length, 2); @@ -43,8 +50,16 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s1] = await seedStudents([{ nom: "Dupont", prenom: "Jean", idPromo: "P1" }]); - const [s2] = await seedStudents([{ nom: "Martin", prenom: "Alice", idPromo: "P1" }]); + const [s1] = await seedStudents([{ + nom: "Dupont", + prenom: "Jean", + idPromo: "P1", + }]); + const [s2] = await seedStudents([{ + nom: "Martin", + prenom: "Alice", + idPromo: "P1", + }]); await seedModules([{ id: "M1", nom: "Mod A" }]); await seedNotes([ { numEtud: s1.numEtud, idModule: "M1", note: 15.0 }, @@ -82,7 +97,11 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Dupont", prenom: "Jean", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Dupont", + prenom: "Jean", + idPromo: "P1", + }]); await seedModules([{ id: "M1", nom: "Mod A" }, { id: "M2", nom: "Mod B" }]); await seedNotes([ { numEtud: s.numEtud, idModule: "M1", note: 15.0 }, @@ -108,10 +127,18 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Leroy", prenom: "Paul", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Leroy", + prenom: "Paul", + idPromo: "P1", + }]); await seedModules([{ id: "M1", nom: "Mod A" }]); const res = await notesHandler.POST!( - makeJsonRequest("/notes", "POST", { numEtud: s.numEtud, idModule: "M1", note: 14.0 }), + makeJsonRequest("/notes", "POST", { + numEtud: s.numEtud, + idModule: "M1", + note: 14.0, + }), makeEmployeeContext(), ); assertEquals(res.status, 201); @@ -144,7 +171,11 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Bernard", prenom: "Lucie", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Bernard", + prenom: "Lucie", + idPromo: "P1", + }]); await seedModules([{ id: "M1", nom: "Mod A" }]); await seedNotes([{ numEtud: s.numEtud, idModule: "M1", note: 18.0 }]); const res = await noteHandler.GET!( @@ -180,7 +211,11 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Thomas", prenom: "Eva", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Thomas", + prenom: "Eva", + idPromo: "P1", + }]); await seedModules([{ id: "M1", nom: "Mod A" }]); await seedNotes([{ numEtud: s.numEtud, idModule: "M1", note: 10.0 }]); const res = await noteHandler.PUT!( @@ -216,7 +251,11 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Petit", prenom: "Hugo", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Petit", + prenom: "Hugo", + idPromo: "P1", + }]); await seedModules([{ id: "M1", nom: "Mod A" }]); await seedNotes([{ numEtud: s.numEtud, idModule: "M1", note: 9.0 }]); const res = await noteHandler.DELETE!( diff --git a/tests/e2e/ue_modules_test.ts b/tests/e2e/ue_modules_test.ts index 028dfa8..3a921f8 100644 --- a/tests/e2e/ue_modules_test.ts +++ b/tests/e2e/ue_modules_test.ts @@ -32,7 +32,10 @@ Deno.test({ { idModule: "M1", idUE: ue.id, idPromo: "P1", coeff: 2.0 }, { idModule: "M2", idUE: ue.id, idPromo: "P1", coeff: 3.0 }, ]); - const res = await ueModulesHandler.GET!(makeGetRequest("/ue-modules"), makeEmployeeContext()); + const res = await ueModulesHandler.GET!( + makeGetRequest("/ue-modules"), + makeEmployeeContext(), + ); assertEquals(res.status, 200); const body = await res.json(); assertEquals(body.length, 2); @@ -75,7 +78,12 @@ Deno.test({ await seedModules([{ id: "M1", nom: "Mod A" }]); const [ue] = await seedUes([{ nom: "UE Info" }]); const res = await ueModulesHandler.POST!( - makeJsonRequest("/ue-modules", "POST", { idModule: "M1", idUE: ue.id, idPromo: "P1", coeff: 4.0 }), + makeJsonRequest("/ue-modules", "POST", { + idModule: "M1", + idUE: ue.id, + idPromo: "P1", + coeff: 4.0, + }), makeEmployeeContext(), ); assertEquals(res.status, 201); @@ -104,7 +112,8 @@ Deno.test({ // --- GET /ue-modules/:idModule/:idUE/:idPromo --- Deno.test({ - name: "e2e ue_modules: GET /ue-modules/:idModule/:idUE/:idPromo returns correct association (employee)", + name: + "e2e ue_modules: GET /ue-modules/:idModule/:idUE/:idPromo returns correct association (employee)", async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }, { id: "P2" }]); @@ -119,7 +128,11 @@ Deno.test({ ]); const res = await ueModuleHandler.GET!( makeGetRequest(`/ue-modules/M1/${ue1.id}/P1`), - makeEmployeeContext({ idModule: "M1", idUE: String(ue1.id), idPromo: "P1" }), + makeEmployeeContext({ + idModule: "M1", + idUE: String(ue1.id), + idPromo: "P1", + }), ); assertEquals(res.status, 200); const body = await res.json(); @@ -132,12 +145,17 @@ Deno.test({ }); Deno.test({ - name: "e2e ue_modules: GET /ue-modules/:idModule/:idUE/:idPromo 403 for non-employee", + name: + "e2e ue_modules: GET /ue-modules/:idModule/:idUE/:idPromo 403 for non-employee", async fn() { await truncateAll(); const res = await ueModuleHandler.GET!( makeGetRequest("/ue-modules/M1/1/P1"), - makeContextWithAffiliation("student", { idModule: "M1", idUE: "1", idPromo: "P1" }), + makeContextWithAffiliation("student", { + idModule: "M1", + idUE: "1", + idPromo: "P1", + }), ); assertEquals(res.status, 403); }, @@ -146,7 +164,8 @@ Deno.test({ }); Deno.test({ - name: "e2e ue_modules: GET /ue-modules/:idModule/:idUE/:idPromo 404 when not found", + name: + "e2e ue_modules: GET /ue-modules/:idModule/:idUE/:idPromo 404 when not found", async fn() { await truncateAll(); const res = await ueModuleHandler.GET!( @@ -162,7 +181,8 @@ Deno.test({ // --- PUT /ue-modules/:idModule/:idUE/:idPromo --- Deno.test({ - name: "e2e ue_modules: PUT /ue-modules/:idModule/:idUE/:idPromo updates only the targeted row (employee)", + name: + "e2e ue_modules: PUT /ue-modules/:idModule/:idUE/:idPromo updates only the targeted row (employee)", async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }, { id: "P2" }]); @@ -175,7 +195,11 @@ Deno.test({ ]); const res = await ueModuleHandler.PUT!( makeJsonRequest(`/ue-modules/M1/${ue1.id}/P1`, "PUT", { coeff: 5.0 }), - makeEmployeeContext({ idModule: "M1", idUE: String(ue1.id), idPromo: "P1" }), + makeEmployeeContext({ + idModule: "M1", + idUE: String(ue1.id), + idPromo: "P1", + }), ); assertEquals(res.status, 200); const body = await res.json(); @@ -187,12 +211,17 @@ Deno.test({ }); Deno.test({ - name: "e2e ue_modules: PUT /ue-modules/:idModule/:idUE/:idPromo 403 for non-employee", + name: + "e2e ue_modules: PUT /ue-modules/:idModule/:idUE/:idPromo 403 for non-employee", async fn() { await truncateAll(); const res = await ueModuleHandler.PUT!( makeJsonRequest("/ue-modules/M1/1/P1", "PUT", { coeff: 5.0 }), - makeContextWithAffiliation("student", { idModule: "M1", idUE: "1", idPromo: "P1" }), + makeContextWithAffiliation("student", { + idModule: "M1", + idUE: "1", + idPromo: "P1", + }), ); assertEquals(res.status, 403); }, @@ -201,7 +230,8 @@ Deno.test({ }); Deno.test({ - name: "e2e ue_modules: PUT /ue-modules/:idModule/:idUE/:idPromo 404 when not found", + name: + "e2e ue_modules: PUT /ue-modules/:idModule/:idUE/:idPromo 404 when not found", async fn() { await truncateAll(); const res = await ueModuleHandler.PUT!( @@ -217,7 +247,8 @@ Deno.test({ // --- DELETE /ue-modules/:idModule/:idUE/:idPromo --- Deno.test({ - name: "e2e ue_modules: DELETE /ue-modules/:idModule/:idUE/:idPromo deletes only targeted row (employee)", + name: + "e2e ue_modules: DELETE /ue-modules/:idModule/:idUE/:idPromo deletes only targeted row (employee)", async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }, { id: "P2" }]); @@ -230,7 +261,11 @@ Deno.test({ ]); const res = await ueModuleHandler.DELETE!( makeGetRequest(`/ue-modules/M1/${ue1.id}/P1`), - makeEmployeeContext({ idModule: "M1", idUE: String(ue1.id), idPromo: "P1" }), + makeEmployeeContext({ + idModule: "M1", + idUE: String(ue1.id), + idPromo: "P1", + }), ); assertEquals(res.status, 204); // L'autre ligne doit toujours exister @@ -243,12 +278,17 @@ Deno.test({ }); Deno.test({ - name: "e2e ue_modules: DELETE /ue-modules/:idModule/:idUE/:idPromo 403 for non-employee", + name: + "e2e ue_modules: DELETE /ue-modules/:idModule/:idUE/:idPromo 403 for non-employee", async fn() { await truncateAll(); const res = await ueModuleHandler.DELETE!( makeGetRequest("/ue-modules/M1/1/P1"), - makeContextWithAffiliation("student", { idModule: "M1", idUE: "1", idPromo: "P1" }), + makeContextWithAffiliation("student", { + idModule: "M1", + idUE: "1", + idPromo: "P1", + }), ); assertEquals(res.status, 403); }, @@ -257,7 +297,8 @@ Deno.test({ }); Deno.test({ - name: "e2e ue_modules: DELETE /ue-modules/:idModule/:idUE/:idPromo 404 when not found", + name: + "e2e ue_modules: DELETE /ue-modules/:idModule/:idUE/:idPromo 404 when not found", async fn() { await truncateAll(); const res = await ueModuleHandler.DELETE!( diff --git a/tests/e2e/ues_test.ts b/tests/e2e/ues_test.ts index a57249b..1797f8d 100644 --- a/tests/e2e/ues_test.ts +++ b/tests/e2e/ues_test.ts @@ -17,7 +17,10 @@ Deno.test({ async fn() { await truncateAll(); await seedUes([{ nom: "UE Informatique" }, { nom: "UE Mathématiques" }]); - const res = await uesHandler.GET!(makeGetRequest("/ues"), makeEmployeeContext()); + const res = await uesHandler.GET!( + makeGetRequest("/ues"), + makeEmployeeContext(), + ); assertEquals(res.status, 200); const body = await res.json(); assertEquals(body.length, 2); @@ -30,7 +33,10 @@ Deno.test({ name: "e2e ues: GET /ues returns empty when no UEs", async fn() { await truncateAll(); - const res = await uesHandler.GET!(makeGetRequest("/ues"), makeEmployeeContext()); + const res = await uesHandler.GET!( + makeGetRequest("/ues"), + makeEmployeeContext(), + ); assertEquals(res.status, 200); const body = await res.json(); assertEquals(body.length, 0); @@ -113,7 +119,9 @@ Deno.test({ await truncateAll(); const [ue] = await seedUes([{ nom: "UE Biologie" }]); const res = await ueHandler.PUT!( - makeJsonRequest(`/ues/${ue.id}`, "PUT", { nom: "UE Biologie moléculaire" }), + makeJsonRequest(`/ues/${ue.id}`, "PUT", { + nom: "UE Biologie moléculaire", + }), makeEmployeeContext({ idUE: String(ue.id) }), ); assertEquals(res.status, 200); diff --git a/tests/e2e/users_test.ts b/tests/e2e/users_test.ts index 038ed2f..830aefa 100644 --- a/tests/e2e/users_test.ts +++ b/tests/e2e/users_test.ts @@ -24,7 +24,10 @@ Deno.test({ { id: "dupont.jean", nom: "Dupont", prenom: "Jean" }, { id: "martin.alice", nom: "Martin", prenom: "Alice" }, ]); - const res = await usersHandler.GET!(makeGetRequest("/users"), makeEmployeeContext()); + const res = await usersHandler.GET!( + makeGetRequest("/users"), + makeEmployeeContext(), + ); assertEquals(res.status, 200); const body = await res.json(); assertEquals(body.length, 2); @@ -38,7 +41,10 @@ Deno.test({ name: "e2e users: GET /users returns empty when no users", async fn() { await truncateAll(); - const res = await usersHandler.GET!(makeGetRequest("/users"), makeEmployeeContext()); + const res = await usersHandler.GET!( + makeGetRequest("/users"), + makeEmployeeContext(), + ); assertEquals(res.status, 200); const body = await res.json(); assertEquals(body.length, 0); @@ -77,7 +83,11 @@ Deno.test({ async fn() { await truncateAll(); const res = await usersHandler.POST!( - makeJsonRequest("/users", "POST", { id: "new.user", nom: "New", prenom: "User" }), + makeJsonRequest("/users", "POST", { + id: "new.user", + nom: "New", + prenom: "User", + }), makeEmployeeContext(), ); assertEquals(res.status, 201); @@ -109,7 +119,11 @@ Deno.test({ await truncateAll(); await seedUsers([{ id: "dupont.jean", nom: "Dupont", prenom: "Jean" }]); const res = await usersHandler.POST!( - makeJsonRequest("/users", "POST", { id: "dupont.jean", nom: "Doublon", prenom: "X" }), + makeJsonRequest("/users", "POST", { + id: "dupont.jean", + nom: "Doublon", + prenom: "X", + }), makeEmployeeContext(), ); assertEquals(res.status, 409); @@ -160,7 +174,11 @@ Deno.test({ await truncateAll(); await seedUsers([{ id: "thomas.eva", nom: "Thomas", prenom: "Eva" }]); const res = await userHandler.PUT!( - makeJsonRequest("/users/thomas.eva", "PUT", { nom: "Thomas-Modifié", prenom: "Eva", idRole: null }), + makeJsonRequest("/users/thomas.eva", "PUT", { + nom: "Thomas-Modifié", + prenom: "Eva", + idRole: null, + }), makeEmployeeContext({ id: "thomas.eva" }), ); assertEquals(res.status, 200); @@ -176,7 +194,11 @@ Deno.test({ async fn() { await truncateAll(); const res = await userHandler.PUT!( - makeJsonRequest("/users/ghost.user", "PUT", { nom: "X", prenom: "Y", idRole: null }), + makeJsonRequest("/users/ghost.user", "PUT", { + nom: "X", + prenom: "Y", + idRole: null, + }), makeEmployeeContext({ id: "ghost.user" }), ); assertEquals(res.status, 404); diff --git a/tests/integration/ajustements_test.ts b/tests/integration/ajustements_test.ts index cd032a8..49e6fcd 100644 --- a/tests/integration/ajustements_test.ts +++ b/tests/integration/ajustements_test.ts @@ -17,7 +17,11 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Dupont", prenom: "Jean", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Dupont", + prenom: "Jean", + idPromo: "P1", + }]); const [ue] = await seedUes([{ nom: "UE Info" }]); await seedAjustements([{ numEtud: s.numEtud, idUE: ue.id, valeur: 13.0 }]); const rows = await testDb.select().from(ajustements); @@ -32,7 +36,11 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Martin", prenom: "Alice", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Martin", + prenom: "Alice", + idPromo: "P1", + }]); const [ue] = await seedUes([{ nom: "UE Maths" }]); const [created] = await testDb @@ -45,7 +53,9 @@ Deno.test({ const row = await testDb .select() .from(ajustements) - .where(and(eq(ajustements.numEtud, s.numEtud), eq(ajustements.idUE, ue.id))) + .where( + and(eq(ajustements.numEtud, s.numEtud), eq(ajustements.idUE, ue.id)), + ) .then((r) => r[0] ?? null); assertExists(row); assertEquals(row.valeur, 15.5); @@ -55,7 +65,8 @@ Deno.test({ }); Deno.test({ - name: "integration ajustements: get by composite key returns null when not found", + name: + "integration ajustements: get by composite key returns null when not found", async fn() { await truncateAll(); const row = await testDb @@ -74,11 +85,19 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Durand", prenom: "Claire", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Durand", + prenom: "Claire", + idPromo: "P1", + }]); const [ue] = await seedUes([{ nom: "UE Info" }]); await seedAjustements([{ numEtud: s.numEtud, idUE: ue.id, valeur: 12.0 }]); await assertRejects(() => - testDb.insert(ajustements).values({ numEtud: s.numEtud, idUE: ue.id, valeur: 13.0 }) + testDb.insert(ajustements).values({ + numEtud: s.numEtud, + idUE: ue.id, + valeur: 13.0, + }) ); }, sanitizeResources: false, @@ -90,14 +109,20 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Bernard", prenom: "Lucie", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Bernard", + prenom: "Lucie", + idPromo: "P1", + }]); const [ue] = await seedUes([{ nom: "UE Physique" }]); await seedAjustements([{ numEtud: s.numEtud, idUE: ue.id, valeur: 10.0 }]); const [updated] = await testDb .update(ajustements) .set({ valeur: 18.0 }) - .where(and(eq(ajustements.numEtud, s.numEtud), eq(ajustements.idUE, ue.id))) + .where( + and(eq(ajustements.numEtud, s.numEtud), eq(ajustements.idUE, ue.id)), + ) .returning(); assertEquals(updated.valeur, 18.0); }, @@ -110,15 +135,23 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "P1" }]); - const [s] = await seedStudents([{ nom: "Thomas", prenom: "Eva", idPromo: "P1" }]); + const [s] = await seedStudents([{ + nom: "Thomas", + prenom: "Eva", + idPromo: "P1", + }]); const [ue] = await seedUes([{ nom: "UE Chimie" }]); await seedAjustements([{ numEtud: s.numEtud, idUE: ue.id, valeur: 11.0 }]); - await testDb.delete(ajustements).where(and(eq(ajustements.numEtud, s.numEtud), eq(ajustements.idUE, ue.id))); + await testDb.delete(ajustements).where( + and(eq(ajustements.numEtud, s.numEtud), eq(ajustements.idUE, ue.id)), + ); const row = await testDb .select() .from(ajustements) - .where(and(eq(ajustements.numEtud, s.numEtud), eq(ajustements.idUE, ue.id))) + .where( + and(eq(ajustements.numEtud, s.numEtud), eq(ajustements.idUE, ue.id)), + ) .then((r) => r[0] ?? null); assertEquals(row, null); }, diff --git a/tests/integration/enseignements_test.ts b/tests/integration/enseignements_test.ts index c48a312..40086a9 100644 --- a/tests/integration/enseignements_test.ts +++ b/tests/integration/enseignements_test.ts @@ -63,7 +63,8 @@ Deno.test({ }); Deno.test({ - name: "integration enseignements: get by composite key returns null when not found", + name: + "integration enseignements: get by composite key returns null when not found", async fn() { await truncateAll(); const row = await testDb @@ -90,9 +91,17 @@ Deno.test({ await seedUsers([{ id: "prof.dupont", nom: "Dupont", prenom: "Jean" }]); await seedModules([{ id: "M1", nom: "Mod A" }]); await seedPromotions([{ id: "P1" }]); - await seedEnseignements([{ idProf: "prof.dupont", idModule: "M1", idPromo: "P1" }]); + await seedEnseignements([{ + idProf: "prof.dupont", + idModule: "M1", + idPromo: "P1", + }]); await assertRejects(() => - testDb.insert(enseignements).values({ idProf: "prof.dupont", idModule: "M1", idPromo: "P1" }) + testDb.insert(enseignements).values({ + idProf: "prof.dupont", + idModule: "M1", + idPromo: "P1", + }) ); }, sanitizeResources: false, @@ -106,7 +115,11 @@ Deno.test({ await seedUsers([{ id: "prof.dupont", nom: "Dupont", prenom: "Jean" }]); await seedModules([{ id: "M1", nom: "Mod A" }]); await seedPromotions([{ id: "P1" }]); - await seedEnseignements([{ idProf: "prof.dupont", idModule: "M1", idPromo: "P1" }]); + await seedEnseignements([{ + idProf: "prof.dupont", + idModule: "M1", + idPromo: "P1", + }]); await testDb .delete(enseignements) diff --git a/tests/integration/notes_test.ts b/tests/integration/notes_test.ts index bae19b3..b9018b9 100644 --- a/tests/integration/notes_test.ts +++ b/tests/integration/notes_test.ts @@ -17,7 +17,11 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "PROMO-2024" }]); - const [s] = await seedStudents([{ nom: "Dupont", prenom: "Jean", idPromo: "PROMO-2024" }]); + const [s] = await seedStudents([{ + nom: "Dupont", + prenom: "Jean", + idPromo: "PROMO-2024", + }]); await seedModules([{ id: "MOD101", nom: "Module A" }]); await seedNotes([{ numEtud: s.numEtud, idModule: "MOD101", note: 15.5 }]); const rows = await testDb.select().from(notes); @@ -32,10 +36,18 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "PROMO-2024" }]); - const [s] = await seedStudents([{ nom: "Martin", prenom: "Alice", idPromo: "PROMO-2024" }]); + const [s] = await seedStudents([{ + nom: "Martin", + prenom: "Alice", + idPromo: "PROMO-2024", + }]); await seedModules([{ id: "MOD102", nom: "Module B" }]); - const [created] = await testDb.insert(notes).values({ numEtud: s.numEtud, idModule: "MOD102", note: 12.0 }).returning(); + const [created] = await testDb.insert(notes).values({ + numEtud: s.numEtud, + idModule: "MOD102", + note: 12.0, + }).returning(); assertExists(created); assertEquals(created.note, 12.0); @@ -71,11 +83,19 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "PROMO-2024" }]); - const [s] = await seedStudents([{ nom: "Durand", prenom: "Claire", idPromo: "PROMO-2024" }]); + const [s] = await seedStudents([{ + nom: "Durand", + prenom: "Claire", + idPromo: "PROMO-2024", + }]); await seedModules([{ id: "MOD103", nom: "Module C" }]); await seedNotes([{ numEtud: s.numEtud, idModule: "MOD103", note: 10.0 }]); await assertRejects(() => - testDb.insert(notes).values({ numEtud: s.numEtud, idModule: "MOD103", note: 11.0 }) + testDb.insert(notes).values({ + numEtud: s.numEtud, + idModule: "MOD103", + note: 11.0, + }) ); }, sanitizeResources: false, @@ -87,7 +107,11 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "PROMO-2024" }]); - const [s] = await seedStudents([{ nom: "Bernard", prenom: "Lucie", idPromo: "PROMO-2024" }]); + const [s] = await seedStudents([{ + nom: "Bernard", + prenom: "Lucie", + idPromo: "PROMO-2024", + }]); await seedModules([{ id: "MOD104", nom: "Module D" }]); await seedNotes([{ numEtud: s.numEtud, idModule: "MOD104", note: 8.0 }]); @@ -107,11 +131,17 @@ Deno.test({ async fn() { await truncateAll(); await seedPromotions([{ id: "PROMO-2024" }]); - const [s] = await seedStudents([{ nom: "Thomas", prenom: "Eva", idPromo: "PROMO-2024" }]); + const [s] = await seedStudents([{ + nom: "Thomas", + prenom: "Eva", + idPromo: "PROMO-2024", + }]); await seedModules([{ id: "MOD105", nom: "Module E" }]); await seedNotes([{ numEtud: s.numEtud, idModule: "MOD105", note: 14.0 }]); - await testDb.delete(notes).where(and(eq(notes.numEtud, s.numEtud), eq(notes.idModule, "MOD105"))); + await testDb.delete(notes).where( + and(eq(notes.numEtud, s.numEtud), eq(notes.idModule, "MOD105")), + ); const row = await testDb .select() .from(notes) diff --git a/tests/integration/ue_modules_test.ts b/tests/integration/ue_modules_test.ts index 9a996ad..9aaab2a 100644 --- a/tests/integration/ue_modules_test.ts +++ b/tests/integration/ue_modules_test.ts @@ -48,7 +48,13 @@ Deno.test({ const row = await testDb .select() .from(ueModules) - .where(and(eq(ueModules.idModule, "M1"), eq(ueModules.idUE, ue.id), eq(ueModules.idPromo, "P1"))) + .where( + and( + eq(ueModules.idModule, "M1"), + eq(ueModules.idUE, ue.id), + eq(ueModules.idPromo, "P1"), + ), + ) .then((r) => r[0] ?? null); assertExists(row); assertEquals(row.coeff, 4.0); @@ -58,13 +64,20 @@ Deno.test({ }); Deno.test({ - name: "integration ue_modules: get by composite key returns null when not found", + name: + "integration ue_modules: get by composite key returns null when not found", async fn() { await truncateAll(); const row = await testDb .select() .from(ueModules) - .where(and(eq(ueModules.idModule, "GHOST"), eq(ueModules.idUE, 99), eq(ueModules.idPromo, "GHOST"))) + .where( + and( + eq(ueModules.idModule, "GHOST"), + eq(ueModules.idUE, 99), + eq(ueModules.idPromo, "GHOST"), + ), + ) .then((r) => r[0] ?? null); assertEquals(row, null); }, @@ -79,9 +92,19 @@ Deno.test({ await seedPromotions([{ id: "P1" }]); await seedModules([{ id: "M1", nom: "Mod A" }]); const [ue] = await seedUes([{ nom: "UE Info" }]); - await seedUeModules([{ idModule: "M1", idUE: ue.id, idPromo: "P1", coeff: 2.0 }]); + await seedUeModules([{ + idModule: "M1", + idUE: ue.id, + idPromo: "P1", + coeff: 2.0, + }]); await assertRejects(() => - testDb.insert(ueModules).values({ idModule: "M1", idUE: ue.id, idPromo: "P1", coeff: 5.0 }) + testDb.insert(ueModules).values({ + idModule: "M1", + idUE: ue.id, + idPromo: "P1", + coeff: 5.0, + }) ); }, sanitizeResources: false, @@ -95,12 +118,23 @@ Deno.test({ await seedPromotions([{ id: "P1" }]); await seedModules([{ id: "M1", nom: "Mod A" }]); const [ue] = await seedUes([{ nom: "UE Info" }]); - await seedUeModules([{ idModule: "M1", idUE: ue.id, idPromo: "P1", coeff: 2.0 }]); + await seedUeModules([{ + idModule: "M1", + idUE: ue.id, + idPromo: "P1", + coeff: 2.0, + }]); const [updated] = await testDb .update(ueModules) .set({ coeff: 6.0 }) - .where(and(eq(ueModules.idModule, "M1"), eq(ueModules.idUE, ue.id), eq(ueModules.idPromo, "P1"))) + .where( + and( + eq(ueModules.idModule, "M1"), + eq(ueModules.idUE, ue.id), + eq(ueModules.idPromo, "P1"), + ), + ) .returning(); assertEquals(updated.coeff, 6.0); }, @@ -115,15 +149,32 @@ Deno.test({ await seedPromotions([{ id: "P1" }]); await seedModules([{ id: "M1", nom: "Mod A" }]); const [ue] = await seedUes([{ nom: "UE Info" }]); - await seedUeModules([{ idModule: "M1", idUE: ue.id, idPromo: "P1", coeff: 2.0 }]); + await seedUeModules([{ + idModule: "M1", + idUE: ue.id, + idPromo: "P1", + coeff: 2.0, + }]); await testDb .delete(ueModules) - .where(and(eq(ueModules.idModule, "M1"), eq(ueModules.idUE, ue.id), eq(ueModules.idPromo, "P1"))); + .where( + and( + eq(ueModules.idModule, "M1"), + eq(ueModules.idUE, ue.id), + eq(ueModules.idPromo, "P1"), + ), + ); const row = await testDb .select() .from(ueModules) - .where(and(eq(ueModules.idModule, "M1"), eq(ueModules.idUE, ue.id), eq(ueModules.idPromo, "P1"))) + .where( + and( + eq(ueModules.idModule, "M1"), + eq(ueModules.idUE, ue.id), + eq(ueModules.idPromo, "P1"), + ), + ) .then((r) => r[0] ?? null); assertEquals(row, null); }, diff --git a/tests/integration/ues_test.ts b/tests/integration/ues_test.ts index 653fbef..790330a 100644 --- a/tests/integration/ues_test.ts +++ b/tests/integration/ues_test.ts @@ -21,12 +21,14 @@ Deno.test({ name: "integration ues: create and retrieve by id", async fn() { await truncateAll(); - const [created] = await testDb.insert(ues).values({ nom: "UE Physique" }).returning(); + const [created] = await testDb.insert(ues).values({ nom: "UE Physique" }) + .returning(); assertExists(created); assertExists(created.id); assertEquals(created.nom, "UE Physique"); - const row = await testDb.select().from(ues).where(eq(ues.id, created.id)).then((r) => r[0] ?? null); + const row = await testDb.select().from(ues).where(eq(ues.id, created.id)) + .then((r) => r[0] ?? null); assertExists(row); assertEquals(row.nom, "UE Physique"); }, @@ -38,7 +40,9 @@ Deno.test({ name: "integration ues: get by id returns null when not found", async fn() { await truncateAll(); - const row = await testDb.select().from(ues).where(eq(ues.id, 99999)).then((r) => r[0] ?? null); + const row = await testDb.select().from(ues).where(eq(ues.id, 99999)).then(( + r, + ) => r[0] ?? null); assertEquals(row, null); }, sanitizeResources: false, @@ -50,7 +54,9 @@ Deno.test({ async fn() { await truncateAll(); const [ue] = await seedUes([{ nom: "UE Chimie" }]); - const [updated] = await testDb.update(ues).set({ nom: "UE Chimie organique" }).where(eq(ues.id, ue.id)).returning(); + const [updated] = await testDb.update(ues).set({ + nom: "UE Chimie organique", + }).where(eq(ues.id, ue.id)).returning(); assertEquals(updated.nom, "UE Chimie organique"); }, sanitizeResources: false, @@ -63,7 +69,9 @@ Deno.test({ await truncateAll(); const [ue] = await seedUes([{ nom: "UE à supprimer" }]); await testDb.delete(ues).where(eq(ues.id, ue.id)); - const row = await testDb.select().from(ues).where(eq(ues.id, ue.id)).then((r) => r[0] ?? null); + const row = await testDb.select().from(ues).where(eq(ues.id, ue.id)).then(( + r, + ) => r[0] ?? null); assertEquals(row, null); }, sanitizeResources: false, @@ -80,4 +88,3 @@ Deno.test({ sanitizeResources: false, sanitizeOps: false, }); - diff --git a/tests/unit/ajustements_test.ts b/tests/unit/ajustements_test.ts index a2786c4..8820c23 100644 --- a/tests/unit/ajustements_test.ts +++ b/tests/unit/ajustements_test.ts @@ -32,7 +32,9 @@ Deno.test("mock API: GET /ajustements?numEtud filters by student", async () => { const filtered = ajustements.filter((a) => a.numEtud === 21212006); mockFetch({ "/ajustements": filtered }); try { - const res = await fetch("http://localhost/api/ajustements?numEtud=21212006"); + const res = await fetch( + "http://localhost/api/ajustements?numEtud=21212006", + ); const data: Ajustement[] = await res.json(); assertEquals(data.length, 1); assertEquals(data[0].numEtud, 21212006); @@ -53,7 +55,9 @@ Deno.test("mock API: GET /ajustements?numEtud=NaN returns 400", async () => { Deno.test("mock API: POST /ajustements creates ajustement (201) as employee", async () => { const newAjust: Ajustement = { numEtud: 21212007, idUE: 2, valeur: 14.0 }; - mockFetch({ "/ajustements": { method: "POST", status: 201, body: newAjust } }); + mockFetch({ + "/ajustements": { method: "POST", status: 201, body: newAjust }, + }); try { const res = await fetch("http://localhost/api/ajustements", { method: "POST", @@ -72,7 +76,9 @@ Deno.test("mock API: POST /ajustements creates ajustement (201) as employee", as Deno.test("mock API: POST /ajustements 403 for non-employee", async () => { mockFetch({ "/ajustements": { method: "POST", status: 403 } }); try { - const res = await fetch("http://localhost/api/ajustements", { method: "POST" }); + const res = await fetch("http://localhost/api/ajustements", { + method: "POST", + }); assertEquals(res.status, 403); } finally { restoreFetch(); @@ -116,7 +122,12 @@ Deno.test("mock API: GET /ajustements/:numEtud/:idUE 403 for non-employee", asyn }); Deno.test("mock API: GET /ajustements/:numEtud/:idUE 404 when not found", async () => { - mockFetch({ "/ajustements/99999/9": { status: 404, body: { error: "Ajustement introuvable" } } }); + mockFetch({ + "/ajustements/99999/9": { + status: 404, + body: { error: "Ajustement introuvable" }, + }, + }); try { const res = await fetch("http://localhost/api/ajustements/99999/9"); assertEquals(res.status, 404); @@ -127,7 +138,9 @@ Deno.test("mock API: GET /ajustements/:numEtud/:idUE 404 when not found", async Deno.test("mock API: PUT /ajustements/:numEtud/:idUE updates valeur", async () => { const updated: Ajustement = { ...ajustements[0], valeur: 18.0 }; - mockFetch({ "/ajustements/21212006/1": { method: "PUT", status: 200, body: updated } }); + mockFetch({ + "/ajustements/21212006/1": { method: "PUT", status: 200, body: updated }, + }); try { const res = await fetch("http://localhost/api/ajustements/21212006/1", { method: "PUT", @@ -145,7 +158,9 @@ Deno.test("mock API: PUT /ajustements/:numEtud/:idUE updates valeur", async () = Deno.test("mock API: DELETE /ajustements/:numEtud/:idUE returns 204", async () => { mockFetch({ "/ajustements/21212006/1": { method: "DELETE", status: 204 } }); try { - const res = await fetch("http://localhost/api/ajustements/21212006/1", { method: "DELETE" }); + const res = await fetch("http://localhost/api/ajustements/21212006/1", { + method: "DELETE", + }); assertEquals(res.status, 204); } finally { restoreFetch(); @@ -156,34 +171,54 @@ Deno.test("mock API: DELETE /ajustements/:numEtud/:idUE returns 204", async () = Deno.test("mock DB: find ajustement by composite key", () => { const db = createMockDb({ tables: { ajustements: [...ajustements] } }); - const a = db.findOne("ajustements", (a) => a.numEtud === 21212006 && a.idUE === 1); + const a = db.findOne( + "ajustements", + (a) => a.numEtud === 21212006 && a.idUE === 1, + ); assertExists(a); assertEquals(a.valeur, 13.25); }); Deno.test("mock DB: filter ajustements by numEtud", () => { const db = createMockDb({ tables: { ajustements: [...ajustements] } }); - const rows = db.findMany("ajustements", (a) => a.numEtud === 21212006); + const rows = db.findMany( + "ajustements", + (a) => a.numEtud === 21212006, + ); assertEquals(rows.length, 1); }); Deno.test("mock DB: insert ajustement", () => { const db = createMockDb({ tables: { ajustements: [...ajustements] } }); - db.insert("ajustements", { numEtud: 21212007, idUE: 2, valeur: 14.0 }); + db.insert("ajustements", { + numEtud: 21212007, + idUE: 2, + valeur: 14.0, + }); assertEquals(db.getTable("ajustements").length, 3); }); Deno.test("mock DB: update ajustement valeur", () => { const db = createMockDb({ tables: { ajustements: [...ajustements] } }); - db.updateWhere("ajustements", (a) => a.numEtud === 21212006 && a.idUE === 1, { valeur: 20.0 }); + db.updateWhere( + "ajustements", + (a) => a.numEtud === 21212006 && a.idUE === 1, + { valeur: 20.0 }, + ); assertEquals( - db.findOne("ajustements", (a) => a.numEtud === 21212006 && a.idUE === 1)?.valeur, + db.findOne( + "ajustements", + (a) => a.numEtud === 21212006 && a.idUE === 1, + )?.valeur, 20.0, ); }); Deno.test("mock DB: delete ajustement", () => { const db = createMockDb({ tables: { ajustements: [...ajustements] } }); - db.deleteWhere("ajustements", (a) => a.numEtud === 21212006 && a.idUE === 1); + db.deleteWhere( + "ajustements", + (a) => a.numEtud === 21212006 && a.idUE === 1, + ); assertEquals(db.getTable("ajustements").length, 1); }); diff --git a/tests/unit/enseignements_test.ts b/tests/unit/enseignements_test.ts index 3182019..d1e3b04 100644 --- a/tests/unit/enseignements_test.ts +++ b/tests/unit/enseignements_test.ts @@ -22,8 +22,14 @@ Deno.test("enseignements: fixtures have correct shape", () => { // --- Mock API --- Deno.test("mock API: POST /enseignements creates enseignement (201) as employee", async () => { - const newEns: Enseignement = { idProf: "prof.dupont", idModule: "JIN702C", idPromo: "4AFISE25/26" }; - mockFetch({ "/enseignements": { method: "POST", status: 201, body: newEns } }); + const newEns: Enseignement = { + idProf: "prof.dupont", + idModule: "JIN702C", + idPromo: "4AFISE25/26", + }; + mockFetch({ + "/enseignements": { method: "POST", status: 201, body: newEns }, + }); try { const res = await fetch("http://localhost/api/enseignements", { method: "POST", @@ -41,7 +47,9 @@ Deno.test("mock API: POST /enseignements creates enseignement (201) as employee" Deno.test("mock API: POST /enseignements 403 for non-employee", async () => { mockFetch({ "/enseignements": { method: "POST", status: 403 } }); try { - const res = await fetch("http://localhost/api/enseignements", { method: "POST" }); + const res = await fetch("http://localhost/api/enseignements", { + method: "POST", + }); assertEquals(res.status, 403); } finally { restoreFetch(); @@ -64,13 +72,21 @@ Deno.test("mock API: POST /enseignements 400 on missing fields", async () => { Deno.test("mock API: POST /enseignements 409 on duplicate", async () => { mockFetch({ - "/enseignements": { method: "POST", status: 409, body: { error: "Cet enseignement existe déjà." } }, + "/enseignements": { + method: "POST", + status: 409, + body: { error: "Cet enseignement existe déjà." }, + }, }); try { const res = await fetch("http://localhost/api/enseignements", { method: "POST", headers: { "content-type": "application/json" }, - body: JSON.stringify({ idProf: "prof.dupont", idModule: "JIN702C", idPromo: "4AFISE25/26" }), + body: JSON.stringify({ + idProf: "prof.dupont", + idModule: "JIN702C", + idPromo: "4AFISE25/26", + }), }); assertEquals(res.status, 409); const data = await res.json(); @@ -81,10 +97,16 @@ Deno.test("mock API: POST /enseignements 409 on duplicate", async () => { }); Deno.test("mock API: GET /enseignements/:idProf/:idModule/:idPromo returns enseignement (employee)", async () => { - const ens: Enseignement = { idProf: "prof.dupont", idModule: "JIN702C", idPromo: "4AFISE25/26" }; + const ens: Enseignement = { + idProf: "prof.dupont", + idModule: "JIN702C", + idPromo: "4AFISE25/26", + }; mockFetch({ "/enseignements/prof.dupont/JIN702C/4AFISE25": ens }); try { - const res = await fetch("http://localhost/api/enseignements/prof.dupont/JIN702C/4AFISE25%2F26"); + const res = await fetch( + "http://localhost/api/enseignements/prof.dupont/JIN702C/4AFISE25%2F26", + ); assertEquals(res.status, 200); const data: Enseignement = await res.json(); assertEquals(data.idProf, "prof.dupont"); @@ -97,7 +119,9 @@ Deno.test("mock API: GET /enseignements/:idProf/:idModule/:idPromo returns ensei Deno.test("mock API: GET /enseignements/:idProf/:idModule/:idPromo 403 for non-employee", async () => { mockFetch({ "/enseignements/prof.dupont/JIN702C/4AFISE25": { status: 403 } }); try { - const res = await fetch("http://localhost/api/enseignements/prof.dupont/JIN702C/4AFISE25%2F26"); + const res = await fetch( + "http://localhost/api/enseignements/prof.dupont/JIN702C/4AFISE25%2F26", + ); assertEquals(res.status, 403); } finally { restoreFetch(); @@ -105,9 +129,16 @@ Deno.test("mock API: GET /enseignements/:idProf/:idModule/:idPromo 403 for non-e }); Deno.test("mock API: GET /enseignements/:idProf/:idModule/:idPromo 404 when not found", async () => { - mockFetch({ "/enseignements/ghost/GHOST/GHOST": { status: 404, body: { error: "Ressource introuvable" } } }); + mockFetch({ + "/enseignements/ghost/GHOST/GHOST": { + status: 404, + body: { error: "Ressource introuvable" }, + }, + }); try { - const res = await fetch("http://localhost/api/enseignements/ghost/GHOST/GHOST"); + const res = await fetch( + "http://localhost/api/enseignements/ghost/GHOST/GHOST", + ); assertEquals(res.status, 404); } finally { restoreFetch(); @@ -115,11 +146,19 @@ Deno.test("mock API: GET /enseignements/:idProf/:idModule/:idPromo 404 when not }); Deno.test("mock API: DELETE /enseignements/:idProf/:idModule/:idPromo returns 204 (employee)", async () => { - mockFetch({ "/enseignements/prof.dupont/JIN702C/4AFISE25": { method: "DELETE", status: 204 } }); - try { - const res = await fetch("http://localhost/api/enseignements/prof.dupont/JIN702C/4AFISE25%2F26", { + mockFetch({ + "/enseignements/prof.dupont/JIN702C/4AFISE25": { method: "DELETE", - }); + status: 204, + }, + }); + try { + const res = await fetch( + "http://localhost/api/enseignements/prof.dupont/JIN702C/4AFISE25%2F26", + { + method: "DELETE", + }, + ); assertEquals(res.status, 204); } finally { restoreFetch(); @@ -127,11 +166,19 @@ Deno.test("mock API: DELETE /enseignements/:idProf/:idModule/:idPromo returns 20 }); Deno.test("mock API: DELETE /enseignements/:idProf/:idModule/:idPromo 403 for non-employee", async () => { - mockFetch({ "/enseignements/prof.dupont/JIN702C/4AFISE25": { method: "DELETE", status: 403 } }); - try { - const res = await fetch("http://localhost/api/enseignements/prof.dupont/JIN702C/4AFISE25%2F26", { + mockFetch({ + "/enseignements/prof.dupont/JIN702C/4AFISE25": { method: "DELETE", - }); + status: 403, + }, + }); + try { + const res = await fetch( + "http://localhost/api/enseignements/prof.dupont/JIN702C/4AFISE25%2F26", + { + method: "DELETE", + }, + ); assertEquals(res.status, 403); } finally { restoreFetch(); @@ -146,14 +193,21 @@ Deno.test("mock DB: find enseignement by composite key", () => { { idProf: "prof.moreau", idModule: "JIN703C", idPromo: "4AFISE25/26" }, ]; const db = createMockDb({ tables: { enseignements: data } }); - const e = db.findOne("enseignements", (e) => e.idProf === "prof.dupont" && e.idModule === "JIN702C"); + const e = db.findOne( + "enseignements", + (e) => e.idProf === "prof.dupont" && e.idModule === "JIN702C", + ); assertExists(e); assertEquals(e.idPromo, "4AFISE25/26"); }); Deno.test("mock DB: insert enseignement", () => { const db = createMockDb({ tables: { enseignements: [] } }); - db.insert("enseignements", { idProf: "prof.dupont", idModule: "JIN702C", idPromo: "4AFISE25/26" }); + db.insert("enseignements", { + idProf: "prof.dupont", + idModule: "JIN702C", + idPromo: "4AFISE25/26", + }); assertEquals(db.getTable("enseignements").length, 1); }); @@ -163,7 +217,10 @@ Deno.test("mock DB: delete enseignement", () => { { idProf: "prof.moreau", idModule: "JIN703C", idPromo: "4AFISE25/26" }, ]; const db = createMockDb({ tables: { enseignements: data } }); - db.deleteWhere("enseignements", (e) => e.idProf === "prof.dupont"); + db.deleteWhere( + "enseignements", + (e) => e.idProf === "prof.dupont", + ); assertEquals(db.getTable("enseignements").length, 1); }); @@ -174,6 +231,9 @@ Deno.test("mock DB: filter enseignements by idModule", () => { { idProf: "prof.moreau", idModule: "JIN703C", idPromo: "4AFISE25/26" }, ]; const db = createMockDb({ tables: { enseignements: data } }); - const rows = db.findMany("enseignements", (e) => e.idModule === "JIN702C"); + const rows = db.findMany( + "enseignements", + (e) => e.idModule === "JIN702C", + ); assertEquals(rows.length, 2); }); diff --git a/tests/unit/notes_test.ts b/tests/unit/notes_test.ts index f39d4ba..9e13794 100644 --- a/tests/unit/notes_test.ts +++ b/tests/unit/notes_test.ts @@ -113,7 +113,12 @@ Deno.test("mock API: GET /notes/:numEtud/:idModule returns note", async () => { }); Deno.test("mock API: GET /notes/:numEtud/:idModule 404 when not found", async () => { - mockFetch({ "/notes/99999/GHOST": { status: 404, body: { error: "Ressource introuvable" } } }); + mockFetch({ + "/notes/99999/GHOST": { + status: 404, + body: { error: "Ressource introuvable" }, + }, + }); try { const res = await fetch("http://localhost/api/notes/99999/GHOST"); assertEquals(res.status, 404); @@ -124,7 +129,9 @@ Deno.test("mock API: GET /notes/:numEtud/:idModule 404 when not found", async () Deno.test("mock API: PUT /notes/:numEtud/:idModule updates note", async () => { const updated: Note = { ...notes[0], note: 17.0 }; - mockFetch({ "/notes/21212006/JIN702C": { method: "PUT", status: 200, body: updated } }); + mockFetch({ + "/notes/21212006/JIN702C": { method: "PUT", status: 200, body: updated }, + }); try { const res = await fetch("http://localhost/api/notes/21212006/JIN702C", { method: "PUT", @@ -142,7 +149,9 @@ Deno.test("mock API: PUT /notes/:numEtud/:idModule updates note", async () => { Deno.test("mock API: DELETE /notes/:numEtud/:idModule returns 204", async () => { mockFetch({ "/notes/21212006/JIN702C": { method: "DELETE", status: 204 } }); try { - const res = await fetch("http://localhost/api/notes/21212006/JIN702C", { method: "DELETE" }); + const res = await fetch("http://localhost/api/notes/21212006/JIN702C", { + method: "DELETE", + }); assertEquals(res.status, 204); } finally { restoreFetch(); @@ -152,7 +161,9 @@ Deno.test("mock API: DELETE /notes/:numEtud/:idModule returns 204", async () => Deno.test("mock API: DELETE /notes/:numEtud/:idModule 404 when not found", async () => { mockFetch({ "/notes/99999/GHOST": { method: "DELETE", status: 404 } }); try { - const res = await fetch("http://localhost/api/notes/99999/GHOST", { method: "DELETE" }); + const res = await fetch("http://localhost/api/notes/99999/GHOST", { + method: "DELETE", + }); assertEquals(res.status, 404); } finally { restoreFetch(); @@ -163,7 +174,10 @@ Deno.test("mock API: DELETE /notes/:numEtud/:idModule 404 when not found", async Deno.test("mock DB: find note by composite key", () => { const db = createMockDb({ tables: { notes: [...notes] } }); - const n = db.findOne("notes", (n) => n.numEtud === 21212006 && n.idModule === "JIN702C"); + const n = db.findOne( + "notes", + (n) => n.numEtud === 21212006 && n.idModule === "JIN702C", + ); assertExists(n); assertEquals(n.note, 15.5); }); @@ -176,21 +190,35 @@ Deno.test("mock DB: filter notes by numEtud", () => { Deno.test("mock DB: insert note", () => { const db = createMockDb({ tables: { notes: [...notes] } }); - db.insert("notes", { note: 10.0, numEtud: 21212006, idModule: "JIN704C" }); + db.insert("notes", { + note: 10.0, + numEtud: 21212006, + idModule: "JIN704C", + }); assertEquals(db.getTable("notes").length, 5); }); Deno.test("mock DB: update note value", () => { const db = createMockDb({ tables: { notes: [...notes] } }); - db.updateWhere("notes", (n) => n.numEtud === 21212006 && n.idModule === "JIN702C", { note: 20.0 }); + db.updateWhere( + "notes", + (n) => n.numEtud === 21212006 && n.idModule === "JIN702C", + { note: 20.0 }, + ); assertEquals( - db.findOne("notes", (n) => n.numEtud === 21212006 && n.idModule === "JIN702C")?.note, + db.findOne( + "notes", + (n) => n.numEtud === 21212006 && n.idModule === "JIN702C", + )?.note, 20.0, ); }); Deno.test("mock DB: delete note", () => { const db = createMockDb({ tables: { notes: [...notes] } }); - db.deleteWhere("notes", (n) => n.numEtud === 21212006 && n.idModule === "JIN702C"); + db.deleteWhere( + "notes", + (n) => n.numEtud === 21212006 && n.idModule === "JIN702C", + ); assertEquals(db.getTable("notes").length, 3); }); diff --git a/tests/unit/ue_modules_test.ts b/tests/unit/ue_modules_test.ts index 8037998..7b2761d 100644 --- a/tests/unit/ue_modules_test.ts +++ b/tests/unit/ue_modules_test.ts @@ -33,7 +33,9 @@ Deno.test("mock API: GET /ue-modules?idPromo filters by promo", async () => { const filtered = ueModules.filter((u) => u.idPromo === "4AFISE25/26"); mockFetch({ "/ue-modules": filtered }); try { - const res = await fetch("http://localhost/api/ue-modules?idPromo=4AFISE25%2F26"); + const res = await fetch( + "http://localhost/api/ue-modules?idPromo=4AFISE25%2F26", + ); const data: UeModule[] = await res.json(); assertEquals(data.length, 2); assertEquals(data.every((u) => u.idPromo === "4AFISE25/26"), true); @@ -56,8 +58,15 @@ Deno.test("mock API: GET /ue-modules?idUE filters by UE", async () => { }); Deno.test("mock API: POST /ue-modules creates association (201)", async () => { - const newUeModule: UeModule = { idModule: "JIN705C", idUE: 2, idPromo: "3AFISE25/26", coeff: 3.0 }; - mockFetch({ "/ue-modules": { method: "POST", status: 201, body: newUeModule } }); + const newUeModule: UeModule = { + idModule: "JIN705C", + idUE: 2, + idPromo: "3AFISE25/26", + coeff: 3.0, + }; + mockFetch({ + "/ue-modules": { method: "POST", status: 201, body: newUeModule }, + }); try { const res = await fetch("http://localhost/api/ue-modules", { method: "POST", @@ -90,7 +99,9 @@ Deno.test("mock API: POST /ue-modules 400 on missing fields", async () => { Deno.test("mock API: GET /ue-modules/:idModule/:idUE/:idPromo returns association (employee)", async () => { mockFetch({ "/ue-modules/JIN702C/1/4AFISE25": ueModules[0] }); try { - const res = await fetch("http://localhost/api/ue-modules/JIN702C/1/4AFISE25%2F26"); + const res = await fetch( + "http://localhost/api/ue-modules/JIN702C/1/4AFISE25%2F26", + ); assertEquals(res.status, 200); const data: UeModule = await res.json(); assertEquals(data.coeff, 3.0); @@ -102,7 +113,9 @@ Deno.test("mock API: GET /ue-modules/:idModule/:idUE/:idPromo returns associatio Deno.test("mock API: GET /ue-modules/:idModule/:idUE/:idPromo 403 for non-employee", async () => { mockFetch({ "/ue-modules/JIN702C/1/4AFISE25": { status: 403 } }); try { - const res = await fetch("http://localhost/api/ue-modules/JIN702C/1/4AFISE25%2F26"); + const res = await fetch( + "http://localhost/api/ue-modules/JIN702C/1/4AFISE25%2F26", + ); assertEquals(res.status, 403); } finally { restoreFetch(); @@ -111,13 +124,22 @@ Deno.test("mock API: GET /ue-modules/:idModule/:idUE/:idPromo 403 for non-employ Deno.test("mock API: PUT /ue-modules/:idModule/:idUE/:idPromo updates coeff", async () => { const updated: UeModule = { ...ueModules[0], coeff: 5.0 }; - mockFetch({ "/ue-modules/JIN702C/1/4AFISE25": { method: "PUT", status: 200, body: updated } }); - try { - const res = await fetch("http://localhost/api/ue-modules/JIN702C/1/4AFISE25%2F26", { + mockFetch({ + "/ue-modules/JIN702C/1/4AFISE25": { method: "PUT", - headers: { "content-type": "application/json" }, - body: JSON.stringify({ coeff: 5.0 }), - }); + status: 200, + body: updated, + }, + }); + try { + const res = await fetch( + "http://localhost/api/ue-modules/JIN702C/1/4AFISE25%2F26", + { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ coeff: 5.0 }), + }, + ); assertEquals(res.status, 200); const data: UeModule = await res.json(); assertEquals(data.coeff, 5.0); @@ -127,9 +149,14 @@ Deno.test("mock API: PUT /ue-modules/:idModule/:idUE/:idPromo updates coeff", as }); Deno.test("mock API: DELETE /ue-modules/:idModule/:idUE/:idPromo returns 204", async () => { - mockFetch({ "/ue-modules/JIN702C/1/4AFISE25": { method: "DELETE", status: 204 } }); + mockFetch({ + "/ue-modules/JIN702C/1/4AFISE25": { method: "DELETE", status: 204 }, + }); try { - const res = await fetch("http://localhost/api/ue-modules/JIN702C/1/4AFISE25%2F26", { method: "DELETE" }); + const res = await fetch( + "http://localhost/api/ue-modules/JIN702C/1/4AFISE25%2F26", + { method: "DELETE" }, + ); assertEquals(res.status, 204); } finally { restoreFetch(); @@ -140,34 +167,56 @@ Deno.test("mock API: DELETE /ue-modules/:idModule/:idUE/:idPromo returns 204", a Deno.test("mock DB: find ue-module by composite key", () => { const db = createMockDb({ tables: { ueModules: [...ueModules] } }); - const u = db.findOne("ueModules", (u) => u.idModule === "JIN702C" && u.idUE === 1 && u.idPromo === "4AFISE25/26"); + const u = db.findOne( + "ueModules", + (u) => + u.idModule === "JIN702C" && u.idUE === 1 && u.idPromo === "4AFISE25/26", + ); assertExists(u); assertEquals(u.coeff, 3.0); }); Deno.test("mock DB: filter ue-modules by promo", () => { const db = createMockDb({ tables: { ueModules: [...ueModules] } }); - const rows = db.findMany("ueModules", (u) => u.idPromo === "4AFISE25/26"); + const rows = db.findMany( + "ueModules", + (u) => u.idPromo === "4AFISE25/26", + ); assertEquals(rows.length, 2); }); Deno.test("mock DB: insert ue-module", () => { const db = createMockDb({ tables: { ueModules: [...ueModules] } }); - db.insert("ueModules", { idModule: "JIN705C", idUE: 2, idPromo: "3AFISE25/26", coeff: 1.5 }); + db.insert("ueModules", { + idModule: "JIN705C", + idUE: 2, + idPromo: "3AFISE25/26", + coeff: 1.5, + }); assertEquals(db.getTable("ueModules").length, 4); }); Deno.test("mock DB: update ue-module coeff", () => { const db = createMockDb({ tables: { ueModules: [...ueModules] } }); - db.updateWhere("ueModules", (u) => u.idModule === "JIN702C" && u.idUE === 1, { coeff: 6.0 }); + db.updateWhere( + "ueModules", + (u) => u.idModule === "JIN702C" && u.idUE === 1, + { coeff: 6.0 }, + ); assertEquals( - db.findOne("ueModules", (u) => u.idModule === "JIN702C" && u.idUE === 1)?.coeff, + db.findOne( + "ueModules", + (u) => u.idModule === "JIN702C" && u.idUE === 1, + )?.coeff, 6.0, ); }); Deno.test("mock DB: delete ue-module", () => { const db = createMockDb({ tables: { ueModules: [...ueModules] } }); - db.deleteWhere("ueModules", (u) => u.idModule === "JIN702C" && u.idUE === 1); + db.deleteWhere( + "ueModules", + (u) => u.idModule === "JIN702C" && u.idUE === 1, + ); assertEquals(db.getTable("ueModules").length, 2); }); diff --git a/tests/unit/ues_test.ts b/tests/unit/ues_test.ts index 5d36a95..f823f7d 100644 --- a/tests/unit/ues_test.ts +++ b/tests/unit/ues_test.ts @@ -42,7 +42,9 @@ Deno.test("mock API: GET /ues/:id returns one UE", async () => { }); Deno.test("mock API: GET /ues/:id 404 when not found", async () => { - mockFetch({ "/ues/99": { status: 404, body: { error: "Ressource introuvable" } } }); + mockFetch({ + "/ues/99": { status: 404, body: { error: "Ressource introuvable" } }, + }); try { const res = await fetch("http://localhost/api/ues/99"); assertEquals(res.status, 404); @@ -125,7 +127,9 @@ Deno.test("mock API: DELETE /ues/:id returns 204", async () => { Deno.test("mock API: DELETE /ues/:id 404 when not found", async () => { mockFetch({ "/ues/99": { method: "DELETE", status: 404 } }); try { - const res = await fetch("http://localhost/api/ues/99", { method: "DELETE" }); + const res = await fetch("http://localhost/api/ues/99", { + method: "DELETE", + }); assertEquals(res.status, 404); } finally { restoreFetch();