@@ -2,18 +2,333 @@ import { describe, expect, it } from "bun:test";
22import { Signatures } from "src/iut/signatures" ;
33import 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} ) ;
0 commit comments