import { assertEquals } from "@std/assert"; import { calculateWeightedAverage, getEffectiveNote, applyAjustement, Note, UEModule, Ajustement } from "../../logic/grades.ts"; Deno.test("grades logic: getEffectiveNote uses session 2 if present", () => { const note: Note = { note: 12, noteSession2: 15 }; assertEquals(getEffectiveNote(note), 15); }); Deno.test("grades logic: getEffectiveNote uses session 1 if session 2 is null", () => { const note: Note = { note: 12, noteSession2: null }; assertEquals(getEffectiveNote(note), 12); }); Deno.test("grades logic: calculateWeightedAverage computes correctly", () => { const ueModules: UEModule[] = [ { idModule: "M1", coeff: 2 }, { idModule: "M2", coeff: 3 }, ]; const notesMap: Record = { "M1": { note: 10, noteSession2: null }, "M2": { note: 15, noteSession2: null }, }; // (10*2 + 15*3) / 5 = (20 + 45) / 5 = 65 / 5 = 13 assertEquals(calculateWeightedAverage(ueModules, notesMap), 13); }); Deno.test("grades logic: calculateWeightedAverage handles missing notes", () => { const ueModules: UEModule[] = [ { idModule: "M1", coeff: 2 }, { idModule: "M2", coeff: 3 }, ]; const notesMap: Record = { "M1": { note: 10, noteSession2: null }, // M2 manquante }; // (10*2) / 2 = 10 assertEquals(calculateWeightedAverage(ueModules, notesMap), 10); }); Deno.test("grades logic: calculateWeightedAverage returns null if no notes", () => { const ueModules: UEModule[] = [ { idModule: "M1", coeff: 2 }, ]; const notesMap: Record = {}; assertEquals(calculateWeightedAverage(ueModules, notesMap), null); }); Deno.test("grades logic: applyAjustement replaces calculated average", () => { const calculatedAvg = 12; const ajustement: Ajustement = { valeur: 14, malus: 0 }; assertEquals(applyAjustement(calculatedAvg, ajustement), 14); }); Deno.test("grades logic: applyAjustement subtracts malus", () => { const calculatedAvg = 12; const ajustement: Ajustement = { valeur: 14, malus: 2 }; assertEquals(applyAjustement(calculatedAvg, ajustement), 12); }); Deno.test("grades logic: applyAjustement returns calculated average if no ajustement", () => { const calculatedAvg = 12; assertEquals(applyAjustement(calculatedAvg, null), 12); });