@natlibfi/marc-record-validators-melinda 3.2.0 → 3.3.14-alpha.3

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 (593) hide show
  1. package/.github/CODEOWNERS +2 -0
  2. package/.github/dependabot.yml +40 -0
  3. package/.github/workflows/melinda-node-tests.yml +61 -0
  4. package/LICENSE.txt +21 -661
  5. package/README.md +4 -5
  6. package/dist/access-rights.js +94 -0
  7. package/dist/access-rights.js.map +1 -0
  8. package/dist/access-rights.spec.js +150 -0
  9. package/dist/access-rights.spec.js.map +1 -0
  10. package/dist/double-commas.js +17 -27
  11. package/dist/double-commas.js.map +1 -1
  12. package/dist/double-commas.spec.js +72 -27
  13. package/dist/double-commas.spec.js.map +1 -1
  14. package/dist/duplicates-ind1.js +47 -27
  15. package/dist/duplicates-ind1.js.map +1 -1
  16. package/dist/duplicates-ind1.spec.js +44 -27
  17. package/dist/duplicates-ind1.spec.js.map +1 -1
  18. package/dist/empty-fields.js +79 -29
  19. package/dist/empty-fields.js.map +1 -1
  20. package/dist/empty-fields.spec.js +113 -27
  21. package/dist/empty-fields.spec.js.map +1 -1
  22. package/dist/ending-punctuation-conf.js +772 -129
  23. package/dist/ending-punctuation-conf.js.map +1 -1
  24. package/dist/ending-punctuation.js +291 -72
  25. package/dist/ending-punctuation.js.map +1 -1
  26. package/dist/ending-punctuation.spec.js +2638 -118
  27. package/dist/ending-punctuation.spec.js.map +1 -1
  28. package/dist/ending-whitespace.js +58 -0
  29. package/dist/ending-whitespace.js.map +1 -0
  30. package/dist/ending-whitespace.spec.js +42 -0
  31. package/dist/ending-whitespace.spec.js.map +1 -0
  32. package/dist/field-521-fix.js +96 -0
  33. package/dist/field-521-fix.js.map +1 -0
  34. package/dist/field-521-fix.spec.js +51 -0
  35. package/dist/field-521-fix.spec.js.map +1 -0
  36. package/dist/field-exclusion.js +214 -63
  37. package/dist/field-exclusion.js.map +1 -1
  38. package/dist/field-exclusion.spec.js +1057 -31
  39. package/dist/field-exclusion.spec.js.map +1 -1
  40. package/dist/field-structure.js +249 -78
  41. package/dist/field-structure.js.map +1 -1
  42. package/dist/field-structure.spec.js +534 -31
  43. package/dist/field-structure.spec.js.map +1 -1
  44. package/dist/fields-present.js +31 -27
  45. package/dist/fields-present.js.map +1 -1
  46. package/dist/fields-present.spec.js +120 -27
  47. package/dist/fields-present.spec.js.map +1 -1
  48. package/dist/fixed-fields.js +72 -27
  49. package/dist/fixed-fields.js.map +1 -1
  50. package/dist/fixed-fields.spec.js +139 -27
  51. package/dist/fixed-fields.spec.js.map +1 -1
  52. package/dist/identical-fields.js +42 -28
  53. package/dist/identical-fields.js.map +1 -1
  54. package/dist/identical-fields.spec.js +98 -27
  55. package/dist/identical-fields.spec.js.map +1 -1
  56. package/dist/index.js +202 -27
  57. package/dist/index.js.map +1 -1
  58. package/dist/indicator-fixes.js +191 -0
  59. package/dist/indicator-fixes.js.map +1 -0
  60. package/dist/indicator-fixes.spec.js +51 -0
  61. package/dist/indicator-fixes.spec.js.map +1 -0
  62. package/dist/isbn-issn.js +266 -27
  63. package/dist/isbn-issn.js.map +1 -1
  64. package/dist/isbn-issn.spec.js +594 -27
  65. package/dist/isbn-issn.spec.js.map +1 -1
  66. package/dist/item-language.js +171 -27
  67. package/dist/item-language.js.map +1 -1
  68. package/dist/item-language.spec.js +305 -27
  69. package/dist/item-language.spec.js.map +1 -1
  70. package/dist/mergeField500Lisapainokset.js +155 -0
  71. package/dist/mergeField500Lisapainokset.js.map +1 -0
  72. package/dist/mergeField500Lisapainokset.spec.js +51 -0
  73. package/dist/mergeField500Lisapainokset.spec.js.map +1 -0
  74. package/dist/mergeRelatorTermFields.js +140 -0
  75. package/dist/mergeRelatorTermFields.js.map +1 -0
  76. package/dist/mergeRelatorTermFields.spec.js +51 -0
  77. package/dist/mergeRelatorTermFields.spec.js.map +1 -0
  78. package/dist/multiple-subfield-0.js +120 -0
  79. package/dist/multiple-subfield-0.js.map +1 -0
  80. package/dist/multiple-subfield-0.spec.js +51 -0
  81. package/dist/multiple-subfield-0.spec.js.map +1 -0
  82. package/dist/non-breaking-space.js +61 -0
  83. package/dist/non-breaking-space.js.map +1 -0
  84. package/dist/non-breaking-space.spec.js +42 -0
  85. package/dist/non-breaking-space.spec.js.map +1 -0
  86. package/dist/normalize-identifiers.js +210 -0
  87. package/dist/normalize-identifiers.js.map +1 -0
  88. package/dist/normalize-identifiers.spec.js +51 -0
  89. package/dist/normalize-identifiers.spec.js.map +1 -0
  90. package/dist/normalize-utf8-diacritics.js +140 -0
  91. package/dist/normalize-utf8-diacritics.js.map +1 -0
  92. package/dist/normalize-utf8-diacritics.spec.js +51 -0
  93. package/dist/normalize-utf8-diacritics.spec.js.map +1 -0
  94. package/dist/punctuation/index.js +281 -0
  95. package/dist/punctuation/index.js.map +1 -0
  96. package/dist/punctuation/rules/aut.js +332 -0
  97. package/dist/punctuation/rules/aut.js.map +1 -0
  98. package/dist/punctuation/rules/bib.js +374 -0
  99. package/dist/punctuation/rules/bib.js.map +1 -0
  100. package/dist/punctuation/rules/index.js +21 -0
  101. package/dist/punctuation/rules/index.js.map +1 -0
  102. package/dist/punctuation.spec.js +51 -0
  103. package/dist/punctuation.spec.js.map +1 -0
  104. package/dist/punctuation2.js +726 -0
  105. package/dist/punctuation2.js.map +1 -0
  106. package/dist/punctuation2.spec.js +51 -0
  107. package/dist/punctuation2.spec.js.map +1 -0
  108. package/dist/reindexSubfield6OccurenceNumbers.js +199 -0
  109. package/dist/reindexSubfield6OccurenceNumbers.js.map +1 -0
  110. package/dist/reindexSubfield6OccurenceNumbers.spec.js +51 -0
  111. package/dist/reindexSubfield6OccurenceNumbers.spec.js.map +1 -0
  112. package/dist/removeDuplicateDataFields.js +405 -0
  113. package/dist/removeDuplicateDataFields.js.map +1 -0
  114. package/dist/removeDuplicateDataFields.spec.js +51 -0
  115. package/dist/removeDuplicateDataFields.spec.js.map +1 -0
  116. package/dist/removeInferiorDataFields.js +245 -0
  117. package/dist/removeInferiorDataFields.js.map +1 -0
  118. package/dist/removeInferiorDataFields.spec.js +51 -0
  119. package/dist/removeInferiorDataFields.spec.js.map +1 -0
  120. package/dist/resolvable-ext-references-melinda.js +112 -31
  121. package/dist/resolvable-ext-references-melinda.js.map +1 -1
  122. package/dist/resolvable-ext-references-melinda.spec.js +166 -27
  123. package/dist/resolvable-ext-references-melinda.spec.js.map +1 -1
  124. package/dist/resolveOrphanedSubfield6s.js +116 -0
  125. package/dist/resolveOrphanedSubfield6s.js.map +1 -0
  126. package/dist/resolveOrphanedSubfield6s.spec.js +51 -0
  127. package/dist/resolveOrphanedSubfield6s.spec.js.map +1 -0
  128. package/dist/sanitize-vocabulary-source-codes.js +93 -0
  129. package/dist/sanitize-vocabulary-source-codes.js.map +1 -0
  130. package/dist/sanitize-vocabulary-source-codes.spec.js +51 -0
  131. package/dist/sanitize-vocabulary-source-codes.spec.js.map +1 -0
  132. package/dist/sort-tags.js +53 -27
  133. package/dist/sort-tags.js.map +1 -1
  134. package/dist/sort-tags.spec.js +206 -27
  135. package/dist/sort-tags.spec.js.map +1 -1
  136. package/dist/sortRelatorTerms.js +135 -0
  137. package/dist/sortRelatorTerms.js.map +1 -0
  138. package/dist/sortRelatorTerms.spec.js +51 -0
  139. package/dist/sortRelatorTerms.spec.js.map +1 -0
  140. package/dist/sortSubfields.js +279 -0
  141. package/dist/sortSubfields.js.map +1 -0
  142. package/dist/sortSubfields.spec.js +51 -0
  143. package/dist/sortSubfields.spec.js.map +1 -0
  144. package/dist/stripPunctuation.js +49 -0
  145. package/dist/stripPunctuation.js.map +1 -0
  146. package/dist/stripPunctuation.spec.js +51 -0
  147. package/dist/stripPunctuation.spec.js.map +1 -0
  148. package/dist/subfield-exclusion.js +174 -57
  149. package/dist/subfield-exclusion.js.map +1 -1
  150. package/dist/subfield-exclusion.spec.js +521 -31
  151. package/dist/subfield-exclusion.spec.js.map +1 -1
  152. package/dist/subfield6Utils.js +457 -0
  153. package/dist/subfield6Utils.js.map +1 -0
  154. package/dist/subfield8Utils.js +99 -0
  155. package/dist/subfield8Utils.js.map +1 -0
  156. package/dist/typeOfDate-008.js +48 -0
  157. package/dist/typeOfDate-008.js.map +1 -0
  158. package/dist/typeOfDate-008.spec.js +47 -0
  159. package/dist/typeOfDate-008.spec.js.map +1 -0
  160. package/dist/unicode-decomposition.js +139 -30
  161. package/dist/unicode-decomposition.js.map +1 -1
  162. package/dist/unicode-decomposition.spec.js +90 -27
  163. package/dist/unicode-decomposition.spec.js.map +1 -1
  164. package/dist/update-field-540.js +119 -0
  165. package/dist/update-field-540.js.map +1 -0
  166. package/dist/update-field-540.spec.js +51 -0
  167. package/dist/update-field-540.spec.js.map +1 -0
  168. package/dist/urn.js +185 -0
  169. package/dist/urn.js.map +1 -0
  170. package/dist/urn.spec.js +238 -0
  171. package/dist/urn.spec.js.map +1 -0
  172. package/dist/utils.js +58 -0
  173. package/dist/utils.js.map +1 -0
  174. package/package.json +114 -124
  175. package/src/access-rights.js +84 -0
  176. package/src/access-rights.spec.js +126 -0
  177. package/src/double-commas.js +12 -49
  178. package/src/double-commas.spec.js +50 -82
  179. package/src/duplicates-ind1.js +34 -74
  180. package/src/duplicates-ind1.spec.js +39 -117
  181. package/src/empty-fields.js +62 -74
  182. package/src/empty-fields.spec.js +134 -207
  183. package/src/ending-punctuation-conf.js +679 -644
  184. package/src/ending-punctuation.js +260 -250
  185. package/src/ending-punctuation.spec.js +2545 -2322
  186. package/src/ending-whitespace.js +40 -0
  187. package/src/ending-whitespace.spec.js +44 -0
  188. package/src/field-521-fix.js +92 -0
  189. package/src/field-521-fix.spec.js +52 -0
  190. package/src/field-exclusion.js +197 -215
  191. package/src/field-exclusion.spec.js +883 -481
  192. package/src/field-structure.js +213 -271
  193. package/src/field-structure.spec.js +597 -474
  194. package/src/fields-present.js +19 -49
  195. package/src/fields-present.spec.js +90 -91
  196. package/src/fixed-fields.js +61 -94
  197. package/src/fixed-fields.spec.js +81 -125
  198. package/src/identical-fields.js +29 -48
  199. package/src/identical-fields.spec.js +114 -146
  200. package/src/index.js +41 -46
  201. package/src/indicator-fixes.js +211 -0
  202. package/src/indicator-fixes.spec.js +52 -0
  203. package/src/isbn-issn.js +254 -106
  204. package/src/isbn-issn.spec.js +399 -172
  205. package/src/item-language.js +158 -195
  206. package/src/item-language.spec.js +314 -306
  207. package/src/mergeField500Lisapainokset.js +153 -0
  208. package/src/mergeField500Lisapainokset.spec.js +52 -0
  209. package/src/mergeRelatorTermFields.js +143 -0
  210. package/src/mergeRelatorTermFields.spec.js +52 -0
  211. package/src/multiple-subfield-0.js +129 -0
  212. package/src/multiple-subfield-0.spec.js +52 -0
  213. package/src/non-breaking-space.js +49 -0
  214. package/src/non-breaking-space.spec.js +44 -0
  215. package/src/normalize-identifiers.js +197 -0
  216. package/src/normalize-identifiers.spec.js +52 -0
  217. package/src/normalize-utf8-diacritics.js +141 -0
  218. package/src/normalize-utf8-diacritics.spec.js +52 -0
  219. package/src/punctuation/index.js +292 -0
  220. package/src/punctuation/rules/aut.js +372 -0
  221. package/src/punctuation/rules/bib.js +420 -0
  222. package/src/punctuation/rules/index.js +7 -0
  223. package/src/punctuation.spec.js +52 -0
  224. package/src/punctuation2.js +441 -0
  225. package/src/punctuation2.spec.js +52 -0
  226. package/src/reindexSubfield6OccurenceNumbers.js +210 -0
  227. package/src/reindexSubfield6OccurenceNumbers.spec.js +52 -0
  228. package/src/removeDuplicateDataFields.js +447 -0
  229. package/src/removeDuplicateDataFields.spec.js +52 -0
  230. package/src/removeInferiorDataFields.js +259 -0
  231. package/src/removeInferiorDataFields.spec.js +52 -0
  232. package/src/resolvable-ext-references-melinda.js +89 -122
  233. package/src/resolvable-ext-references-melinda.spec.js +168 -198
  234. package/src/resolveOrphanedSubfield6s.js +115 -0
  235. package/src/resolveOrphanedSubfield6s.spec.js +52 -0
  236. package/src/sanitize-vocabulary-source-codes.js +99 -0
  237. package/src/sanitize-vocabulary-source-codes.spec.js +52 -0
  238. package/src/sort-tags.js +34 -60
  239. package/src/sort-tags.spec.js +256 -290
  240. package/src/sortRelatorTerms.js +142 -0
  241. package/src/sortRelatorTerms.spec.js +52 -0
  242. package/src/sortSubfields.js +176 -0
  243. package/src/sortSubfields.spec.js +52 -0
  244. package/src/stripPunctuation.js +42 -0
  245. package/src/stripPunctuation.spec.js +52 -0
  246. package/src/subfield-exclusion.js +157 -180
  247. package/src/subfield-exclusion.spec.js +507 -453
  248. package/src/subfield6Utils.js +485 -0
  249. package/src/subfield8Utils.js +102 -0
  250. package/src/typeOfDate-008.js +40 -0
  251. package/src/typeOfDate-008.spec.js +47 -0
  252. package/src/unicode-decomposition.js +130 -145
  253. package/src/unicode-decomposition.spec.js +89 -115
  254. package/src/update-field-540.js +99 -0
  255. package/src/update-field-540.spec.js +52 -0
  256. package/src/urn.js +164 -0
  257. package/src/urn.spec.js +231 -0
  258. package/src/utils.js +52 -0
  259. package/test-fixtures/duplicates-ind1/01/expectedResult.json +4 -0
  260. package/test-fixtures/duplicates-ind1/01/metadata.json +4 -0
  261. package/test-fixtures/duplicates-ind1/01/record.json +16 -0
  262. package/test-fixtures/duplicates-ind1/02/expectedResult.json +6 -0
  263. package/test-fixtures/duplicates-ind1/02/metadata.json +4 -0
  264. package/test-fixtures/duplicates-ind1/02/record.json +16 -0
  265. package/test-fixtures/duplicates-ind1/03/expectedResult.json +13 -0
  266. package/test-fixtures/duplicates-ind1/03/metadata.json +6 -0
  267. package/test-fixtures/duplicates-ind1/03/record.json +16 -0
  268. package/test-fixtures/ending-whitespace/01/expectedResult.json +4 -0
  269. package/test-fixtures/ending-whitespace/01/metadata.json +6 -0
  270. package/test-fixtures/ending-whitespace/01/record.json +15 -0
  271. package/test-fixtures/ending-whitespace/02/expectedResult.json +4 -0
  272. package/test-fixtures/ending-whitespace/02/metadata.json +6 -0
  273. package/test-fixtures/ending-whitespace/02/record.json +15 -0
  274. package/test-fixtures/ending-whitespace/03/expectedResult.json +17 -0
  275. package/test-fixtures/ending-whitespace/03/metadata.json +6 -0
  276. package/test-fixtures/ending-whitespace/03/record.json +15 -0
  277. package/test-fixtures/ending-whitespace/04/expectedResult.json +10 -0
  278. package/test-fixtures/ending-whitespace/04/metadata.json +6 -0
  279. package/test-fixtures/ending-whitespace/04/record.json +8 -0
  280. package/test-fixtures/fix521/01/expectedResult.json +6 -0
  281. package/test-fixtures/fix521/01/metadata.json +5 -0
  282. package/test-fixtures/fix521/01/record.json +13 -0
  283. package/test-fixtures/fix521/02/expectedResult.json +15 -0
  284. package/test-fixtures/fix521/02/metadata.json +5 -0
  285. package/test-fixtures/fix521/02/record.json +13 -0
  286. package/test-fixtures/fix521/03/expectedResult.json +5 -0
  287. package/test-fixtures/fix521/03/metadata.json +5 -0
  288. package/test-fixtures/fix521/03/record.json +13 -0
  289. package/test-fixtures/indicator-fixes/01/expectedResult.json +9 -0
  290. package/test-fixtures/indicator-fixes/01/metadata.json +5 -0
  291. package/test-fixtures/indicator-fixes/01/record.json +64 -0
  292. package/test-fixtures/indicator-fixes/02/expectedResult.json +66 -0
  293. package/test-fixtures/indicator-fixes/02/metadata.json +5 -0
  294. package/test-fixtures/indicator-fixes/02/record.json +64 -0
  295. package/test-fixtures/indicator-fixes/03/expectedResult.json +55 -0
  296. package/test-fixtures/indicator-fixes/03/metadata.json +5 -0
  297. package/test-fixtures/indicator-fixes/03/record.json +54 -0
  298. package/test-fixtures/indicator-fixes/04/expectedResult.json +66 -0
  299. package/test-fixtures/indicator-fixes/04/metadata.json +5 -0
  300. package/test-fixtures/indicator-fixes/04/record.json +65 -0
  301. package/test-fixtures/indicator-fixes/05/expectedResult.json +66 -0
  302. package/test-fixtures/indicator-fixes/05/metadata.json +5 -0
  303. package/test-fixtures/indicator-fixes/05/record.json +65 -0
  304. package/test-fixtures/indicator-fixes/06/expectedResult.json +75 -0
  305. package/test-fixtures/indicator-fixes/06/metadata.json +5 -0
  306. package/test-fixtures/indicator-fixes/06/record.json +74 -0
  307. package/test-fixtures/lisapainokset/fixer/01/expectedResult.json +37 -0
  308. package/test-fixtures/lisapainokset/fixer/01/metadata.json +6 -0
  309. package/test-fixtures/lisapainokset/fixer/01/record.json +61 -0
  310. package/test-fixtures/lisapainokset/fixer/02/expectedResult.json +44 -0
  311. package/test-fixtures/lisapainokset/fixer/02/metadata.json +6 -0
  312. package/test-fixtures/lisapainokset/fixer/02/record.json +45 -0
  313. package/test-fixtures/lisapainokset/fixer/03/expectedResult.json +21 -0
  314. package/test-fixtures/lisapainokset/fixer/03/metadata.json +6 -0
  315. package/test-fixtures/lisapainokset/fixer/03/record.json +45 -0
  316. package/test-fixtures/lisapainokset/validator/01/expectedResult.json +7 -0
  317. package/test-fixtures/lisapainokset/validator/01/metadata.json +6 -0
  318. package/test-fixtures/lisapainokset/validator/01/record.json +45 -0
  319. package/test-fixtures/lisapainokset/validator/02/expectedResult.json +6 -0
  320. package/test-fixtures/lisapainokset/validator/02/metadata.json +6 -0
  321. package/test-fixtures/lisapainokset/validator/02/record.json +61 -0
  322. package/test-fixtures/lisapainokset/validator/03/expectedResult.json +4 -0
  323. package/test-fixtures/lisapainokset/validator/03/metadata.json +6 -0
  324. package/test-fixtures/lisapainokset/validator/03/record.json +37 -0
  325. package/test-fixtures/mergeRelatorTermFields/fixer/01/expectedResult.json +14 -0
  326. package/test-fixtures/mergeRelatorTermFields/fixer/01/metadata.json +6 -0
  327. package/test-fixtures/mergeRelatorTermFields/fixer/01/record.json +16 -0
  328. package/test-fixtures/mergeRelatorTermFields/fixer/02/expectedResult.json +17 -0
  329. package/test-fixtures/mergeRelatorTermFields/fixer/02/metadata.json +6 -0
  330. package/test-fixtures/mergeRelatorTermFields/fixer/02/record.json +23 -0
  331. package/test-fixtures/mergeRelatorTermFields/validator/01/expectedResult.json +6 -0
  332. package/test-fixtures/mergeRelatorTermFields/validator/01/metadata.json +6 -0
  333. package/test-fixtures/mergeRelatorTermFields/validator/01/record.json +16 -0
  334. package/test-fixtures/mergeRelatorTermFields/validator/02/expectedResult.json +4 -0
  335. package/test-fixtures/mergeRelatorTermFields/validator/02/metadata.json +6 -0
  336. package/test-fixtures/mergeRelatorTermFields/validator/02/record.json +16 -0
  337. package/test-fixtures/non-breaking-space/01/expectedResult.json +4 -0
  338. package/test-fixtures/non-breaking-space/01/metadata.json +6 -0
  339. package/test-fixtures/non-breaking-space/01/record.json +15 -0
  340. package/test-fixtures/non-breaking-space/02/expectedResult.json +4 -0
  341. package/test-fixtures/non-breaking-space/02/metadata.json +6 -0
  342. package/test-fixtures/non-breaking-space/02/record.json +15 -0
  343. package/test-fixtures/non-breaking-space/03/expectedResult.json +17 -0
  344. package/test-fixtures/non-breaking-space/03/metadata.json +6 -0
  345. package/test-fixtures/non-breaking-space/03/record.json +15 -0
  346. package/test-fixtures/non-breaking-space/04/expectedResult.json +21 -0
  347. package/test-fixtures/non-breaking-space/04/metadata.json +6 -0
  348. package/test-fixtures/non-breaking-space/04/record.json +19 -0
  349. package/test-fixtures/normalize-identifiers/01/expectedResult.json +8 -0
  350. package/test-fixtures/normalize-identifiers/01/metadata.json +5 -0
  351. package/test-fixtures/normalize-identifiers/01/record.json +81 -0
  352. package/test-fixtures/normalize-identifiers/02/expectedResult.json +92 -0
  353. package/test-fixtures/normalize-identifiers/02/metadata.json +5 -0
  354. package/test-fixtures/normalize-identifiers/02/record.json +92 -0
  355. package/test-fixtures/normalize-identifiers/03/expectedResult.json +63 -0
  356. package/test-fixtures/normalize-identifiers/03/metadata.json +5 -0
  357. package/test-fixtures/normalize-identifiers/03/record.json +61 -0
  358. package/test-fixtures/normalize-identifiers/04/expectedResult.json +79 -0
  359. package/test-fixtures/normalize-identifiers/04/metadata.json +5 -0
  360. package/test-fixtures/normalize-identifiers/04/record.json +77 -0
  361. package/test-fixtures/normalize-utf8-diacritics/01/expectedResult.json +7 -0
  362. package/test-fixtures/normalize-utf8-diacritics/01/metadata.json +5 -0
  363. package/test-fixtures/normalize-utf8-diacritics/01/record.json +39 -0
  364. package/test-fixtures/normalize-utf8-diacritics/02/expectedResult.json +41 -0
  365. package/test-fixtures/normalize-utf8-diacritics/02/metadata.json +5 -0
  366. package/test-fixtures/normalize-utf8-diacritics/02/record.json +39 -0
  367. package/test-fixtures/normalize-utf8-diacritics/03/expectedResult.json +5 -0
  368. package/test-fixtures/normalize-utf8-diacritics/03/metadata.json +5 -0
  369. package/test-fixtures/normalize-utf8-diacritics/03/record.json +37 -0
  370. package/test-fixtures/normalize-utf8-diacritics/04/expectedResult.json +41 -0
  371. package/test-fixtures/normalize-utf8-diacritics/04/metadata.json +5 -0
  372. package/test-fixtures/normalize-utf8-diacritics/04/record.json +39 -0
  373. package/test-fixtures/normalize-utf8-diacritics/05/expectedResult.json +41 -0
  374. package/test-fixtures/normalize-utf8-diacritics/05/metadata.json +5 -0
  375. package/test-fixtures/normalize-utf8-diacritics/05/record.json +41 -0
  376. package/test-fixtures/punctuation/01/expectedResult.json +3 -0
  377. package/test-fixtures/punctuation/01/metadata.json +4 -0
  378. package/test-fixtures/punctuation/01/record.json +18 -0
  379. package/test-fixtures/punctuation/02/expectedResult.json +3 -0
  380. package/test-fixtures/punctuation/02/metadata.json +4 -0
  381. package/test-fixtures/punctuation/02/record.json +18 -0
  382. package/test-fixtures/punctuation/03/expectedResult.json +21 -0
  383. package/test-fixtures/punctuation/03/metadata.json +5 -0
  384. package/test-fixtures/punctuation/03/record.json +19 -0
  385. package/test-fixtures/punctuation/04/expectedResult.json +21 -0
  386. package/test-fixtures/punctuation/04/metadata.json +5 -0
  387. package/test-fixtures/punctuation/04/record.json +19 -0
  388. package/test-fixtures/punctuation/05/expectedResult.json +44 -0
  389. package/test-fixtures/punctuation/05/metadata.json +5 -0
  390. package/test-fixtures/punctuation/05/record.json +42 -0
  391. package/test-fixtures/punctuation2/01/expectedResult.json +12 -0
  392. package/test-fixtures/punctuation2/01/metadata.json +6 -0
  393. package/test-fixtures/punctuation2/01/record.json +37 -0
  394. package/test-fixtures/punctuation2/02/expectedResult.json +4 -0
  395. package/test-fixtures/punctuation2/02/metadata.json +6 -0
  396. package/test-fixtures/punctuation2/02/record.json +14 -0
  397. package/test-fixtures/punctuation2/04/expectedResult.json +7 -0
  398. package/test-fixtures/punctuation2/04/metadata.json +6 -0
  399. package/test-fixtures/punctuation2/04/record.json +22 -0
  400. package/test-fixtures/punctuation2/05/expectedResult.json +6 -0
  401. package/test-fixtures/punctuation2/05/metadata.json +6 -0
  402. package/test-fixtures/punctuation2/05/record.json +12 -0
  403. package/test-fixtures/punctuation2/98/expectedResult.json +45 -0
  404. package/test-fixtures/punctuation2/98/metadata.json +6 -0
  405. package/test-fixtures/punctuation2/98/record.json +43 -0
  406. package/test-fixtures/punctuation2/99/expectedResult.json +15 -0
  407. package/test-fixtures/punctuation2/99/metadata.json +6 -0
  408. package/test-fixtures/punctuation2/99/record.json +14 -0
  409. package/test-fixtures/reindex-sf6-occurence-numbers/f01/expectedResult.json +35 -0
  410. package/test-fixtures/reindex-sf6-occurence-numbers/f01/metadata.json +6 -0
  411. package/test-fixtures/reindex-sf6-occurence-numbers/f01/record.json +34 -0
  412. package/test-fixtures/reindex-sf6-occurence-numbers/f02/expectedResult.json +53 -0
  413. package/test-fixtures/reindex-sf6-occurence-numbers/f02/metadata.json +6 -0
  414. package/test-fixtures/reindex-sf6-occurence-numbers/f02/record.json +51 -0
  415. package/test-fixtures/reindex-sf6-occurence-numbers/f03/expectedResult.json +46 -0
  416. package/test-fixtures/reindex-sf6-occurence-numbers/f03/metadata.json +7 -0
  417. package/test-fixtures/reindex-sf6-occurence-numbers/f03/record.json +44 -0
  418. package/test-fixtures/reindex-sf6-occurence-numbers/v01/expectedResult.json +6 -0
  419. package/test-fixtures/reindex-sf6-occurence-numbers/v01/metadata.json +5 -0
  420. package/test-fixtures/reindex-sf6-occurence-numbers/v01/record.json +31 -0
  421. package/test-fixtures/reindex-sf6-occurence-numbers/v02/expectedResult.json +6 -0
  422. package/test-fixtures/reindex-sf6-occurence-numbers/v02/metadata.json +6 -0
  423. package/test-fixtures/reindex-sf6-occurence-numbers/v02/record.json +38 -0
  424. package/test-fixtures/reindex-sf6-occurence-numbers/v03/expectedResult.json +6 -0
  425. package/test-fixtures/reindex-sf6-occurence-numbers/v03/metadata.json +6 -0
  426. package/test-fixtures/reindex-sf6-occurence-numbers/v03/record.json +30 -0
  427. package/test-fixtures/remove-duplicate-datafields/f01/expectedResult.json +35 -0
  428. package/test-fixtures/remove-duplicate-datafields/f01/metadata.json +6 -0
  429. package/test-fixtures/remove-duplicate-datafields/f01/record.json +34 -0
  430. package/test-fixtures/remove-duplicate-datafields/f03/expectedResult.json +20 -0
  431. package/test-fixtures/remove-duplicate-datafields/f03/metadata.json +6 -0
  432. package/test-fixtures/remove-duplicate-datafields/f03/record.json +33 -0
  433. package/test-fixtures/remove-duplicate-datafields/f03b/expectedResult.json +20 -0
  434. package/test-fixtures/remove-duplicate-datafields/f03b/metadata.json +6 -0
  435. package/test-fixtures/remove-duplicate-datafields/f03b/record.json +35 -0
  436. package/test-fixtures/remove-duplicate-datafields/f03c/expectedResult.json +25 -0
  437. package/test-fixtures/remove-duplicate-datafields/f03c/metadata.json +6 -0
  438. package/test-fixtures/remove-duplicate-datafields/f03c/record.json +43 -0
  439. package/test-fixtures/remove-duplicate-datafields/f04/expectedResult.json +31 -0
  440. package/test-fixtures/remove-duplicate-datafields/f04/metadata.json +6 -0
  441. package/test-fixtures/remove-duplicate-datafields/f04/record.json +41 -0
  442. package/test-fixtures/remove-duplicate-datafields/f05/expectedResult.json +23 -0
  443. package/test-fixtures/remove-duplicate-datafields/f05/metadata.json +6 -0
  444. package/test-fixtures/remove-duplicate-datafields/f05/record.json +29 -0
  445. package/test-fixtures/remove-duplicate-datafields/f06/expectedResult.json +24 -0
  446. package/test-fixtures/remove-duplicate-datafields/f06/metadata.json +6 -0
  447. package/test-fixtures/remove-duplicate-datafields/f06/record.json +41 -0
  448. package/test-fixtures/remove-duplicate-datafields/f07/expectedResult.json +15 -0
  449. package/test-fixtures/remove-duplicate-datafields/f07/metadata.json +6 -0
  450. package/test-fixtures/remove-duplicate-datafields/f07/record.json +21 -0
  451. package/test-fixtures/remove-duplicate-datafields/f08/expectedResult.json +21 -0
  452. package/test-fixtures/remove-duplicate-datafields/f08/metadata.json +6 -0
  453. package/test-fixtures/remove-duplicate-datafields/f08/record.json +33 -0
  454. package/test-fixtures/remove-duplicate-datafields/f09/expectedResult.json +6 -0
  455. package/test-fixtures/remove-duplicate-datafields/f09/metadata.json +6 -0
  456. package/test-fixtures/remove-duplicate-datafields/f09/record.json +9 -0
  457. package/test-fixtures/remove-duplicate-datafields/f10/expectedResult.json +15 -0
  458. package/test-fixtures/remove-duplicate-datafields/f10/metadata.json +6 -0
  459. package/test-fixtures/remove-duplicate-datafields/f10/record.json +24 -0
  460. package/test-fixtures/remove-duplicate-datafields/f11/expectedResult.json +30 -0
  461. package/test-fixtures/remove-duplicate-datafields/f11/metadata.json +6 -0
  462. package/test-fixtures/remove-duplicate-datafields/f11/record.json +53 -0
  463. package/test-fixtures/remove-duplicate-datafields/v01/expectedResult.json +6 -0
  464. package/test-fixtures/remove-duplicate-datafields/v01/metadata.json +6 -0
  465. package/test-fixtures/remove-duplicate-datafields/v01/record.json +31 -0
  466. package/test-fixtures/remove-duplicate-datafields/v02/expectedResult.json +10 -0
  467. package/test-fixtures/remove-duplicate-datafields/v02/metadata.json +6 -0
  468. package/test-fixtures/remove-duplicate-datafields/v02/record.json +45 -0
  469. package/test-fixtures/remove-duplicate-datafields/v03/expectedResult.json +6 -0
  470. package/test-fixtures/remove-duplicate-datafields/v03/metadata.json +7 -0
  471. package/test-fixtures/remove-duplicate-datafields/v03/record.json +37 -0
  472. package/test-fixtures/remove-duplicate-datafields/v04/expectedResult.json +8 -0
  473. package/test-fixtures/remove-duplicate-datafields/v04/metadata.json +6 -0
  474. package/test-fixtures/remove-duplicate-datafields/v04/record.json +41 -0
  475. package/test-fixtures/remove-inferior-datafields/f01/expectedResult.json +21 -0
  476. package/test-fixtures/remove-inferior-datafields/f01/metadata.json +6 -0
  477. package/test-fixtures/remove-inferior-datafields/f01/record.json +31 -0
  478. package/test-fixtures/remove-inferior-datafields/f03/expectedResult.json +16 -0
  479. package/test-fixtures/remove-inferior-datafields/f03/metadata.json +6 -0
  480. package/test-fixtures/remove-inferior-datafields/f03/record.json +27 -0
  481. package/test-fixtures/remove-inferior-datafields/f04/expectedResult.json +31 -0
  482. package/test-fixtures/remove-inferior-datafields/f04/metadata.json +6 -0
  483. package/test-fixtures/remove-inferior-datafields/f04/record.json +38 -0
  484. package/test-fixtures/remove-inferior-datafields/f05/expectedResult.json +34 -0
  485. package/test-fixtures/remove-inferior-datafields/f05/metadata.json +6 -0
  486. package/test-fixtures/remove-inferior-datafields/f05/record.json +41 -0
  487. package/test-fixtures/remove-inferior-datafields/f06/expectedResult.json +16 -0
  488. package/test-fixtures/remove-inferior-datafields/f06/metadata.json +6 -0
  489. package/test-fixtures/remove-inferior-datafields/f06/record.json +20 -0
  490. package/test-fixtures/remove-inferior-datafields/v01/expectedResult.json +6 -0
  491. package/test-fixtures/remove-inferior-datafields/v01/metadata.json +6 -0
  492. package/test-fixtures/remove-inferior-datafields/v01/record.json +31 -0
  493. package/test-fixtures/remove-inferior-datafields/v02/expectedResult.json +6 -0
  494. package/test-fixtures/remove-inferior-datafields/v02/metadata.json +6 -0
  495. package/test-fixtures/remove-inferior-datafields/v02/record.json +21 -0
  496. package/test-fixtures/remove-orphanded-sf6s/f01/expectedResult.json +35 -0
  497. package/test-fixtures/remove-orphanded-sf6s/f01/metadata.json +6 -0
  498. package/test-fixtures/remove-orphanded-sf6s/f01/record.json +34 -0
  499. package/test-fixtures/remove-orphanded-sf6s/f02/expectedResult.json +40 -0
  500. package/test-fixtures/remove-orphanded-sf6s/f02/metadata.json +6 -0
  501. package/test-fixtures/remove-orphanded-sf6s/f02/record.json +43 -0
  502. package/test-fixtures/remove-orphanded-sf6s/v01/expectedResult.json +6 -0
  503. package/test-fixtures/remove-orphanded-sf6s/v01/metadata.json +6 -0
  504. package/test-fixtures/remove-orphanded-sf6s/v01/record.json +31 -0
  505. package/test-fixtures/remove-orphanded-sf6s/v02/expectedResult.json +6 -0
  506. package/test-fixtures/remove-orphanded-sf6s/v02/metadata.json +6 -0
  507. package/test-fixtures/remove-orphanded-sf6s/v02/record.json +31 -0
  508. package/test-fixtures/resolvable-ext-references-melinda.js +0 -27
  509. package/test-fixtures/sanitize-vocabulary-source-codes/f01/expectedResult.json +32 -0
  510. package/test-fixtures/sanitize-vocabulary-source-codes/f01/metadata.json +6 -0
  511. package/test-fixtures/sanitize-vocabulary-source-codes/f01/record.json +32 -0
  512. package/test-fixtures/sanitize-vocabulary-source-codes/f02/expectedResult.json +24 -0
  513. package/test-fixtures/sanitize-vocabulary-source-codes/f02/metadata.json +6 -0
  514. package/test-fixtures/sanitize-vocabulary-source-codes/f02/record.json +24 -0
  515. package/test-fixtures/sanitize-vocabulary-source-codes/v01/expectedResult.json +12 -0
  516. package/test-fixtures/sanitize-vocabulary-source-codes/v01/metadata.json +6 -0
  517. package/test-fixtures/sanitize-vocabulary-source-codes/v01/record.json +24 -0
  518. package/test-fixtures/sort-relator-terms/f01/expectedResult.json +23 -0
  519. package/test-fixtures/sort-relator-terms/f01/metadata.json +6 -0
  520. package/test-fixtures/sort-relator-terms/f01/record.json +22 -0
  521. package/test-fixtures/sort-relator-terms/f02/expectedResult.json +26 -0
  522. package/test-fixtures/sort-relator-terms/f02/metadata.json +6 -0
  523. package/test-fixtures/sort-relator-terms/f02/record.json +22 -0
  524. package/test-fixtures/sort-relator-terms/v01/expectedResult.json +5 -0
  525. package/test-fixtures/sort-relator-terms/v01/metadata.json +6 -0
  526. package/test-fixtures/sort-relator-terms/v01/record.json +22 -0
  527. package/test-fixtures/sort-relator-terms/v02/expectedResult.json +6 -0
  528. package/test-fixtures/sort-relator-terms/v02/metadata.json +6 -0
  529. package/test-fixtures/sort-relator-terms/v02/record.json +14 -0
  530. package/test-fixtures/sort-subfields/f01/expectedResult.json +24 -0
  531. package/test-fixtures/sort-subfields/f01/metadata.json +6 -0
  532. package/test-fixtures/sort-subfields/f01/record.json +20 -0
  533. package/test-fixtures/sort-subfields/v01/expectedResult.json +5 -0
  534. package/test-fixtures/sort-subfields/v01/metadata.json +6 -0
  535. package/test-fixtures/sort-subfields/v01/record.json +24 -0
  536. package/test-fixtures/sort-subfields/v02/expectedResult.json +6 -0
  537. package/test-fixtures/sort-subfields/v02/metadata.json +6 -0
  538. package/test-fixtures/sort-subfields/v02/record.json +8 -0
  539. package/test-fixtures/strip-punctuation/01/expectedResult.json +12 -0
  540. package/test-fixtures/strip-punctuation/01/metadata.json +6 -0
  541. package/test-fixtures/strip-punctuation/01/record.json +37 -0
  542. package/test-fixtures/strip-punctuation/02/expectedResult.json +4 -0
  543. package/test-fixtures/strip-punctuation/02/metadata.json +6 -0
  544. package/test-fixtures/strip-punctuation/02/record.json +14 -0
  545. package/test-fixtures/strip-punctuation/04/expectedResult.json +6 -0
  546. package/test-fixtures/strip-punctuation/04/metadata.json +6 -0
  547. package/test-fixtures/strip-punctuation/04/record.json +22 -0
  548. package/test-fixtures/strip-punctuation/05/expectedResult.json +6 -0
  549. package/test-fixtures/strip-punctuation/05/metadata.json +6 -0
  550. package/test-fixtures/strip-punctuation/05/record.json +12 -0
  551. package/test-fixtures/strip-punctuation/98/expectedResult.json +44 -0
  552. package/test-fixtures/strip-punctuation/98/metadata.json +6 -0
  553. package/test-fixtures/strip-punctuation/98/record.json +45 -0
  554. package/test-fixtures/strip-punctuation/99/expectedResult.json +16 -0
  555. package/test-fixtures/strip-punctuation/99/metadata.json +6 -0
  556. package/test-fixtures/strip-punctuation/99/record.json +16 -0
  557. package/test-fixtures/subfield0/f01/expectedResult.json +25 -0
  558. package/test-fixtures/subfield0/f01/metadata.json +6 -0
  559. package/test-fixtures/subfield0/f01/record.json +23 -0
  560. package/test-fixtures/subfield0/f02/expectedResult.json +35 -0
  561. package/test-fixtures/subfield0/f02/metadata.json +6 -0
  562. package/test-fixtures/subfield0/f02/record.json +41 -0
  563. package/test-fixtures/subfield0/f03/expectedResult.json +21 -0
  564. package/test-fixtures/subfield0/f03/metadata.json +7 -0
  565. package/test-fixtures/subfield0/f03/record.json +24 -0
  566. package/test-fixtures/subfield0/v01/expectedResult.json +4 -0
  567. package/test-fixtures/subfield0/v01/metadata.json +6 -0
  568. package/test-fixtures/subfield0/v01/record.json +23 -0
  569. package/test-fixtures/subfield0/v02/expectedResult.json +9 -0
  570. package/test-fixtures/subfield0/v02/metadata.json +6 -0
  571. package/test-fixtures/subfield0/v02/record.json +38 -0
  572. package/test-fixtures/typeOfDate-008/01/expectedResult.json +3 -0
  573. package/test-fixtures/typeOfDate-008/01/metadata.json +4 -0
  574. package/test-fixtures/typeOfDate-008/01/record.json +14 -0
  575. package/test-fixtures/typeOfDate-008/02/expectedResult.json +4 -0
  576. package/test-fixtures/typeOfDate-008/02/metadata.json +4 -0
  577. package/test-fixtures/typeOfDate-008/02/record.json +14 -0
  578. package/test-fixtures/typeOfDate-008/03/expectedResult.json +14 -0
  579. package/test-fixtures/typeOfDate-008/03/metadata.json +5 -0
  580. package/test-fixtures/typeOfDate-008/03/record.json +14 -0
  581. package/test-fixtures/typeOfDate-008/04/expectedResult.json +14 -0
  582. package/test-fixtures/typeOfDate-008/04/metadata.json +5 -0
  583. package/test-fixtures/typeOfDate-008/04/record.json +14 -0
  584. package/test-fixtures/typeOfDate-008/05/expectedResult.json +14 -0
  585. package/test-fixtures/typeOfDate-008/05/metadata.json +5 -0
  586. package/test-fixtures/typeOfDate-008/05/record.json +14 -0
  587. package/test-fixtures/update-field-540/f01/expectedResult.json +23 -0
  588. package/test-fixtures/update-field-540/f01/metadata.json +6 -0
  589. package/test-fixtures/update-field-540/f01/record.json +23 -0
  590. package/test-fixtures/update-field-540/v01/expectedResult.json +7 -0
  591. package/test-fixtures/update-field-540/v01/metadata.json +6 -0
  592. package/test-fixtures/update-field-540/v01/record.json +23 -0
  593. package/.travis.yml +0 -10
@@ -1,32 +1,522 @@
1
- /**
2
- *
3
- * @licstart The following is the entire license notice for the JavaScript code in this file.
4
- *
5
- * MARC record validators used in Melinda
6
- *
7
- * Copyright (C) 2014-2018 University Of Helsinki (The National Library Of Finland)
8
- *
9
- * This file is part of marc-record-validators-melinda
10
- *
11
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Affero General Public License as
13
- * published by the Free Software Foundation, either version 3 of the
14
- * License, or (at your option) any later version.
15
- *
16
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Affero General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Affero General Public License
22
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
23
- *
24
- * @licend The above is the entire license notice
25
- * for the JavaScript code in this file.
26
- *
27
- *//* eslint-disable no-undef, max-nested-callbacks, no-unused-expressions */'use strict';var _chai=require('chai');var _chai2=_interopRequireDefault(_chai);var _chaiAsPromised=require('chai-as-promised');var _chaiAsPromised2=_interopRequireDefault(_chaiAsPromised);var _marcRecord=require('@natlibfi/marc-record');var _subfieldExclusion=require('../src/subfield-exclusion');var _subfieldExclusion2=_interopRequireDefault(_subfieldExclusion);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _asyncToGenerator(fn){return function(){var gen=fn.apply(this,arguments);return new Promise(function(resolve,reject){function step(key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{return Promise.resolve(value).then(function(value){step('next',value)},function(err){step('throw',err)})}}return step('next')})}}const{expect}=_chai2.default;_chai2.default.use(_chaiAsPromised2.default);// Factory validation
28
- describe('subfield-exclusion',()=>{describe('#validate: Check configuration validation',()=>{it('Creates a validator from simple config',_asyncToGenerator(function*(){const config=[{tag:/^500$/,subfields:[{code:/4/}]}];const validator=yield(0,_subfieldExclusion2.default)(config);expect(validator).to.be.an('object').that.has.any.keys('description','validate');expect(validator.description).to.be.a('string');expect(validator.validate).to.be.a('function')}));it('Creates a validator from complex config',_asyncToGenerator(function*(){const config=[{tag:/^210$/,ind2:/\s/,subfields:[{code:/2/,value:/.+/}]}];const validator=yield(0,_subfieldExclusion2.default)(config);expect(validator).to.be.an('object').that.has.any.keys('description','validate');expect(validator.description).to.be.a('string');expect(validator.validate).to.be.a('function')}));it('Fails to create a validator from invalid config - subfields missing',_asyncToGenerator(function*(){const config=[{tag:/^210$/}];yield expect((0,_subfieldExclusion2.default)(config)).to.be.rejectedWith(Error,'Configuration not valid - missing mandatory element: subfields')}));it('Fails to create a validator from invalid config - tag',_asyncToGenerator(function*(){const config=[{tag:'500',subfields:[{code:/9/,value:/^(?!FENNI<KEEP>).*$/}]}];yield expect((0,_subfieldExclusion2.default)(config)).to.be.rejectedWith(Error,'Configuration not valid - invalid data type for: tag')}));it('Fails to create a validator from invalid config - missing array',_asyncToGenerator(function*(){const config={tag:'500',subfields:[{code:/9/,value:/^(?!FENNI<KEEP>).*$/}]};yield expect((0,_subfieldExclusion2.default)(config)).to.be.rejectedWith(Error,'Configuration array not provided')}));it('Fails to create a validator from invalid config - code',_asyncToGenerator(function*(){const config=[{tag:/^500$/,subfields:[{code:9,value:/^(?!FENNI<KEEP>).*$/}]}];yield expect((0,_subfieldExclusion2.default)(config)).to.be.rejectedWith(Error,'Configuration not valid - invalid data type for: code')}));it('Fails to create a validator from invalid config - value',_asyncToGenerator(function*(){const config=[{tag:/^500$/,subfields:[{code:/9/,value:'Fenni'}]}];yield expect((0,_subfieldExclusion2.default)(config)).to.be.rejectedWith(Error,'Configuration not valid - invalid data type for: value')}));it('Fails to create a validator from invalid config - missing mandatory: tag',_asyncToGenerator(function*(){const config=[{value:/^500$/,subfields:[{code:/9/,value:/^(?!FENNI<KEEP>).*$/}]}];yield expect((0,_subfieldExclusion2.default)(config)).to.be.rejectedWith(Error,'Configuration not valid - missing mandatory element: tag')}));it('Fails to create a validator from invalid config - missing mandatory: tag',_asyncToGenerator(function*(){const config=[{value:/^500$/,subfields:[{code:/9/,value:/^(?!FENNI<KEEP>).*$/}]}];yield expect((0,_subfieldExclusion2.default)(config)).to.be.rejectedWith(Error,'Configuration not valid - missing mandatory element: tag')}));it('Fails to create a validator from invalid config - subfield not object: array',_asyncToGenerator(function*(){const config=[{tag:/^500$/,subfields:[['/9/','/^(?!FENNI<KEEP>).*$/'],{value:/^(?!FENNI<KEEP>).*$/}]}];yield expect((0,_subfieldExclusion2.default)(config)).to.be.rejectedWith(Error,'Configuration not valid - subfield: /9/,/^(?!FENNI<KEEP>).*$/ not object')}));it('Fails to create a validator from invalid config - subfield not object: string',_asyncToGenerator(function*(){const config=[{tag:/^500$/,subfields:['/9/','/^(?!FENNI<KEEP>).*$/',{value:/^(?!FENNI<KEEP>).*$/}]}];yield expect((0,_subfieldExclusion2.default)(config)).to.be.rejectedWith(Error,'Configuration not valid - subfield: /9/ not object')}));it('Fails to create a validator from invalid config - missing mandatory: subfield.code',_asyncToGenerator(function*(){const config=[{tag:/^500$/,subfields:[{code:/9/,value:/^(?!FENNI<KEEP>).*$/},{value:/^(?!FENNI<KEEP>).*$/}]}];yield expect((0,_subfieldExclusion2.default)(config)).to.be.rejectedWith(Error,'Configuration not valid - missing mandatory element: code')}));it('Fails to create a validator from invalid config - unidentified field: unidentified',_asyncToGenerator(function*(){const config=[{tag:/^500$/,unidentified:/^500$/,subfields:[{code:/9/,value:/^(?!FENNI<KEEP>).*$/},{value:/^(?!FENNI<KEEP>).*$/}]}];yield expect((0,_subfieldExclusion2.default)(config)).to.be.rejectedWith(Error,'Configuration not valid - unidentified value: unidentified')}))});// Simple configuration https://github.com/NatLibFi/marc-record-validators-melinda/issues/46
29
- describe('#validate: Simple configuration (spec)',()=>{const config=[{tag:/^100$/,subfields:[{code:/4/}]}];const recordValid=new _marcRecord.MarcRecord({leader:'foo',fields:[{tag:'100',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Foo Bar'}]},{tag:'245',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Fubar'}]}]});const recordInvalid=new _marcRecord.MarcRecord({leader:'foo',fields:[{tag:'100',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Foo Bar'},{code:'4',value:'att'}]},{tag:'245',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Fubar'}]}]});const recordInvalidFixed=new _marcRecord.MarcRecord({leader:'foo',fields:[{tag:'100',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Foo Bar'}]},{tag:'245',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Fubar'}]}]});it('Finds the record valid (spec)',_asyncToGenerator(function*(){const validator=yield(0,_subfieldExclusion2.default)(config);const result=yield validator.validate(recordValid);expect(result).to.eql({valid:true,message:[]})}));it('Finds the record invalid (spec)',_asyncToGenerator(function*(){const validator=yield(0,_subfieldExclusion2.default)(config);const result=yield validator.validate(recordInvalid);expect(result).to.eql({valid:false,message:['Subfield $100$$4should be excluded']})}));it('Repairs invalid record',_asyncToGenerator(function*(){const validator=yield(0,_subfieldExclusion2.default)(config);yield validator.fix(recordInvalid);expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true)}))});// Complex configuration https://github.com/NatLibFi/marc-record-validators-melinda/issues/46
30
- describe('#validate: Complex configuration (spec)',()=>{const config=[{tag:/^210$/,ind2:/\s/,subfields:[{code:/2/,value:/.+/}]}];const recordValid=new _marcRecord.MarcRecord({leader:'foo',fields:[{tag:'210',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Foo'}]},{tag:'245',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Fubar'}]}]});const recordInvalid=new _marcRecord.MarcRecord({leader:'foo',fields:[{tag:'210',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Foo'},{code:'2',value:'dnlm'}]},{tag:'245',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Fubar'}]}]});const recordInvalidFixed=new _marcRecord.MarcRecord({leader:'foo',fields:[{tag:'210',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Foo'}]},{tag:'245',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Fubar'}]}]});it('Finds the record valid (spec)',_asyncToGenerator(function*(){const validator=yield(0,_subfieldExclusion2.default)(config);const result=yield validator.validate(recordValid);expect(result).to.eql({valid:true,message:[]})}));it('Finds the record invalid (spec)',_asyncToGenerator(function*(){const validator=yield(0,_subfieldExclusion2.default)(config);const result=yield validator.validate(recordInvalid);expect(result).to.eql({valid:false,message:['Subfield $210$$2should be excluded']})}));it('Repairs invalid record',_asyncToGenerator(function*(){const validator=yield(0,_subfieldExclusion2.default)(config);yield validator.fix(recordInvalid);expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true)}))});// More special cases to increase coverage
31
- describe('#validate: Custom configuration',()=>{const configInd=[{tag:/^500$/,ind1:/^8$/,ind2:/^4$/,subfields:[{code:/2/,value:/.+/}]}];const recordValid=new _marcRecord.MarcRecord({leader:'foo',fields:[{tag:'210',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Foo'}]},{tag:'500',subfields:[{code:'a',value:'Foo'},{code:'2',value:'dnlm'}]}]});const recordIndInvalid=new _marcRecord.MarcRecord({leader:'foo',fields:[{tag:'245',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Fubar'}]},{tag:'500',ind1:'8',ind2:'4',subfields:[{code:'a',value:'Foo'},{code:'2',value:'dnlm'}]}]});const recordIndInvalidFixed=new _marcRecord.MarcRecord({leader:'foo',fields:[{tag:'245',ind1:' ',ind2:' ',subfields:[{code:'a',value:'Fubar'}]},{tag:'500',ind1:'8',ind2:'4',subfields:[{code:'a',value:'Foo'}]}]});it('Finds the record valid - Ind1&Ind2',_asyncToGenerator(function*(){const validator=yield(0,_subfieldExclusion2.default)(configInd);const result=yield validator.validate(recordValid);expect(result).to.eql({valid:true,message:[]})}));it('Finds the record invalid - Ind',_asyncToGenerator(function*(){const validator=yield(0,_subfieldExclusion2.default)(configInd);const result=yield validator.validate(recordIndInvalid);expect(result).to.eql({valid:false,message:['Subfield $500$$2should be excluded']})}));it('Repairs invalid record',_asyncToGenerator(function*(){const validator=yield(0,_subfieldExclusion2.default)(configInd);yield validator.fix(recordIndInvalid);expect(recordIndInvalid.equalsTo(recordIndInvalidFixed)).to.eql(true)}))})});
1
+ "use strict";
2
+
3
+ var _chai = require("chai");
4
+ var _marcRecord = require("@natlibfi/marc-record");
5
+ var _subfieldExclusion = _interopRequireDefault(require("../src/subfield-exclusion"));
6
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
+ //import chaiAsPromised from 'chai-as-promised';
8
+
9
+ //chai.use(chaiAsPromised);
10
+ // Factory validation
11
+ describe('subfield-exclusion', () => {
12
+ describe('#validate: Check configuration validation', () => {
13
+ it('Creates a validator from simple config', async () => {
14
+ const config = [{
15
+ tag: /^500$/u,
16
+ subfields: [{
17
+ code: /4/u
18
+ }]
19
+ }];
20
+ const validator = await (0, _subfieldExclusion.default)(config);
21
+ (0, _chai.expect)(validator).to.be.an('object').that.has.any.keys('description', 'validate');
22
+ (0, _chai.expect)(validator.description).to.be.a('string');
23
+ (0, _chai.expect)(validator.validate).to.be.a('function');
24
+ });
25
+ it('Creates a validator from complex config', async () => {
26
+ const config = [{
27
+ tag: /^210$/u,
28
+ ind2: /\s/u,
29
+ subfields: [{
30
+ code: /2/u,
31
+ value: /.+/u
32
+ }]
33
+ }];
34
+ const validator = await (0, _subfieldExclusion.default)(config);
35
+ (0, _chai.expect)(validator).to.be.an('object').that.has.any.keys('description', 'validate');
36
+ (0, _chai.expect)(validator.description).to.be.a('string');
37
+ (0, _chai.expect)(validator.validate).to.be.a('function');
38
+ });
39
+ it('Fails to create a validator from invalid config - subfields missing', () => {
40
+ const config = [{
41
+ tag: /^210$/u
42
+ }];
43
+ try {
44
+ (0, _subfieldExclusion.default)(config);
45
+ } catch (error) {
46
+ (0, _chai.expect)(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: subfields');
47
+ }
48
+ });
49
+ it('Fails to create a validator from invalid config - tag', () => {
50
+ const config = [{
51
+ tag: '500',
52
+ subfields: [{
53
+ code: /9/u,
54
+ value: /^(?!FENNI<KEEP>).*$/u
55
+ }]
56
+ }];
57
+ try {
58
+ (0, _subfieldExclusion.default)(config);
59
+ } catch (error) {
60
+ (0, _chai.expect)(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: tag');
61
+ }
62
+ });
63
+ it('Fails to create a validator from invalid config - missing array', () => {
64
+ const config = {
65
+ tag: '500',
66
+ subfields: [{
67
+ code: /9/u,
68
+ value: /^(?!FENNI<KEEP>).*$/u
69
+ }]
70
+ };
71
+ try {
72
+ (0, _subfieldExclusion.default)(config);
73
+ } catch (error) {
74
+ (0, _chai.expect)(error).to.be.an('error').with.property('message', 'Configuration array not provided');
75
+ }
76
+ });
77
+ it('Fails to create a validator from invalid config - code', () => {
78
+ const config = [{
79
+ tag: /^500$/u,
80
+ subfields: [{
81
+ code: 9,
82
+ value: /^(?!FENNI<KEEP>).*$/u
83
+ }]
84
+ }];
85
+ try {
86
+ (0, _subfieldExclusion.default)(config);
87
+ } catch (error) {
88
+ (0, _chai.expect)(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: code');
89
+ }
90
+ });
91
+ it('Fails to create a validator from invalid config - value', () => {
92
+ const config = [{
93
+ tag: /^500$/u,
94
+ subfields: [{
95
+ code: /9/u,
96
+ value: 'Fenni'
97
+ }]
98
+ }];
99
+ try {
100
+ (0, _subfieldExclusion.default)(config);
101
+ } catch (error) {
102
+ (0, _chai.expect)(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: value');
103
+ }
104
+ });
105
+ it('Fails to create a validator from invalid config - missing mandatory: tag', () => {
106
+ const config = [{
107
+ value: /^500$/u,
108
+ subfields: [{
109
+ code: /9/u,
110
+ value: /^(?!FENNI<KEEP>).*$/u
111
+ }]
112
+ }];
113
+ try {
114
+ (0, _subfieldExclusion.default)(config);
115
+ } catch (error) {
116
+ (0, _chai.expect)(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: tag');
117
+ }
118
+ });
119
+ it('Fails to create a validator from invalid config - subfield not object: array', () => {
120
+ const config = [{
121
+ tag: /^500$/u,
122
+ subfields: [['/9/', '/^(?!FENNI<KEEP>).*$/'], {
123
+ value: /^(?!FENNI<KEEP>).*$/u
124
+ }]
125
+ }];
126
+ try {
127
+ (0, _subfieldExclusion.default)(config);
128
+ } catch (error) {
129
+ (0, _chai.expect)(error).to.be.an('error').with.property('message', 'Configuration not valid - subfield: /9/,/^(?!FENNI<KEEP>).*$/ not object');
130
+ }
131
+ });
132
+ it('Fails to create a validator from invalid config - subfield not object: string', () => {
133
+ const config = [{
134
+ tag: /^500$/u,
135
+ subfields: ['/9/', '/^(?!FENNI<KEEP>).*$/', {
136
+ value: /^(?!FENNI<KEEP>).*$/u
137
+ }]
138
+ }];
139
+ try {
140
+ (0, _subfieldExclusion.default)(config);
141
+ } catch (error) {
142
+ (0, _chai.expect)(error).to.be.an('error').with.property('message', 'Configuration not valid - subfield: /9/ not object');
143
+ }
144
+ });
145
+ it('Fails to create a validator from invalid config - missing mandatory: subfield.code', () => {
146
+ const config = [{
147
+ tag: /^500$/u,
148
+ subfields: [{
149
+ code: /9/u,
150
+ value: /^(?!FENNI<KEEP>).*$/u
151
+ }, {
152
+ value: /^(?!FENNI<KEEP>).*$/u
153
+ }]
154
+ }];
155
+ try {
156
+ (0, _subfieldExclusion.default)(config);
157
+ } catch (error) {
158
+ (0, _chai.expect)(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: code');
159
+ }
160
+ });
161
+ it('Fails to create a validator from invalid config - unidentified field: unidentified', () => {
162
+ const config = [{
163
+ tag: /^500$/u,
164
+ unidentified: /^500$/u,
165
+ subfields: [{
166
+ code: /9/u,
167
+ value: /^(?!FENNI<KEEP>).*$/u
168
+ }, {
169
+ value: /^(?!FENNI<KEEP>).*$/u
170
+ }]
171
+ }];
172
+ try {
173
+ (0, _subfieldExclusion.default)(config);
174
+ } catch (error) {
175
+ (0, _chai.expect)(error).to.be.an('error').with.property('message', 'Configuration not valid - unidentified value: unidentified');
176
+ }
177
+ });
178
+ });
179
+
180
+ // Simple configuration https://github.com/NatLibFi/marc-record-validators-melinda/issues/46
181
+ describe('#validate: Simple configuration (spec)', () => {
182
+ const config = [{
183
+ tag: /^100$/u,
184
+ subfields: [{
185
+ code: /4/u
186
+ }]
187
+ }];
188
+ const recordValid = new _marcRecord.MarcRecord({
189
+ leader: 'foo',
190
+ fields: [{
191
+ tag: '100',
192
+ ind1: ' ',
193
+ ind2: ' ',
194
+ subfields: [{
195
+ code: 'a',
196
+ value: 'Foo Bar'
197
+ }]
198
+ }, {
199
+ tag: '245',
200
+ ind1: ' ',
201
+ ind2: ' ',
202
+ subfields: [{
203
+ code: 'a',
204
+ value: 'Fubar'
205
+ }]
206
+ }]
207
+ });
208
+ const recordInvalid = new _marcRecord.MarcRecord({
209
+ leader: 'foo',
210
+ fields: [{
211
+ tag: '100',
212
+ ind1: ' ',
213
+ ind2: ' ',
214
+ subfields: [{
215
+ code: 'a',
216
+ value: 'Foo Bar'
217
+ }, {
218
+ code: '4',
219
+ value: 'att'
220
+ }]
221
+ }, {
222
+ tag: '245',
223
+ ind1: ' ',
224
+ ind2: ' ',
225
+ subfields: [{
226
+ code: 'a',
227
+ value: 'Fubar'
228
+ }]
229
+ }]
230
+ });
231
+ const recordInvalidFixed = new _marcRecord.MarcRecord({
232
+ leader: 'foo',
233
+ fields: [{
234
+ tag: '100',
235
+ ind1: ' ',
236
+ ind2: ' ',
237
+ subfields: [{
238
+ code: 'a',
239
+ value: 'Foo Bar'
240
+ }]
241
+ }, {
242
+ tag: '245',
243
+ ind1: ' ',
244
+ ind2: ' ',
245
+ subfields: [{
246
+ code: 'a',
247
+ value: 'Fubar'
248
+ }]
249
+ }]
250
+ });
251
+ it('Finds the record valid (spec)', async () => {
252
+ const validator = await (0, _subfieldExclusion.default)(config);
253
+ const result = await validator.validate(recordValid);
254
+ (0, _chai.expect)(result).to.eql({
255
+ valid: true,
256
+ message: []
257
+ });
258
+ });
259
+ it('Finds the record invalid (spec)', async () => {
260
+ const validator = await (0, _subfieldExclusion.default)(config);
261
+ const result = await validator.validate(recordInvalid);
262
+ (0, _chai.expect)(result).to.eql({
263
+ valid: false,
264
+ message: ['Subfield $100$$4should be excluded']
265
+ });
266
+ });
267
+ it('Repairs invalid record', async () => {
268
+ const validator = await (0, _subfieldExclusion.default)(config);
269
+ await validator.fix(recordInvalid);
270
+ (0, _chai.expect)(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);
271
+ });
272
+ });
273
+ describe('#validate: Remove only subfield -> remove field as well', () => {
274
+ const config = [{
275
+ tag: /^041$/u,
276
+ subfields: [{
277
+ code: /^[ad]$/u,
278
+ value: /^zxx$/u
279
+ }]
280
+ }];
281
+ const recordOriginal = new _marcRecord.MarcRecord({
282
+ leader: 'foo',
283
+ fields: [{
284
+ tag: '041',
285
+ ind1: ' ',
286
+ ind2: ' ',
287
+ subfields: [{
288
+ code: 'a',
289
+ value: 'zxx'
290
+ }]
291
+ }, {
292
+ tag: '245',
293
+ ind1: ' ',
294
+ ind2: ' ',
295
+ subfields: [{
296
+ code: 'a',
297
+ value: 'Fubar'
298
+ }]
299
+ }]
300
+ });
301
+ const recordModified = new _marcRecord.MarcRecord({
302
+ leader: 'foo',
303
+ fields: [{
304
+ tag: '245',
305
+ ind1: ' ',
306
+ ind2: ' ',
307
+ subfields: [{
308
+ code: 'a',
309
+ value: 'Fubar'
310
+ }]
311
+ }]
312
+ });
313
+ it('Finds the record with 041$a zxx invalid (spec)', async () => {
314
+ const validator = await (0, _subfieldExclusion.default)(config);
315
+ const result = await validator.validate(recordOriginal);
316
+ (0, _chai.expect)(result).to.eql({
317
+ valid: false,
318
+ message: ['Subfield $041$$ashould be excluded']
319
+ });
320
+ });
321
+ it('Repairs invalid record', async () => {
322
+ const validator = await (0, _subfieldExclusion.default)(config);
323
+ await validator.fix(recordOriginal);
324
+ (0, _chai.expect)(recordOriginal.equalsTo(recordModified)).to.eql(true);
325
+ });
326
+ });
327
+
328
+ // Complex configuration https://github.com/NatLibFi/marc-record-validators-melinda/issues/46
329
+ describe('#validate: Complex configuration (spec)', () => {
330
+ const config = [{
331
+ tag: /^210$/u,
332
+ ind2: /\s/u,
333
+ subfields: [{
334
+ code: /2/u,
335
+ value: /.+/u
336
+ }]
337
+ }];
338
+ const recordValid = new _marcRecord.MarcRecord({
339
+ leader: 'foo',
340
+ fields: [{
341
+ tag: '210',
342
+ ind1: ' ',
343
+ ind2: ' ',
344
+ subfields: [{
345
+ code: 'a',
346
+ value: 'Foo'
347
+ }]
348
+ }, {
349
+ tag: '245',
350
+ ind1: ' ',
351
+ ind2: ' ',
352
+ subfields: [{
353
+ code: 'a',
354
+ value: 'Fubar'
355
+ }]
356
+ }]
357
+ });
358
+ const recordInvalid = new _marcRecord.MarcRecord({
359
+ leader: 'foo',
360
+ fields: [{
361
+ tag: '210',
362
+ ind1: ' ',
363
+ ind2: ' ',
364
+ subfields: [{
365
+ code: 'a',
366
+ value: 'Foo'
367
+ }, {
368
+ code: '2',
369
+ value: 'dnlm'
370
+ }]
371
+ }, {
372
+ tag: '245',
373
+ ind1: ' ',
374
+ ind2: ' ',
375
+ subfields: [{
376
+ code: 'a',
377
+ value: 'Fubar'
378
+ }]
379
+ }]
380
+ });
381
+ const recordInvalidFixed = new _marcRecord.MarcRecord({
382
+ leader: 'foo',
383
+ fields: [{
384
+ tag: '210',
385
+ ind1: ' ',
386
+ ind2: ' ',
387
+ subfields: [{
388
+ code: 'a',
389
+ value: 'Foo'
390
+ }]
391
+ }, {
392
+ tag: '245',
393
+ ind1: ' ',
394
+ ind2: ' ',
395
+ subfields: [{
396
+ code: 'a',
397
+ value: 'Fubar'
398
+ }]
399
+ }]
400
+ });
401
+ it('Finds the record valid (spec)', async () => {
402
+ const validator = await (0, _subfieldExclusion.default)(config);
403
+ const result = await validator.validate(recordValid);
404
+ (0, _chai.expect)(result).to.eql({
405
+ valid: true,
406
+ message: []
407
+ });
408
+ });
409
+ it('Finds the record invalid (spec)', async () => {
410
+ const validator = await (0, _subfieldExclusion.default)(config);
411
+ const result = await validator.validate(recordInvalid);
412
+ (0, _chai.expect)(result).to.eql({
413
+ valid: false,
414
+ message: ['Subfield $210$$2should be excluded']
415
+ });
416
+ });
417
+ it('Repairs invalid record', async () => {
418
+ const validator = await (0, _subfieldExclusion.default)(config);
419
+ await validator.fix(recordInvalid);
420
+ (0, _chai.expect)(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);
421
+ });
422
+ });
423
+
424
+ // More special cases to increase coverage
425
+ describe('#validate: Custom configuration', () => {
426
+ const configInd = [{
427
+ tag: /^500$/u,
428
+ ind1: /^8$/u,
429
+ ind2: /^4$/u,
430
+ subfields: [{
431
+ code: /2/u,
432
+ value: /.+/u
433
+ }]
434
+ }];
435
+ const recordValid = new _marcRecord.MarcRecord({
436
+ leader: 'foo',
437
+ fields: [{
438
+ tag: '210',
439
+ ind1: ' ',
440
+ ind2: ' ',
441
+ subfields: [{
442
+ code: 'a',
443
+ value: 'Foo'
444
+ }]
445
+ }, {
446
+ tag: '500',
447
+ subfields: [{
448
+ code: 'a',
449
+ value: 'Foo'
450
+ }, {
451
+ code: '2',
452
+ value: 'dnlm'
453
+ }]
454
+ }]
455
+ });
456
+ const recordIndInvalid = new _marcRecord.MarcRecord({
457
+ leader: 'foo',
458
+ fields: [{
459
+ tag: '245',
460
+ ind1: ' ',
461
+ ind2: ' ',
462
+ subfields: [{
463
+ code: 'a',
464
+ value: 'Fubar'
465
+ }]
466
+ }, {
467
+ tag: '500',
468
+ ind1: '8',
469
+ ind2: '4',
470
+ subfields: [{
471
+ code: 'a',
472
+ value: 'Foo'
473
+ }, {
474
+ code: '2',
475
+ value: 'dnlm'
476
+ }]
477
+ }]
478
+ });
479
+ const recordIndInvalidFixed = new _marcRecord.MarcRecord({
480
+ leader: 'foo',
481
+ fields: [{
482
+ tag: '245',
483
+ ind1: ' ',
484
+ ind2: ' ',
485
+ subfields: [{
486
+ code: 'a',
487
+ value: 'Fubar'
488
+ }]
489
+ }, {
490
+ tag: '500',
491
+ ind1: '8',
492
+ ind2: '4',
493
+ subfields: [{
494
+ code: 'a',
495
+ value: 'Foo'
496
+ }]
497
+ }]
498
+ });
499
+ it('Finds the record valid - Ind1&Ind2', async () => {
500
+ const validator = await (0, _subfieldExclusion.default)(configInd);
501
+ const result = await validator.validate(recordValid);
502
+ (0, _chai.expect)(result).to.eql({
503
+ valid: true,
504
+ message: []
505
+ });
506
+ });
507
+ it('Finds the record invalid - Ind', async () => {
508
+ const validator = await (0, _subfieldExclusion.default)(configInd);
509
+ const result = await validator.validate(recordIndInvalid);
510
+ (0, _chai.expect)(result).to.eql({
511
+ valid: false,
512
+ message: ['Subfield $500$$2should be excluded']
513
+ });
514
+ });
515
+ it('Repairs invalid record', async () => {
516
+ const validator = await (0, _subfieldExclusion.default)(configInd);
517
+ await validator.fix(recordIndInvalid);
518
+ (0, _chai.expect)(recordIndInvalid.equalsTo(recordIndInvalidFixed)).to.eql(true);
519
+ });
520
+ });
521
+ });
32
522
  //# sourceMappingURL=subfield-exclusion.spec.js.map