Skip to content

Commit bd5f2a8

Browse files
committed
chore(signatures): add proper tests
1 parent 6151a24 commit bd5f2a8

File tree

3 files changed

+666
-12
lines changed

3 files changed

+666
-12
lines changed

tests/signatures/empty.test.ts

Lines changed: 324 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,333 @@ import { describe, expect, it } from "bun:test";
22
import { Signatures } from "src/iut/signatures";
33
import html from "./empty.html" with { type: "text" };
44

5-
describe("iut/signatures", () => {
6-
it("should have correct host property", () => {
7-
expect(Signatures.HOST).toBe("https://signatures.unilim.fr");
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+
}
8204
});
9205

10-
it("should have correct oauth2 identifiers", () => {
11-
expect(Signatures.oauth2.identifier).toBe("signatures");
12-
expect(Signatures.oauth2.callback).toBe("https://signatures.unilim.fr/callback");
13-
expect(Signatures.oauth2.scopes).toEqual(["openid", "profile"]);
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+
}
14327
});
15328

16-
it("should parse correctly the report card", () => {
17-
const report = Signatures.parse(html as unknown as string);
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);
18333
});
19334
});

tests/signatures/index.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { describe, expect, it } from "bun:test";
2+
import { Signatures } from "src/iut/signatures";
3+
4+
describe("iut/signatures", () => {
5+
it("should have correct host property", () => {
6+
expect(Signatures.HOST).toBe("https://signatures.unilim.fr");
7+
});
8+
9+
it("should have correct oauth2 identifiers", () => {
10+
expect(Signatures.oauth2.identifier).toBe("signatures");
11+
expect(Signatures.oauth2.callback).toBe("https://signatures.unilim.fr/callback");
12+
expect(Signatures.oauth2.scopes).toEqual(["openid", "profile"]);
13+
});
14+
});

0 commit comments

Comments
 (0)