empty.test.ts
1 import { describe, expect, it } from "bun:test"; 2 import { Signatures } from "src/iut/signatures"; 3 import html from "./empty.html" with { type: "text" }; 4 5 describe("iut/signatures [empty]", () => { 6 const report = Signatures.parse(html as unknown as string); 7 8 it("should parse the report card", () => { 9 expect(report.fullName).toBe("JOHN DOE"); 10 expect(report.promotion).toBe("Année 3"); 11 expect(report.semesters).toBeArrayOfSize(2); 12 }); 13 14 it("should parse the 5th semester metadata", () => { 15 const semester = report.semesters[0]; 16 expect(semester.name).toBe("Semestre 5"); 17 expect(semester.units).toBeArrayOfSize(3); 18 }); 19 20 it("should parse the 5th semester's 1st unit", () => { 21 const unit = report.semesters[0].units[0]; 22 23 expect(unit.average).toBeNull(); 24 expect(unit.code).toBe("UE 5.1"); 25 expect(unit.name).toBe("Réaliser un développement d'application"); 26 expect(unit.coefficient).toBe(10); 27 expect(unit.modules).toBeArrayOfSize(11); 28 29 { 30 const module = unit.modules[0]; 31 expect(module.code).toBe("R5.A.02"); 32 expect(module.name).toBe("Projet personnel et professionnel"); 33 expect(module.coefficient).toBe(0.1); 34 expect(module.average).toBeNull(); 35 expect(module.exams).toBeArrayOfSize(1); 36 37 const exam = module.exams[0]; 38 expect(exam.date).toBeNull(); 39 expect(exam.average).toBeNull(); 40 expect(exam.globalAverage).toBeNull(); 41 expect(exam.coefficient).toBe(1.0); 42 expect(exam.name).toBe("Moyenne"); 43 } 44 45 { 46 const module = unit.modules[1]; 47 expect(module.code).toBe("R5.A.04"); 48 expect(module.name).toBe("Qualité algorithmique"); 49 expect(module.coefficient).toBe(0.2); 50 expect(module.average).toBeNull(); 51 expect(module.exams).toBeArrayOfSize(1); 52 53 const exam = module.exams[0]; 54 expect(exam.date).toBeNull(); 55 expect(exam.average).toBeNull(); 56 expect(exam.globalAverage).toBeNull(); 57 expect(exam.coefficient).toBe(1.0); 58 expect(exam.name).toBe("Moyenne"); 59 } 60 61 { 62 const module = unit.modules[2]; 63 expect(module.code).toBe("R5.A.05"); 64 expect(module.name).toBe("Programmation avancée"); 65 expect(module.coefficient).toBe(0.9); 66 expect(module.average).toBeNull(); 67 expect(module.exams).toBeArrayOfSize(1); 68 69 const exam = module.exams[0]; 70 expect(exam.date).toBeNull(); 71 expect(exam.average).toBeNull(); 72 expect(exam.globalAverage).toBeNull(); 73 expect(exam.coefficient).toBe(1.0); 74 expect(exam.name).toBe("Moyenne"); 75 } 76 77 { 78 const module = unit.modules[3]; 79 expect(module.code).toBe("R5.A.06"); 80 expect(module.name).toBe("Sensibilisation à la programmation multimédia"); 81 expect(module.coefficient).toBe(0.2); 82 expect(module.average).toBeNull(); 83 expect(module.exams).toBeArrayOfSize(1); 84 85 const exam = module.exams[0]; 86 expect(exam.date).toBeNull(); 87 expect(exam.average).toBeNull(); 88 expect(exam.globalAverage).toBeNull(); 89 expect(exam.coefficient).toBe(1.0); 90 expect(exam.name).toBe("Moyenne"); 91 } 92 93 { 94 const module = unit.modules[4]; 95 expect(module.code).toBe("R5.A.07"); 96 expect(module.name).toBe("Automatisation de la chaîne de production"); 97 expect(module.coefficient).toBe(0.6); 98 expect(module.average).toBeNull(); 99 expect(module.exams).toBeArrayOfSize(1); 100 101 const exam = module.exams[0]; 102 expect(exam.date).toBeNull(); 103 expect(exam.average).toBeNull(); 104 expect(exam.globalAverage).toBeNull(); 105 expect(exam.coefficient).toBe(1.0); 106 expect(exam.name).toBe("Moyenne"); 107 } 108 109 { 110 const module = unit.modules[5]; 111 expect(module.code).toBe("R5.A.08"); 112 expect(module.name).toBe("Qualité de développement"); 113 expect(module.coefficient).toBe(0.7); 114 expect(module.average).toBeNull(); 115 expect(module.exams).toBeArrayOfSize(1); 116 117 const exam = module.exams[0]; 118 expect(exam.date).toBeNull(); 119 expect(exam.average).toBeNull(); 120 expect(exam.globalAverage).toBeNull(); 121 expect(exam.coefficient).toBe(1.0); 122 expect(exam.name).toBe("Moyenne"); 123 } 124 125 { 126 const module = unit.modules[6]; 127 expect(module.code).toBe("R5.A.09"); 128 expect(module.name).toBe("Virtualisation avancée"); 129 expect(module.coefficient).toBe(0.7); 130 expect(module.average).toBeNull(); 131 expect(module.exams).toBeArrayOfSize(1); 132 133 const exam = module.exams[0]; 134 expect(exam.date).toBeNull(); 135 expect(exam.average).toBeNull(); 136 expect(exam.globalAverage).toBeNull(); 137 expect(exam.coefficient).toBe(1.0); 138 expect(exam.name).toBe("Moyenne"); 139 } 140 141 { 142 const module = unit.modules[7]; 143 expect(module.code).toBe("R5.A.10"); 144 expect(module.name).toBe("Nouveaux paradigmes de base de données"); 145 expect(module.coefficient).toBe(1.1); 146 expect(module.average).toBeNull(); 147 expect(module.exams).toBeArrayOfSize(1); 148 149 const exam = module.exams[0]; 150 expect(exam.date).toBeNull(); 151 expect(exam.average).toBeNull(); 152 expect(exam.globalAverage).toBeNull(); 153 expect(exam.coefficient).toBe(1.0); 154 expect(exam.name).toBe("Moyenne"); 155 } 156 157 { 158 const module = unit.modules[8]; 159 expect(module.code).toBe("R5.A.13"); 160 expect(module.name).toBe("Économie durable et numérique"); 161 expect(module.coefficient).toBe(0.2); 162 expect(module.average).toBeNull(); 163 expect(module.exams).toBeArrayOfSize(1); 164 165 const exam = module.exams[0]; 166 expect(exam.date).toBeNull(); 167 expect(exam.average).toBeNull(); 168 expect(exam.globalAverage).toBeNull(); 169 expect(exam.coefficient).toBe(1.0); 170 expect(exam.name).toBe("Moyenne"); 171 } 172 173 { 174 const module = unit.modules[9]; 175 expect(module.code).toBe("R5.A.14"); 176 expect(module.name).toBe("Anglais"); 177 expect(module.coefficient).toBe(0.3); 178 expect(module.average).toBeNull(); 179 expect(module.exams).toBeArrayOfSize(1); 180 181 const exam = module.exams[0]; 182 expect(exam.date).toBeNull(); 183 expect(exam.average).toBeNull(); 184 expect(exam.globalAverage).toBeNull(); 185 expect(exam.coefficient).toBe(1.0); 186 expect(exam.name).toBe("Moyenne"); 187 } 188 189 { 190 const module = unit.modules[10]; 191 expect(module.code).toBe("S5.A.01"); 192 expect(module.name).toBe("Développement avancé"); 193 expect(module.coefficient).toBe(5.0); 194 expect(module.average).toBeNull(); 195 expect(module.exams).toBeArrayOfSize(1); 196 197 const exam = module.exams[0]; 198 expect(exam.date).toBeNull(); 199 expect(exam.average).toBeNull(); 200 expect(exam.globalAverage).toBeNull(); 201 expect(exam.coefficient).toBe(1.0); 202 expect(exam.name).toBe("Moyenne"); 203 } 204 }); 205 206 it("should parse the 5th semester's 2nd unit", () => { 207 const unit = report.semesters[0].units[1]; 208 209 expect(unit.average).toBeNull(); 210 expect(unit.code).toBe("UE 5.2"); 211 expect(unit.name).toBe("Optimiser des applications"); 212 expect(unit.coefficient).toBe(10); 213 expect(unit.modules).toBeArrayOfSize(11); 214 215 { 216 const module = unit.modules[0]; 217 expect(module.code).toBe("R5.A.02"); 218 expect(module.name).toBe("Projet personnel et professionnel"); 219 expect(module.coefficient).toBe(0.1); 220 expect(module.average).toBeNull(); 221 expect(module.exams).toBeArrayOfSize(0); 222 } 223 224 { 225 const module = unit.modules[1]; 226 expect(module.code).toBe("R5.A.04"); 227 expect(module.name).toBe("Qualité algorithmique"); 228 expect(module.coefficient).toBe(0.6); 229 expect(module.average).toBeNull(); 230 expect(module.exams).toBeArrayOfSize(0); 231 } 232 233 { 234 const module = unit.modules[2]; 235 expect(module.code).toBe("R5.A.05"); 236 expect(module.name).toBe("Programmation avancée"); 237 expect(module.coefficient).toBe(0.7); 238 expect(module.average).toBeNull(); 239 expect(module.exams).toBeArrayOfSize(0); 240 } 241 242 { 243 const module = unit.modules[3]; 244 expect(module.code).toBe("R5.A.06"); 245 expect(module.name).toBe("Sensibilisation à la programmation multimédia"); 246 expect(module.coefficient).toBe(0.2); 247 expect(module.average).toBeNull(); 248 expect(module.exams).toBeArrayOfSize(0); 249 } 250 251 { 252 const module = unit.modules[4]; 253 expect(module.code).toBe("R5.A.08"); 254 expect(module.name).toBe("Qualité de développement"); 255 expect(module.coefficient).toBe(0.5); 256 expect(module.average).toBeNull(); 257 expect(module.exams).toBeArrayOfSize(0); 258 } 259 260 { 261 const module = unit.modules[5]; 262 expect(module.code).toBe("R5.A.09"); 263 expect(module.name).toBe("Virtualisation avancée"); 264 expect(module.coefficient).toBe(0.2); 265 expect(module.average).toBeNull(); 266 expect(module.exams).toBeArrayOfSize(0); 267 } 268 269 { 270 const module = unit.modules[6]; 271 expect(module.code).toBe("R5.A.10"); 272 expect(module.name).toBe("Nouveaux paradigmes de base de données"); 273 expect(module.coefficient).toBe(0.4); 274 expect(module.average).toBeNull(); 275 expect(module.exams).toBeArrayOfSize(0); 276 } 277 278 { 279 const module = unit.modules[7]; 280 expect(module.code).toBe("R5.A.11"); 281 expect(module.name).toBe("Méthodes d'optimisation pour l'aide à la décision"); 282 expect(module.coefficient).toBe(0.7); 283 expect(module.average).toBeNull(); 284 expect(module.exams).toBeArrayOfSize(1); 285 286 const exam = module.exams[0]; 287 expect(exam.date).toBeNull(); 288 expect(exam.average).toBeNull(); 289 expect(exam.globalAverage).toBeNull(); 290 expect(exam.coefficient).toBe(1.0); 291 expect(exam.name).toBe("Moyenne"); 292 } 293 294 { 295 const module = unit.modules[8]; 296 expect(module.code).toBe("R5.A.12"); 297 expect(module.name).toBe("Modélisations mathématiques"); 298 expect(module.coefficient).toBe(1.2); 299 expect(module.average).toBeNull(); 300 expect(module.exams).toBeArrayOfSize(1); 301 302 const exam = module.exams[0]; 303 expect(exam.date).toBeNull(); 304 expect(exam.average).toBeNull(); 305 expect(exam.globalAverage).toBeNull(); 306 expect(exam.coefficient).toBe(1.0); 307 expect(exam.name).toBe("Moyenne"); 308 } 309 310 { 311 const module = unit.modules[9]; 312 expect(module.code).toBe("R5.A.14"); 313 expect(module.name).toBe("Anglais"); 314 expect(module.coefficient).toBe(0.4); 315 expect(module.average).toBeNull(); 316 expect(module.exams).toBeArrayOfSize(0); 317 } 318 319 { 320 const module = unit.modules[10]; 321 expect(module.code).toBe("S5.A.01"); 322 expect(module.name).toBe("Développement avancé"); 323 expect(module.coefficient).toBe(5.0); 324 expect(module.average).toBeNull(); 325 expect(module.exams).toBeArrayOfSize(0); 326 } 327 }); 328 329 it("should parse the 6th semester metadata", () => { 330 const semester = report.semesters[1]; 331 expect(semester.name).toBe("Semestre 6"); 332 expect(semester.units).toBeArrayOfSize(3); 333 }); 334 });