test : changed test format + added playwright support

This commit is contained in:
2026-05-03 21:52:02 +02:00
committed by djalim
parent 08894730a3
commit a6042087dc
52 changed files with 3576 additions and 5212 deletions
+70
View File
@@ -0,0 +1,70 @@
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<string, Note> = {
"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<string, Note> = {
"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<string, Note> = {};
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);
});