test : changed test format + added playwright support
This commit is contained in:
@@ -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);
|
||||
});
|
||||
Reference in New Issue
Block a user