@tricoteuses/senat 3.1.21 → 3.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/LICENSE.md +32 -32
  2. package/README.md +326 -326
  3. package/lib/add-js-extensions-v2.js +23 -0
  4. package/lib/add-js-extensions.js +17 -0
  5. package/lib/aggregates.d.ts +52 -0
  6. package/lib/aggregates.js +930 -0
  7. package/lib/aggregates.mjs +713 -0
  8. package/lib/aggregates.ts +833 -0
  9. package/lib/config.d.ts +10 -0
  10. package/lib/config.js +16 -0
  11. package/lib/config.mjs +16 -0
  12. package/lib/config.ts +26 -0
  13. package/lib/databases.d.ts +2 -0
  14. package/lib/databases.js +26 -0
  15. package/lib/databases.mjs +57 -0
  16. package/lib/databases.ts +71 -0
  17. package/lib/datasets.d.ts +34 -0
  18. package/lib/datasets.js +233 -0
  19. package/lib/datasets.mjs +78 -0
  20. package/lib/datasets.ts +118 -0
  21. package/lib/fields.d.ts +10 -0
  22. package/lib/fields.js +68 -0
  23. package/lib/fields.mjs +22 -0
  24. package/lib/fields.ts +29 -0
  25. package/lib/git.d.ts +26 -0
  26. package/lib/git.js +167 -0
  27. package/lib/index.d.ts +13 -0
  28. package/lib/index.js +1 -0
  29. package/lib/index.mjs +7 -0
  30. package/lib/index.ts +64 -0
  31. package/lib/inserters.d.ts +98 -0
  32. package/lib/inserters.js +500 -0
  33. package/lib/inserters.mjs +360 -0
  34. package/lib/inserters.ts +521 -0
  35. package/lib/legislatures.json +38 -0
  36. package/lib/loaders.d.ts +58 -0
  37. package/lib/loaders.js +286 -0
  38. package/lib/loaders.mjs +158 -0
  39. package/lib/loaders.ts +271 -0
  40. package/lib/model/agenda.d.ts +6 -0
  41. package/lib/model/agenda.js +148 -0
  42. package/lib/model/ameli.d.ts +51 -0
  43. package/lib/model/ameli.js +149 -0
  44. package/lib/model/ameli.mjs +84 -0
  45. package/lib/model/ameli.ts +100 -0
  46. package/lib/model/commission.d.ts +18 -0
  47. package/lib/model/commission.js +269 -0
  48. package/lib/model/debats.d.ts +67 -0
  49. package/lib/model/debats.js +95 -0
  50. package/lib/model/debats.mjs +43 -0
  51. package/lib/model/debats.ts +68 -0
  52. package/lib/model/documents.d.ts +12 -0
  53. package/lib/model/documents.js +151 -0
  54. package/lib/model/dosleg.d.ts +7 -0
  55. package/lib/model/dosleg.js +326 -0
  56. package/lib/model/dosleg.mjs +196 -0
  57. package/lib/model/dosleg.ts +240 -0
  58. package/lib/model/index.d.ts +7 -0
  59. package/lib/model/index.js +7 -0
  60. package/lib/model/index.mjs +5 -0
  61. package/lib/model/index.ts +15 -0
  62. package/lib/model/questions.d.ts +45 -0
  63. package/lib/model/questions.js +89 -0
  64. package/lib/model/questions.mjs +71 -0
  65. package/lib/model/questions.ts +93 -0
  66. package/lib/model/scrutins.d.ts +13 -0
  67. package/lib/model/scrutins.js +114 -0
  68. package/lib/model/seance.d.ts +3 -0
  69. package/lib/model/seance.js +267 -0
  70. package/lib/model/sens.d.ts +146 -0
  71. package/lib/model/sens.js +454 -0
  72. package/lib/model/sens.mjs +415 -0
  73. package/lib/model/sens.ts +516 -0
  74. package/lib/model/texte.d.ts +7 -0
  75. package/lib/model/texte.js +256 -0
  76. package/lib/model/texte.mjs +208 -0
  77. package/lib/model/texte.ts +229 -0
  78. package/lib/model/util.d.ts +9 -0
  79. package/lib/model/util.js +38 -0
  80. package/lib/model/util.mjs +19 -0
  81. package/lib/model/util.ts +32 -0
  82. package/lib/parsers/texte.d.ts +7 -0
  83. package/lib/parsers/texte.js +228 -0
  84. package/lib/raw_types/ameli.d.ts +914 -0
  85. package/lib/raw_types/ameli.js +5 -0
  86. package/lib/raw_types/ameli.mjs +163 -0
  87. package/lib/raw_types/debats.d.ts +207 -0
  88. package/lib/raw_types/debats.js +5 -0
  89. package/lib/raw_types/debats.mjs +58 -0
  90. package/lib/raw_types/dosleg.d.ts +1619 -0
  91. package/lib/raw_types/dosleg.js +5 -0
  92. package/lib/raw_types/dosleg.mjs +438 -0
  93. package/lib/raw_types/questions.d.ts +419 -0
  94. package/lib/raw_types/questions.js +5 -0
  95. package/lib/raw_types/questions.mjs +11 -0
  96. package/lib/raw_types/senat.d.ts +11368 -0
  97. package/lib/raw_types/senat.js +5 -0
  98. package/lib/raw_types/sens.d.ts +8248 -0
  99. package/lib/raw_types/sens.js +5 -0
  100. package/lib/raw_types/sens.mjs +508 -0
  101. package/lib/raw_types_kysely/ameli.d.ts +915 -0
  102. package/lib/raw_types_kysely/ameli.js +7 -0
  103. package/lib/raw_types_kysely/ameli.mjs +5 -0
  104. package/lib/raw_types_kysely/ameli.ts +951 -0
  105. package/lib/raw_types_kysely/debats.d.ts +207 -0
  106. package/lib/raw_types_kysely/debats.js +7 -0
  107. package/lib/raw_types_kysely/debats.mjs +5 -0
  108. package/lib/raw_types_kysely/debats.ts +222 -0
  109. package/lib/raw_types_kysely/dosleg.d.ts +3532 -0
  110. package/lib/raw_types_kysely/dosleg.js +7 -0
  111. package/lib/raw_types_kysely/dosleg.mjs +5 -0
  112. package/lib/raw_types_kysely/dosleg.ts +3621 -0
  113. package/lib/raw_types_kysely/questions.d.ts +414 -0
  114. package/lib/raw_types_kysely/questions.js +7 -0
  115. package/lib/raw_types_kysely/questions.mjs +5 -0
  116. package/lib/raw_types_kysely/questions.ts +426 -0
  117. package/lib/raw_types_kysely/sens.d.ts +4394 -0
  118. package/lib/raw_types_kysely/sens.js +7 -0
  119. package/lib/raw_types_kysely/sens.mjs +5 -0
  120. package/lib/raw_types_kysely/sens.ts +4499 -0
  121. package/lib/raw_types_schemats/ameli.d.ts +539 -0
  122. package/lib/raw_types_schemats/ameli.js +2 -0
  123. package/lib/raw_types_schemats/ameli.mjs +2 -0
  124. package/lib/raw_types_schemats/ameli.ts +601 -0
  125. package/lib/raw_types_schemats/debats.d.ts +127 -0
  126. package/lib/raw_types_schemats/debats.js +2 -0
  127. package/lib/raw_types_schemats/debats.mjs +2 -0
  128. package/lib/raw_types_schemats/debats.ts +145 -0
  129. package/lib/raw_types_schemats/dosleg.d.ts +977 -0
  130. package/lib/raw_types_schemats/dosleg.js +2 -0
  131. package/lib/raw_types_schemats/dosleg.mjs +2 -0
  132. package/lib/raw_types_schemats/dosleg.ts +2193 -0
  133. package/lib/raw_types_schemats/questions.d.ts +235 -0
  134. package/lib/raw_types_schemats/questions.js +2 -0
  135. package/lib/raw_types_schemats/questions.mjs +2 -0
  136. package/lib/raw_types_schemats/questions.ts +249 -0
  137. package/lib/raw_types_schemats/sens.d.ts +6915 -0
  138. package/lib/raw_types_schemats/sens.js +2 -0
  139. package/lib/raw_types_schemats/sens.mjs +2 -0
  140. package/lib/raw_types_schemats/sens.ts +2907 -0
  141. package/lib/scripts/convert_data.js +354 -0
  142. package/lib/scripts/convert_data.mjs +181 -0
  143. package/lib/scripts/convert_data.ts +243 -0
  144. package/lib/scripts/data-download.d.ts +1 -0
  145. package/lib/scripts/data-download.js +12 -0
  146. package/lib/scripts/datautil.d.ts +8 -0
  147. package/lib/scripts/datautil.js +34 -0
  148. package/lib/scripts/datautil.mjs +16 -0
  149. package/lib/scripts/datautil.ts +19 -0
  150. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  151. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  152. package/lib/scripts/parse_textes.d.ts +1 -0
  153. package/lib/scripts/parse_textes.js +44 -0
  154. package/lib/scripts/parse_textes.mjs +46 -0
  155. package/lib/scripts/parse_textes.ts +65 -0
  156. package/lib/scripts/retrieve_agenda.d.ts +1 -0
  157. package/lib/scripts/retrieve_agenda.js +132 -0
  158. package/lib/scripts/retrieve_cr_commission.d.ts +1 -0
  159. package/lib/scripts/retrieve_cr_commission.js +364 -0
  160. package/lib/scripts/retrieve_cr_seance.d.ts +6 -0
  161. package/lib/scripts/retrieve_cr_seance.js +347 -0
  162. package/lib/scripts/retrieve_documents.d.ts +3 -0
  163. package/lib/scripts/retrieve_documents.js +219 -0
  164. package/lib/scripts/retrieve_documents.mjs +249 -0
  165. package/lib/scripts/retrieve_documents.ts +298 -0
  166. package/lib/scripts/retrieve_open_data.d.ts +1 -0
  167. package/lib/scripts/retrieve_open_data.js +315 -0
  168. package/lib/scripts/retrieve_open_data.mjs +217 -0
  169. package/lib/scripts/retrieve_open_data.ts +268 -0
  170. package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
  171. package/lib/scripts/retrieve_senateurs_photos.js +147 -0
  172. package/lib/scripts/retrieve_senateurs_photos.mjs +147 -0
  173. package/lib/scripts/retrieve_senateurs_photos.ts +177 -0
  174. package/lib/scripts/retrieve_videos.d.ts +1 -0
  175. package/lib/scripts/retrieve_videos.js +461 -0
  176. package/lib/scripts/shared/cli_helpers.d.ts +95 -0
  177. package/lib/scripts/shared/cli_helpers.js +91 -0
  178. package/lib/scripts/shared/cli_helpers.ts +36 -0
  179. package/lib/scripts/shared/util.d.ts +4 -0
  180. package/lib/scripts/shared/util.js +35 -0
  181. package/lib/scripts/shared/util.ts +33 -0
  182. package/lib/scripts/test_iter_load.d.ts +1 -0
  183. package/lib/scripts/test_iter_load.js +12 -0
  184. package/lib/src/ameli.d.ts +66 -0
  185. package/lib/src/ameli.js +1 -0
  186. package/lib/src/config.d.ts +43 -0
  187. package/lib/src/config.js +37 -0
  188. package/lib/src/conversion_textes.d.ts +11 -0
  189. package/lib/src/conversion_textes.js +320 -0
  190. package/lib/src/databases.d.ts +3 -0
  191. package/lib/src/databases.js +26 -0
  192. package/lib/src/databases_postgres.d.ts +4 -0
  193. package/lib/src/databases_postgres.js +23 -0
  194. package/lib/src/datasets.d.ts +38 -0
  195. package/lib/src/datasets.js +247 -0
  196. package/lib/src/db_types/ameli.d.ts +1762 -0
  197. package/lib/src/db_types/ameli.js +1074 -0
  198. package/lib/src/db_types/debats.d.ts +380 -0
  199. package/lib/src/db_types/debats.js +266 -0
  200. package/lib/src/db_types/dosleg.d.ts +2954 -0
  201. package/lib/src/db_types/dosleg.js +2005 -0
  202. package/lib/src/db_types/questions.d.ts +699 -0
  203. package/lib/src/db_types/questions.js +493 -0
  204. package/lib/src/db_types/sens.d.ts +7843 -0
  205. package/lib/src/db_types/sens.js +4691 -0
  206. package/lib/src/debats.d.ts +38 -0
  207. package/lib/src/debats.js +1 -0
  208. package/lib/src/dosleg.d.ts +142 -0
  209. package/lib/src/dosleg.js +193 -0
  210. package/lib/src/git.d.ts +27 -0
  211. package/lib/src/git.js +251 -0
  212. package/lib/src/loaders.d.ts +52 -0
  213. package/lib/src/loaders.js +260 -0
  214. package/lib/src/model/agenda.d.ts +6 -0
  215. package/lib/src/model/agenda.js +148 -0
  216. package/lib/src/model/ameli.d.ts +67 -0
  217. package/lib/src/model/ameli.js +150 -0
  218. package/lib/src/model/ameli_postgres.d.ts +67 -0
  219. package/lib/src/model/ameli_postgres.js +150 -0
  220. package/lib/src/model/commission.d.ts +19 -0
  221. package/lib/src/model/commission.js +269 -0
  222. package/lib/src/model/debats.d.ts +39 -0
  223. package/lib/src/model/debats.js +112 -0
  224. package/lib/src/model/documents.d.ts +32 -0
  225. package/lib/src/model/documents.js +182 -0
  226. package/lib/src/model/dosleg.d.ts +144 -0
  227. package/lib/src/model/dosleg.js +468 -0
  228. package/lib/src/model/index.d.ts +7 -0
  229. package/lib/src/model/index.js +7 -0
  230. package/lib/src/model/questions.d.ts +54 -0
  231. package/lib/src/model/questions.js +91 -0
  232. package/lib/src/model/scrutins.d.ts +48 -0
  233. package/lib/src/model/scrutins.js +121 -0
  234. package/lib/src/model/seance.d.ts +3 -0
  235. package/lib/src/model/seance.js +267 -0
  236. package/lib/src/model/sens.d.ts +112 -0
  237. package/lib/src/model/sens.js +385 -0
  238. package/lib/src/model/util.d.ts +1 -0
  239. package/lib/src/model/util.js +15 -0
  240. package/lib/src/other_types/questions.d.ts +2 -0
  241. package/lib/src/other_types/questions.js +1 -0
  242. package/lib/src/questions.d.ts +53 -0
  243. package/lib/src/questions.js +1 -0
  244. package/lib/src/raw_types/ameli.d.ts +1762 -0
  245. package/lib/src/raw_types/ameli.js +1074 -0
  246. package/lib/src/raw_types/debats.d.ts +380 -0
  247. package/lib/src/raw_types/debats.js +266 -0
  248. package/lib/src/raw_types/dosleg.d.ts +2954 -0
  249. package/lib/src/raw_types/dosleg.js +2005 -0
  250. package/lib/src/raw_types/questions.d.ts +699 -0
  251. package/lib/src/raw_types/questions.js +493 -0
  252. package/lib/src/raw_types/senat.d.ts +11372 -0
  253. package/lib/src/raw_types/senat.js +5 -0
  254. package/lib/src/raw_types/sens.d.ts +7843 -0
  255. package/lib/src/raw_types/sens.js +4691 -0
  256. package/lib/src/raw_types_schemats/ameli.d.ts +541 -0
  257. package/lib/src/raw_types_schemats/ameli.js +2 -0
  258. package/lib/src/raw_types_schemats/debats.d.ts +127 -0
  259. package/lib/src/raw_types_schemats/debats.js +2 -0
  260. package/lib/src/raw_types_schemats/dosleg.d.ts +977 -0
  261. package/lib/src/raw_types_schemats/dosleg.js +2 -0
  262. package/lib/src/raw_types_schemats/questions.d.ts +237 -0
  263. package/lib/src/raw_types_schemats/questions.js +2 -0
  264. package/lib/src/raw_types_schemats/sens.d.ts +2709 -0
  265. package/lib/src/raw_types_schemats/sens.js +2 -0
  266. package/lib/src/rich_types/agenda.d.ts +45 -0
  267. package/lib/src/rich_types/agenda.js +1 -0
  268. package/lib/src/rich_types/compte_rendu.d.ts +83 -0
  269. package/lib/src/rich_types/compte_rendu.js +1 -0
  270. package/lib/src/rich_types/dosleg.js +0 -7
  271. package/lib/src/rich_types/sessions.d.ts +6 -0
  272. package/lib/src/rich_types/sessions.js +19 -0
  273. package/lib/src/rich_types/texte.d.ts +72 -0
  274. package/lib/src/rich_types/texte.js +15 -0
  275. package/lib/src/scripts/convert_data.js +4 -5
  276. package/lib/src/scripts/retrieve_cr_commission.js +1 -1
  277. package/lib/src/scripts/retrieve_open_data.js +39 -0
  278. package/lib/src/scripts/retrieve_videos.js +1 -2
  279. package/lib/src/scripts/shared/incremental_import_sql.js +859 -859
  280. package/lib/src/scripts/shared/schema_version.js +84 -84
  281. package/lib/src/scripts/shared/staging_metadata_sql.js +214 -214
  282. package/lib/src/scripts/test_iter_load.d.ts +1 -0
  283. package/lib/src/scripts/test_iter_load.js +12 -0
  284. package/lib/src/scripts/validate_prefixed_tables.js +12 -12
  285. package/lib/src/sens.d.ts +104 -0
  286. package/lib/src/sens.js +1 -0
  287. package/lib/src/server/ameli.js +11 -13
  288. package/lib/src/server/conversion_textes.js +107 -107
  289. package/lib/src/server/debats.js +10 -15
  290. package/lib/src/server/documents.js +22 -25
  291. package/lib/src/server/dosleg.js +33 -44
  292. package/lib/src/server/questions.js +10 -11
  293. package/lib/src/server/scrutins.js +3 -7
  294. package/lib/src/server/sens.js +19 -36
  295. package/lib/src/types/agenda.d.ts +45 -0
  296. package/lib/src/types/agenda.js +1 -0
  297. package/lib/src/types/ameli.d.ts +1762 -0
  298. package/lib/src/types/ameli.js +1074 -0
  299. package/lib/src/types/compte_rendu.d.ts +83 -0
  300. package/lib/src/types/compte_rendu.js +1 -0
  301. package/lib/src/types/debats.d.ts +380 -0
  302. package/lib/src/types/debats.js +266 -0
  303. package/lib/src/types/dosleg.d.ts +2954 -0
  304. package/lib/src/types/dosleg.js +2005 -0
  305. package/lib/src/types/questions.d.ts +699 -0
  306. package/lib/src/types/questions.js +493 -0
  307. package/lib/src/types/sens.d.ts +7843 -0
  308. package/lib/src/types/sens.js +4691 -0
  309. package/lib/src/types/sessions.d.ts +6 -0
  310. package/lib/src/types/sessions.js +19 -0
  311. package/lib/src/types/texte.d.ts +72 -0
  312. package/lib/src/types/texte.js +15 -0
  313. package/lib/src/validators/config.d.ts +9 -0
  314. package/lib/src/validators/config.js +10 -0
  315. package/lib/src/videos/match.js +4 -4
  316. package/lib/strings.d.ts +1 -0
  317. package/lib/strings.js +18 -0
  318. package/lib/strings.mjs +18 -0
  319. package/lib/strings.ts +26 -0
  320. package/lib/tsconfig.tsbuildinfo +1 -0
  321. package/lib/types/agenda.d.ts +44 -0
  322. package/lib/types/agenda.js +1 -0
  323. package/lib/types/ameli.d.ts +5 -0
  324. package/lib/types/ameli.js +1 -0
  325. package/lib/types/ameli.mjs +13 -0
  326. package/lib/types/ameli.ts +21 -0
  327. package/lib/types/compte_rendu.d.ts +83 -0
  328. package/lib/types/compte_rendu.js +1 -0
  329. package/lib/types/debats.d.ts +2 -0
  330. package/lib/types/debats.js +1 -0
  331. package/lib/types/debats.mjs +2 -0
  332. package/lib/types/debats.ts +6 -0
  333. package/lib/types/dosleg.d.ts +70 -0
  334. package/lib/types/dosleg.js +1 -0
  335. package/lib/types/dosleg.mjs +151 -0
  336. package/lib/types/dosleg.ts +284 -0
  337. package/lib/types/questions.d.ts +2 -0
  338. package/lib/types/questions.js +1 -0
  339. package/lib/types/questions.mjs +1 -0
  340. package/lib/types/questions.ts +3 -0
  341. package/lib/types/sens.d.ts +10 -0
  342. package/lib/types/sens.js +1 -0
  343. package/lib/types/sens.mjs +1 -0
  344. package/lib/types/sens.ts +12 -0
  345. package/lib/types/sessions.d.ts +5 -0
  346. package/lib/types/sessions.js +84 -0
  347. package/lib/types/sessions.mjs +43 -0
  348. package/lib/types/sessions.ts +42 -0
  349. package/lib/types/texte.d.ts +74 -0
  350. package/lib/types/texte.js +16 -0
  351. package/lib/types/texte.mjs +16 -0
  352. package/lib/types/texte.ts +76 -0
  353. package/lib/typings/windows-1252.d.js +2 -0
  354. package/lib/typings/windows-1252.d.mjs +2 -0
  355. package/lib/typings/windows-1252.d.ts +11 -0
  356. package/lib/utils/cr_spliting.d.ts +28 -0
  357. package/lib/utils/cr_spliting.js +265 -0
  358. package/lib/utils/date.d.ts +10 -0
  359. package/lib/utils/date.js +100 -0
  360. package/lib/utils/nvs-timecode.d.ts +7 -0
  361. package/lib/utils/nvs-timecode.js +79 -0
  362. package/lib/utils/reunion_grouping.d.ts +9 -0
  363. package/lib/utils/reunion_grouping.js +361 -0
  364. package/lib/utils/reunion_odj_building.d.ts +5 -0
  365. package/lib/utils/reunion_odj_building.js +154 -0
  366. package/lib/utils/reunion_parsing.d.ts +23 -0
  367. package/lib/utils/reunion_parsing.js +209 -0
  368. package/lib/utils/scoring.d.ts +14 -0
  369. package/lib/utils/scoring.js +147 -0
  370. package/lib/utils/string_cleaning.d.ts +7 -0
  371. package/lib/utils/string_cleaning.js +57 -0
  372. package/lib/validators/config.d.ts +9 -0
  373. package/lib/validators/config.js +10 -0
  374. package/lib/validators/config.mjs +54 -0
  375. package/lib/validators/config.ts +79 -0
  376. package/lib/validators/senat.d.ts +0 -0
  377. package/lib/validators/senat.js +28 -0
  378. package/lib/validators/senat.mjs +24 -0
  379. package/lib/validators/senat.ts +26 -0
  380. package/package.json +119 -117
  381. package/lib/src/other_types/collaborateurs.d.ts +0 -5
  382. package/lib/src/parsers/collaborateurs.d.ts +0 -44
  383. package/lib/src/parsers/collaborateurs.js +0 -157
  384. package/lib/src/scripts/retrieve_collaborateurs.js +0 -166
  385. package/lib/tests/collaborateurs.test.js +0 -115
  386. /package/lib/{src/other_types/collaborateurs.js → add-js-extensions-v2.d.ts} +0 -0
  387. /package/lib/{src/scripts/retrieve_collaborateurs.d.ts → add-js-extensions.d.ts} +0 -0
  388. /package/lib/{tests/collaborateurs.test.d.ts → scripts/convert_data.d.ts} +0 -0
@@ -1,115 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { construireLignesCollaborateurs, extraireDateEdition, normaliserPourComparaison, parseCellulePersonne, } from "../src/parsers/collaborateurs.js";
3
- // Bandes x mesurées sur le vrai PDF : employeur ≈ 147, collaborateur ≈ 285.
4
- const X_EMPLOYEUR = 147;
5
- const X_COLLABORATEUR = 285;
6
- /** Construit une page synthétique : pour chaque ligne, [employeur?, collaborateur]. */
7
- function pageItems(lignes, page = 1) {
8
- const items = [];
9
- let y = 700;
10
- for (const [employeur, collaborateur] of lignes) {
11
- if (employeur)
12
- items.push({ str: employeur, x: X_EMPLOYEUR, y, page });
13
- items.push({ str: collaborateur, x: X_COLLABORATEUR, y, page });
14
- y -= 15;
15
- }
16
- return items;
17
- }
18
- describe("parseCellulePersonne", () => {
19
- it("sépare civilité, nom et prénom", () => {
20
- expect(parseCellulePersonne("M. CHAREF Dahmane")).toEqual({ civilite: "M.", nom: "CHAREF", prenom: "Dahmane" });
21
- expect(parseCellulePersonne("Mme OLIVIER Béatrice")).toEqual({
22
- civilite: "Mme",
23
- nom: "OLIVIER",
24
- prenom: "Béatrice",
25
- });
26
- });
27
- it("gère les noms composés (plusieurs jetons en majuscules)", () => {
28
- expect(parseCellulePersonne("Mme MAZENOT CHAPPUY Sophie")).toEqual({
29
- civilite: "Mme",
30
- nom: "MAZENOT CHAPPUY",
31
- prenom: "Sophie",
32
- });
33
- expect(parseCellulePersonne("M. DI FOLCO Camille")).toEqual({ civilite: "M.", nom: "DI FOLCO", prenom: "Camille" });
34
- });
35
- it("gère les particules nobiliaires en tête de nom (de, de la)", () => {
36
- expect(parseCellulePersonne("Mme de CIDRAC Marta")).toEqual({ civilite: "Mme", nom: "de CIDRAC", prenom: "Marta" });
37
- expect(parseCellulePersonne("Mme de LA GONTRIE Marie-Pierre")).toEqual({
38
- civilite: "Mme",
39
- nom: "de LA GONTRIE",
40
- prenom: "Marie-Pierre",
41
- });
42
- expect(parseCellulePersonne("M. de LEGGE Dominique")).toEqual({
43
- civilite: "M.",
44
- nom: "de LEGGE",
45
- prenom: "Dominique",
46
- });
47
- expect(parseCellulePersonne("Mme APOURCEAU-POLY Cathy")).toEqual({
48
- civilite: "Mme",
49
- nom: "APOURCEAU-POLY",
50
- prenom: "Cathy",
51
- });
52
- });
53
- it("conserve un prénom tronqué tel quel", () => {
54
- expect(parseCellulePersonne("Mme AESCHLIMANN Marie-Do")).toEqual({
55
- civilite: "Mme",
56
- nom: "AESCHLIMANN",
57
- prenom: "Marie-Do",
58
- });
59
- });
60
- it("ignore le marqueur (*) de congé non rémunéré", () => {
61
- expect(parseCellulePersonne("M. DURAND (*) Paul")).toEqual({ civilite: "M.", nom: "DURAND", prenom: "Paul" });
62
- });
63
- it("renvoie null pour une cellule vide ou une civilité seule", () => {
64
- expect(parseCellulePersonne("")).toBeNull();
65
- expect(parseCellulePersonne("M.")).toBeNull();
66
- });
67
- });
68
- describe("construireLignesCollaborateurs", () => {
69
- it("rattache plusieurs collaborateurs au sénateur courant (report quand l'employeur est vide)", () => {
70
- const items = pageItems([
71
- ["Mme AESCHLIMANN Marie-Do", "M. CHAREF Dahmane"],
72
- [null, "M. POURQUERY Alexandre"],
73
- [null, "M. SEBRIER Valentin"],
74
- ["M. ALLIZARD Pascal", "Mme OLIVIER Béatrice"],
75
- ]);
76
- const lignes = construireLignesCollaborateurs(items);
77
- expect(lignes).toHaveLength(4);
78
- expect(lignes.slice(0, 3).every((l) => l.senateur.nom === "AESCHLIMANN")).toBe(true);
79
- expect(lignes[3].senateur.nom === "ALLIZARD" && lignes[3].collaborateur.nom === "OLIVIER").toBe(true);
80
- });
81
- it("ignore en-têtes, pieds de page et numéros, et gère plusieurs pages", () => {
82
- const items = [
83
- { str: "Liste des collaborateurs par Sénateur", x: 208, y: 760, page: 1 },
84
- { str: "Employeur", x: 193, y: 740, page: 1 },
85
- { str: "Nom Collaborateur", x: 342, y: 740, page: 1 },
86
- ...pageItems([["M. BACCI Jean", "Mme BOILLOT Julie"]], 1),
87
- { str: "Edition du 24/06/2026", x: 40, y: 30, page: 1 },
88
- { str: "- 1 -", x: 296, y: 30, page: 1 },
89
- ...pageItems([["Mme BÉLIM Audrey", "M. BOUCHER Thibault"]], 2),
90
- ];
91
- const lignes = construireLignesCollaborateurs(items);
92
- expect(lignes).toHaveLength(2);
93
- expect(lignes[0].senateur.nom).toBe("BACCI");
94
- expect(lignes[1].senateur.nom).toBe("BÉLIM");
95
- });
96
- it("n'émet rien tant qu'aucun employeur n'a été rencontré", () => {
97
- const orphelin = [{ str: "M. ORPHELIN Jean", x: X_COLLABORATEUR, y: 700, page: 1 }];
98
- expect(construireLignesCollaborateurs(orphelin)).toHaveLength(0);
99
- });
100
- });
101
- describe("extraireDateEdition", () => {
102
- it("extrait la date d'édition du pied de page", () => {
103
- const date = extraireDateEdition(["…", "Edition du 24/06/2026", "(*) Congé non rémunéré"]);
104
- expect(date?.toISOString().slice(0, 10)).toBe("2026-06-24");
105
- });
106
- it("renvoie null si absente", () => {
107
- expect(extraireDateEdition(["rien ici"])).toBeNull();
108
- });
109
- });
110
- describe("normaliserPourComparaison", () => {
111
- it("met en majuscules, retire les accents et compacte les espaces", () => {
112
- expect(normaliserPourComparaison(" Béatrice ")).toBe("BEATRICE");
113
- expect(normaliserPourComparaison("Bélim")).toBe("BELIM");
114
- });
115
- });