@natlibfi/marc-record-validators-melinda 9.0.6 → 9.0.7
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.
- package/.github/CODEOWNERS +10 -0
- package/.github/dependabot.yml +40 -0
- package/.github/workflows/melinda-node-tests.yml +61 -0
- package/LICENSE.txt +21 -165
- package/README.md +1 -1
- package/dist/access-rights.js +0 -27
- package/dist/access-rights.js.map +1 -1
- package/dist/access-rights.spec.js +0 -27
- package/dist/access-rights.spec.js.map +1 -1
- package/dist/double-commas.js +0 -27
- package/dist/double-commas.js.map +1 -1
- package/dist/double-commas.spec.js +0 -27
- package/dist/double-commas.spec.js.map +1 -1
- package/dist/duplicates-ind1.js +0 -27
- package/dist/duplicates-ind1.js.map +1 -1
- package/dist/duplicates-ind1.spec.js +0 -27
- package/dist/duplicates-ind1.spec.js.map +1 -1
- package/dist/empty-fields.js +0 -28
- package/dist/empty-fields.js.map +1 -1
- package/dist/empty-fields.spec.js +0 -27
- package/dist/empty-fields.spec.js.map +1 -1
- package/dist/ending-punctuation-conf.js +0 -28
- package/dist/ending-punctuation-conf.js.map +1 -1
- package/dist/ending-punctuation.js.map +1 -1
- package/dist/ending-punctuation.spec.js +0 -27
- package/dist/ending-punctuation.spec.js.map +1 -1
- package/dist/field-exclusion.js +0 -28
- package/dist/field-exclusion.js.map +1 -1
- package/dist/field-exclusion.spec.js +0 -27
- package/dist/field-exclusion.spec.js.map +1 -1
- package/dist/field-structure.js +0 -28
- package/dist/field-structure.js.map +1 -1
- package/dist/field-structure.spec.js +0 -27
- package/dist/field-structure.spec.js.map +1 -1
- package/dist/fields-present.js +0 -27
- package/dist/fields-present.js.map +1 -1
- package/dist/fields-present.spec.js +0 -27
- package/dist/fields-present.spec.js.map +1 -1
- package/dist/fixed-fields.js +0 -27
- package/dist/fixed-fields.js.map +1 -1
- package/dist/fixed-fields.spec.js +0 -27
- package/dist/fixed-fields.spec.js.map +1 -1
- package/dist/identical-fields.js +0 -28
- package/dist/identical-fields.js.map +1 -1
- package/dist/identical-fields.spec.js +0 -27
- package/dist/identical-fields.spec.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/isbn-issn.js +0 -27
- package/dist/isbn-issn.js.map +1 -1
- package/dist/isbn-issn.spec.js +0 -27
- package/dist/isbn-issn.spec.js.map +1 -1
- package/dist/item-language.js +0 -27
- package/dist/item-language.js.map +1 -1
- package/dist/item-language.spec.js +0 -27
- package/dist/item-language.spec.js.map +1 -1
- package/dist/punctuation/index.js +21 -1
- package/dist/punctuation/index.js.map +1 -1
- package/dist/punctuation/rules/aut.js.map +1 -1
- package/dist/punctuation/rules/bib.js +8 -1
- package/dist/punctuation/rules/bib.js.map +1 -1
- package/dist/punctuation/rules/index.js.map +1 -1
- package/dist/punctuation.spec.js +49 -140
- package/dist/punctuation.spec.js.map +1 -1
- package/dist/resolvable-ext-references-melinda.js +0 -27
- package/dist/resolvable-ext-references-melinda.js.map +1 -1
- package/dist/resolvable-ext-references-melinda.spec.js +3 -29
- package/dist/resolvable-ext-references-melinda.spec.js.map +1 -1
- package/dist/sort-tags.js +0 -27
- package/dist/sort-tags.js.map +1 -1
- package/dist/sort-tags.spec.js +0 -27
- package/dist/sort-tags.spec.js.map +1 -1
- package/dist/subfield-exclusion.js +0 -28
- package/dist/subfield-exclusion.js.map +1 -1
- package/dist/subfield-exclusion.spec.js +0 -27
- package/dist/subfield-exclusion.spec.js.map +1 -1
- package/dist/unicode-decomposition.js +0 -28
- package/dist/unicode-decomposition.js.map +1 -1
- package/dist/unicode-decomposition.spec.js +0 -27
- package/dist/unicode-decomposition.spec.js.map +1 -1
- package/dist/urn.js +0 -27
- package/dist/urn.js.map +1 -1
- package/dist/urn.spec.js +0 -27
- package/dist/urn.spec.js.map +1 -1
- package/package.json +5 -3
- package/src/access-rights.js +0 -29
- package/src/access-rights.spec.js +0 -29
- package/src/double-commas.js +0 -29
- package/src/double-commas.spec.js +0 -29
- package/src/duplicates-ind1.js +0 -29
- package/src/duplicates-ind1.spec.js +0 -29
- package/src/empty-fields.js +0 -28
- package/src/empty-fields.spec.js +0 -29
- package/src/ending-punctuation-conf.js +0 -29
- package/src/ending-punctuation.spec.js +0 -29
- package/src/field-exclusion.js +0 -29
- package/src/field-exclusion.spec.js +0 -29
- package/src/field-structure.js +0 -29
- package/src/field-structure.spec.js +0 -29
- package/src/fields-present.js +0 -29
- package/src/fields-present.spec.js +0 -29
- package/src/fixed-fields.js +0 -29
- package/src/fixed-fields.spec.js +0 -29
- package/src/identical-fields.js +0 -28
- package/src/identical-fields.spec.js +0 -29
- package/src/index.js +0 -29
- package/src/isbn-issn.js +0 -28
- package/src/isbn-issn.spec.js +0 -29
- package/src/item-language.js +0 -29
- package/src/item-language.spec.js +0 -29
- package/src/punctuation/index.js +19 -1
- package/src/punctuation/rules/bib.js +9 -1
- package/src/punctuation.spec.js +48 -147
- package/src/resolvable-ext-references-melinda.js +0 -28
- package/src/resolvable-ext-references-melinda.spec.js +2 -30
- package/src/sort-tags.js +0 -29
- package/src/sort-tags.spec.js +0 -29
- package/src/subfield-exclusion.js +0 -29
- package/src/subfield-exclusion.spec.js +0 -29
- package/src/unicode-decomposition.js +0 -28
- package/src/unicode-decomposition.spec.js +0 -29
- package/src/urn.js +0 -29
- package/src/urn.spec.js +0 -29
- package/test-fixtures/punctuation/01/expectedResult.json +3 -0
- package/test-fixtures/punctuation/01/metadata.json +4 -0
- package/test-fixtures/punctuation/01/record.json +18 -0
- package/test-fixtures/punctuation/02/expectedResult.json +3 -0
- package/test-fixtures/punctuation/02/metadata.json +4 -0
- package/test-fixtures/punctuation/02/record.json +18 -0
- package/test-fixtures/punctuation/03/expectedResult.json +21 -0
- package/test-fixtures/punctuation/03/metadata.json +5 -0
- package/test-fixtures/punctuation/03/record.json +19 -0
- package/test-fixtures/punctuation/04/expectedResult.json +21 -0
- package/test-fixtures/punctuation/04/metadata.json +5 -0
- package/test-fixtures/punctuation/04/record.json +19 -0
- package/test-fixtures/punctuation/05/expectedResult.json +44 -0
- package/test-fixtures/punctuation/05/metadata.json +5 -0
- package/test-fixtures/punctuation/05/record.json +42 -0
- package/test-fixtures/resolvable-ext-references-melinda.js +0 -27
- package/.drone.yml +0 -93
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"resolvable-ext-references-melinda.js","names":["endpoint","prefixPattern","fields","RegExp","description","validate","Error","record","validateResult","validateRecord","removedPrefixes","subfields","reduce","prev","current","Object","keys","forEach","key","tag","push","matchingTags","filter","item","values","value","code","obj","test","replace","resolveValidation","length","validateMatchingTags","then","result","valid","messages","tags","resolved","Promise","all","map","getData","every","recID","queryParam","response","xml","text","resolve","err","slice","position","parseInt"],"sources":["../src/resolvable-ext-references-melinda.js"],"sourcesContent":["import {parseString} from 'xml2js';\nimport fetch from 'node-fetch';\n\nexport default function ({endpoint, prefixPattern, fields}) {\n if (typeof endpoint === 'string' && prefixPattern instanceof RegExp && typeof fields === 'object') {\n return {\n description: 'Checks if Melinda entity references are resolvable',\n validate\n };\n }\n\n throw new Error('Error in validation parameters');\n\n async function validate(record) {\n const validateResult = await validateRecord(record);\n return validateResult;\n }\n\n function validateRecord(record) {\n const removedPrefixes = [];\n\n // Filter matching field keys from record.fields\n const subfields = record.fields.reduce((prev, current) => {\n Object.keys(fields).forEach(key => {\n if (key === current.tag) { // eslint-disable-line functional/no-conditional-statement\n prev.push(current); // eslint-disable-line functional/immutable-data\n }\n });\n return prev;\n }, []);\n\n // Filter matching objects from subfields\n const matchingTags = [...subfields].reduce((prev, current) => {\n Object.keys(fields).forEach(key => {\n if (key === current.tag) { // eslint-disable-line functional/no-conditional-statement\n current.subfields.filter(item => {\n if (Object.values(fields[key]).filter(value => value === item.code)[0]) { // eslint-disable-line functional/no-conditional-statement\n prev.push({tag: current.tag, code: item.code, value: item.value}); // eslint-disable-line functional/immutable-data\n }\n\n return prev;\n });\n }\n });\n return prev;\n }, []);\n\n // Matching prefixPattern is removed from object value field.\n matchingTags.forEach(obj => {\n if (prefixPattern.test(obj.value)) { // eslint-disable-line functional/no-conditional-statement\n obj.value = obj.value.replace(prefixPattern, ''); // eslint-disable-line functional/immutable-data\n removedPrefixes.push(obj); // eslint-disable-line functional/immutable-data\n }\n });\n return resolveValidation(removedPrefixes);\n }\n\n function resolveValidation(removedPrefixes) {\n // If matching prefixPatterns found make an API call\n if (removedPrefixes.length > 0) {\n return validateMatchingTags(removedPrefixes).then(result => result);\n }\n\n return {valid: true, messages: []};\n }\n\n async function validateMatchingTags(tags) {\n const resolved = await Promise.all(tags.map(obj => getData(obj.value).then(valid => ({valid, ...obj}))));\n\n if (resolved.every(value => value.valid === true)) {\n return {valid: true, messages: []};\n }\n\n return {valid: false, messages: resolved.map(obj => `Field ${obj.tag}$${obj.code} with value ${obj.value} is not resolvable`)};\n }\n\n async function getData(recID) {\n const queryParam = '?operation=searchRetrieve&maximumRecords=2&version=1&query=rec.id=';\n\n const response = await fetch(`${endpoint}${queryParam}${recID}`);\n\n const xml = await response.text();\n\n return new Promise(resolve => {\n parseString(xml, (err, result) => {\n const record = result['zs:searchRetrieveResponse']['zs:records'].slice(-1)?.[0];\n const position = parseInt(record?.['zs:record'].slice(-1)?.[0]['zs:recordPosition'][0], 10);\n resolve(position === 1 && !err);\n });\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -18,33 +18,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
18
18
|
|
|
19
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
20
|
|
|
21
|
-
/**
|
|
22
|
-
*
|
|
23
|
-
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
24
|
-
*
|
|
25
|
-
* MARC record validators used in Melinda
|
|
26
|
-
*
|
|
27
|
-
* Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
|
|
28
|
-
*
|
|
29
|
-
* This file is part of marc-record-validators-melinda
|
|
30
|
-
*
|
|
31
|
-
* marc-record-validators-melinda program is free software: you can redistribute it and/or modify
|
|
32
|
-
* it under the terms of the GNU Lesser General Public License as
|
|
33
|
-
* published by the Free Software Foundation, either version 3 of the
|
|
34
|
-
* License, or (at your option) any later version.
|
|
35
|
-
*
|
|
36
|
-
* marc-record-validators-melinda is distributed in the hope that it will be useful,
|
|
37
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
38
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
39
|
-
* GNU Lesser General Public License for more details.
|
|
40
|
-
*
|
|
41
|
-
* You should have received a copy of the GNU Lesser General Public License
|
|
42
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
43
|
-
*
|
|
44
|
-
* @licend The above is the entire license notice
|
|
45
|
-
* for the JavaScript code in this file.
|
|
46
|
-
*
|
|
47
|
-
*/
|
|
48
21
|
const {
|
|
49
22
|
expect
|
|
50
23
|
} = _chai.default;
|
|
@@ -77,8 +50,9 @@ describe('resolvable-ext-references-melinda', () => {
|
|
|
77
50
|
endpoint,
|
|
78
51
|
prefixPattern,
|
|
79
52
|
fields
|
|
80
|
-
});
|
|
81
|
-
|
|
53
|
+
}); // Cannot read property 'fields' of undefined or Cannot read properties of undefined (reading 'fields')'
|
|
54
|
+
|
|
55
|
+
await expect(validator.validate()).to.be.rejectedWith(Error, /^Cannot read propert/u);
|
|
82
56
|
});
|
|
83
57
|
describe('#validate', () => {
|
|
84
58
|
it('Finds prefixPattern on record and removes it', async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resolvable-ext-references-melinda.spec.js"],"names":["expect","chai","use","chaiAsPromised","endpoint","queryParam","prefixPattern","fields","describe","afterEach","testContext","default","__ResetDependency__","it","validator","to","be","an","that","has","any","keys","description","a","validate","rejectedWith","Error","mock","fetchMock","sandbox","get","fixture5000","fixture9550","__Rewire__","record","MarcRecord","tag","value","subfields","code","result","eql","valid","messages","fixture1000"],"mappings":"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","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nimport chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport fetchMock from 'fetch-mock';\nimport * as testContext from '../src/resolvable-ext-references-melinda';\nimport {fixture5000, fixture9550, fixture1000} from '../test-fixtures/resolvable-ext-references-melinda';\n\nconst {expect} = chai;\nchai.use(chaiAsPromised);\n\nconst endpoint = 'http://melinda.kansalliskirjasto.fi:210/fin01';\nconst queryParam = '?operation=searchRetrieve&maximumRecords=2&version=1&query=rec.id=';\nconst prefixPattern = /^\\(FOOBAR\\)/u;\nconst fields = {\n 773: ['w'],\n 833: ['w', 'p']\n};\n\ndescribe('resolvable-ext-references-melinda', () => {\n afterEach(() => {\n testContext.default.__ResetDependency__('fetch');\n });\n\n it('Creates a validator', async () => {\n const validator = await testContext.default({endpoint, prefixPattern, fields});\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n it('Throws an error when prefixPattern not provided', async () => {\n const validator = await testContext.default({endpoint, prefixPattern, fields});\n await expect(validator.validate()).to.be.rejectedWith(Error, 'Cannot read property \\'fields\\' of undefined');\n });\n\n describe('#validate', () => {\n it('Finds prefixPattern on record and removes it', async () => {\n const mock = fetchMock.sandbox();\n mock.get(`${endpoint}${queryParam}5000`, fixture5000);\n mock.get(`${endpoint}${queryParam}9550`, fixture9550);\n\n testContext.default.__Rewire__('fetch', mock);\n const validator = await testContext.default({endpoint, prefixPattern, fields});\n\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '123456'\n },\n {\n tag: '035',\n subfields: [\n {\n code: 'a',\n value: '(FI-MELINDA)123456'\n }\n ]\n },\n {\n tag: '773',\n subfields: [\n {\n code: 'w',\n value: '(FOOBAR)5000'\n }\n ]\n },\n {\n tag: '833',\n subfields: [\n {\n code: 'p',\n value: '(FOOBAR)9550'\n },\n {\n code: 'c',\n value: '(FI-MELINDA)8850'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true, messages: []});\n });\n\n it('Finds no matching prefixPattern on record', async () => {\n const mock = fetchMock.sandbox();\n\n mock.get(`${endpoint}5000`, fixture5000);\n\n testContext.default.__Rewire__('fetch', mock);\n const validator = await testContext.default({endpoint, prefixPattern, fields});\n\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '123456'\n },\n {\n tag: '035',\n subfields: [\n {\n code: 'a',\n value: '(FI-MELINDA)123456'\n }\n ]\n },\n {\n tag: '773',\n subfields: [\n {\n code: 'w',\n value: '(FI-MELINDA)123456'\n }\n ]\n },\n {\n tag: '833',\n subfields: [\n {\n code: 'p',\n value: '(FI-MELINDA)2620'\n },\n {\n code: 'w',\n value: '(FI-MELINDA)8850'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true, messages: []});\n });\n\n it('Finds prefixPattern on record but values not resolvable', async () => {\n const mock = fetchMock.sandbox();\n mock.get(`${endpoint}${queryParam}1000`, fixture1000);\n\n testContext.default.__Rewire__('fetch', mock);\n const validator = await testContext.default({endpoint, prefixPattern, fields});\n\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '123456'\n },\n {\n tag: '035',\n subfields: [\n {\n code: 'a',\n value: '(FI-MELINDA)123456'\n }\n ]\n },\n {\n tag: '773',\n subfields: [\n {\n code: 'w',\n value: '(FOOBAR)1000'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: ['Field 773$w with value 1000 is not resolvable']});\n });\n });\n});\n"],"file":"resolvable-ext-references-melinda.spec.js"}
|
|
1
|
+
{"version":3,"file":"resolvable-ext-references-melinda.spec.js","names":["expect","chai","use","chaiAsPromised","endpoint","queryParam","prefixPattern","fields","describe","afterEach","testContext","default","__ResetDependency__","it","validator","to","be","an","that","has","any","keys","description","a","validate","rejectedWith","Error","mock","fetchMock","sandbox","get","fixture5000","fixture9550","__Rewire__","record","MarcRecord","tag","value","subfields","code","result","eql","valid","messages","fixture1000"],"sources":["../src/resolvable-ext-references-melinda.spec.js"],"sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport fetchMock from 'fetch-mock';\nimport * as testContext from '../src/resolvable-ext-references-melinda';\nimport {fixture5000, fixture9550, fixture1000} from '../test-fixtures/resolvable-ext-references-melinda';\n\nconst {expect} = chai;\nchai.use(chaiAsPromised);\n\nconst endpoint = 'http://melinda.kansalliskirjasto.fi:210/fin01';\nconst queryParam = '?operation=searchRetrieve&maximumRecords=2&version=1&query=rec.id=';\nconst prefixPattern = /^\\(FOOBAR\\)/u;\nconst fields = {\n 773: ['w'],\n 833: ['w', 'p']\n};\n\ndescribe('resolvable-ext-references-melinda', () => {\n afterEach(() => {\n testContext.default.__ResetDependency__('fetch');\n });\n\n it('Creates a validator', async () => {\n const validator = await testContext.default({endpoint, prefixPattern, fields});\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n it('Throws an error when prefixPattern not provided', async () => {\n const validator = await testContext.default({endpoint, prefixPattern, fields});\n // Cannot read property 'fields' of undefined or Cannot read properties of undefined (reading 'fields')'\n await expect(validator.validate()).to.be.rejectedWith(Error, /^Cannot read propert/u);\n });\n\n describe('#validate', () => {\n it('Finds prefixPattern on record and removes it', async () => {\n const mock = fetchMock.sandbox();\n mock.get(`${endpoint}${queryParam}5000`, fixture5000);\n mock.get(`${endpoint}${queryParam}9550`, fixture9550);\n\n testContext.default.__Rewire__('fetch', mock);\n const validator = await testContext.default({endpoint, prefixPattern, fields});\n\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '123456'\n },\n {\n tag: '035',\n subfields: [\n {\n code: 'a',\n value: '(FI-MELINDA)123456'\n }\n ]\n },\n {\n tag: '773',\n subfields: [\n {\n code: 'w',\n value: '(FOOBAR)5000'\n }\n ]\n },\n {\n tag: '833',\n subfields: [\n {\n code: 'p',\n value: '(FOOBAR)9550'\n },\n {\n code: 'c',\n value: '(FI-MELINDA)8850'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true, messages: []});\n });\n\n it('Finds no matching prefixPattern on record', async () => {\n const mock = fetchMock.sandbox();\n\n mock.get(`${endpoint}5000`, fixture5000);\n\n testContext.default.__Rewire__('fetch', mock);\n const validator = await testContext.default({endpoint, prefixPattern, fields});\n\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '123456'\n },\n {\n tag: '035',\n subfields: [\n {\n code: 'a',\n value: '(FI-MELINDA)123456'\n }\n ]\n },\n {\n tag: '773',\n subfields: [\n {\n code: 'w',\n value: '(FI-MELINDA)123456'\n }\n ]\n },\n {\n tag: '833',\n subfields: [\n {\n code: 'p',\n value: '(FI-MELINDA)2620'\n },\n {\n code: 'w',\n value: '(FI-MELINDA)8850'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true, messages: []});\n });\n\n it('Finds prefixPattern on record but values not resolvable', async () => {\n const mock = fetchMock.sandbox();\n mock.get(`${endpoint}${queryParam}1000`, fixture1000);\n\n testContext.default.__Rewire__('fetch', mock);\n const validator = await testContext.default({endpoint, prefixPattern, fields});\n\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '123456'\n },\n {\n tag: '035',\n subfields: [\n {\n code: 'a',\n value: '(FI-MELINDA)123456'\n }\n ]\n },\n {\n tag: '773',\n subfields: [\n {\n code: 'w',\n value: '(FOOBAR)1000'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: false, messages: ['Field 773$w with value 1000 is not resolvable']});\n });\n });\n});\n"],"mappings":"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"}
|
package/dist/sort-tags.js
CHANGED
|
@@ -7,33 +7,6 @@ exports.default = _default;
|
|
|
7
7
|
|
|
8
8
|
var _marcRecord = require("@natlibfi/marc-record");
|
|
9
9
|
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
13
|
-
*
|
|
14
|
-
* MARC record validators used in Melinda
|
|
15
|
-
*
|
|
16
|
-
* Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
|
|
17
|
-
*
|
|
18
|
-
* This file is part of marc-record-validators-melinda
|
|
19
|
-
*
|
|
20
|
-
* marc-record-validators-melinda program is free software: you can redistribute it and/or modify
|
|
21
|
-
* it under the terms of the GNU Lesser General Public License as
|
|
22
|
-
* published by the Free Software Foundation, either version 3 of the
|
|
23
|
-
* License, or (at your option) any later version.
|
|
24
|
-
*
|
|
25
|
-
* marc-record-validators-melinda is distributed in the hope that it will be useful,
|
|
26
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
27
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
28
|
-
* GNU Lesser General Public License for more details.
|
|
29
|
-
*
|
|
30
|
-
* You should have received a copy of the GNU Lesser General Public License
|
|
31
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
32
|
-
*
|
|
33
|
-
* @licend The above is the entire license notice
|
|
34
|
-
* for the JavaScript code in this file.
|
|
35
|
-
*
|
|
36
|
-
*/
|
|
37
10
|
function _default(tagPattern) {
|
|
38
11
|
return {
|
|
39
12
|
description: 'Handles field ordering',
|
package/dist/sort-tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"sort-tags.js","names":["tagPattern","description","validate","fix","record","sort","MarcRecord","isEqual","fields","valid","messages","sortPatternFields","sortFields","matchingTags","map","field","some","pattern","test","tag","filter","sortedArray","fixedArray","splice","index","a","b","findIndex"],"sources":["../src/sort-tags.js"],"sourcesContent":["import {MarcRecord} from '@natlibfi/marc-record';\n\nexport default function (tagPattern) {\n return {\n description:\n 'Handles field ordering',\n validate,\n fix: async record => ({\n fix: await sort(record, tagPattern)\n })\n };\n\n function validate(record, tagPattern) {\n return MarcRecord.isEqual(record.fields, sort(record.fields, tagPattern)) ? {valid: true, messages: []} : {valid: false, messages: ['Fields are in incorrect order']};\n }\n\n function sort(record, tagPattern) {\n if (tagPattern) {\n return sortPatternFields(record, tagPattern);\n }\n\n return sortFields(record);\n }\n}\n\nfunction sortPatternFields(record, tagPattern) {\n const matchingTags = record.fields.map(field => tagPattern.some(pattern => pattern.test(field.tag)) ? field : null).filter(tag => tag);\n const sortedArray = sortFields(record.fields);\n const fixedArray = sortedArray.filter(field => !tagPattern.some(pattern => pattern.test(field.tag)));\n fixedArray.splice(index(sortedArray, tagPattern), 0, ...matchingTags); // eslint-disable-line functional/immutable-data\n record.fields = fixedArray; // eslint-disable-line functional/immutable-data\n}\n\nfunction sortFields(fields) {\n return [...fields].sort((a, b) => {\n if (a.tag > b.tag) {\n return 1;\n }\n if (b.tag > a.tag) {\n return -1;\n }\n return 0;\n });\n}\n\nfunction index(fields, tagPattern) {\n return fields.findIndex(field => tagPattern.some(pattern => pattern.test(field.tag)));\n}\n"],"mappings":";;;;;;;AAAA;;AAEe,kBAAUA,UAAV,EAAsB;EACnC,OAAO;IACLC,WAAW,EACT,wBAFG;IAGLC,QAHK;IAILC,GAAG,EAAE,MAAMC,MAAN,KAAiB;MACpBD,GAAG,EAAE,MAAME,IAAI,CAACD,MAAD,EAASJ,UAAT;IADK,CAAjB;EAJA,CAAP;;EASA,SAASE,QAAT,CAAkBE,MAAlB,EAA0BJ,UAA1B,EAAsC;IACpC,OAAOM,uBAAWC,OAAX,CAAmBH,MAAM,CAACI,MAA1B,EAAkCH,IAAI,CAACD,MAAM,CAACI,MAAR,EAAgBR,UAAhB,CAAtC,IAAqE;MAACS,KAAK,EAAE,IAAR;MAAcC,QAAQ,EAAE;IAAxB,CAArE,GAAmG;MAACD,KAAK,EAAE,KAAR;MAAeC,QAAQ,EAAE,CAAC,+BAAD;IAAzB,CAA1G;EACD;;EAED,SAASL,IAAT,CAAcD,MAAd,EAAsBJ,UAAtB,EAAkC;IAChC,IAAIA,UAAJ,EAAgB;MACd,OAAOW,iBAAiB,CAACP,MAAD,EAASJ,UAAT,CAAxB;IACD;;IAED,OAAOY,UAAU,CAACR,MAAD,CAAjB;EACD;AACF;;AAED,SAASO,iBAAT,CAA2BP,MAA3B,EAAmCJ,UAAnC,EAA+C;EAC7C,MAAMa,YAAY,GAAGT,MAAM,CAACI,MAAP,CAAcM,GAAd,CAAkBC,KAAK,IAAIf,UAAU,CAACgB,IAAX,CAAgBC,OAAO,IAAIA,OAAO,CAACC,IAAR,CAAaH,KAAK,CAACI,GAAnB,CAA3B,IAAsDJ,KAAtD,GAA8D,IAAzF,EAA+FK,MAA/F,CAAsGD,GAAG,IAAIA,GAA7G,CAArB;EACA,MAAME,WAAW,GAAGT,UAAU,CAACR,MAAM,CAACI,MAAR,CAA9B;EACA,MAAMc,UAAU,GAAGD,WAAW,CAACD,MAAZ,CAAmBL,KAAK,IAAI,CAACf,UAAU,CAACgB,IAAX,CAAgBC,OAAO,IAAIA,OAAO,CAACC,IAAR,CAAaH,KAAK,CAACI,GAAnB,CAA3B,CAA7B,CAAnB;EACAG,UAAU,CAACC,MAAX,CAAkBC,KAAK,CAACH,WAAD,EAAcrB,UAAd,CAAvB,EAAkD,CAAlD,EAAqD,GAAGa,YAAxD,EAJ6C,CAI0B;;EACvET,MAAM,CAACI,MAAP,GAAgBc,UAAhB,CAL6C,CAKjB;AAC7B;;AAED,SAASV,UAAT,CAAoBJ,MAApB,EAA4B;EAC1B,OAAO,CAAC,GAAGA,MAAJ,EAAYH,IAAZ,CAAiB,CAACoB,CAAD,EAAIC,CAAJ,KAAU;IAChC,IAAID,CAAC,CAACN,GAAF,GAAQO,CAAC,CAACP,GAAd,EAAmB;MACjB,OAAO,CAAP;IACD;;IACD,IAAIO,CAAC,CAACP,GAAF,GAAQM,CAAC,CAACN,GAAd,EAAmB;MACjB,OAAO,CAAC,CAAR;IACD;;IACD,OAAO,CAAP;EACD,CARM,CAAP;AASD;;AAED,SAASK,KAAT,CAAehB,MAAf,EAAuBR,UAAvB,EAAmC;EACjC,OAAOQ,MAAM,CAACmB,SAAP,CAAiBZ,KAAK,IAAIf,UAAU,CAACgB,IAAX,CAAgBC,OAAO,IAAIA,OAAO,CAACC,IAAR,CAAaH,KAAK,CAACI,GAAnB,CAA3B,CAA1B,CAAP;AACD"}
|
package/dist/sort-tags.spec.js
CHANGED
|
@@ -8,33 +8,6 @@ var _sortTags = _interopRequireDefault(require("../src/sort-tags"));
|
|
|
8
8
|
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
14
|
-
*
|
|
15
|
-
* MARC record validators used in Melinda
|
|
16
|
-
*
|
|
17
|
-
* Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)
|
|
18
|
-
*
|
|
19
|
-
* This file is part of marc-record-validators-melinda
|
|
20
|
-
*
|
|
21
|
-
* marc-record-validators-melinda program is free software: you can redistribute it and/or modify
|
|
22
|
-
* it under the terms of the GNU Lesser General Public License as
|
|
23
|
-
* published by the Free Software Foundation, either version 3 of the
|
|
24
|
-
* License, or (at your option) any later version.
|
|
25
|
-
*
|
|
26
|
-
* marc-record-validators-melinda is distributed in the hope that it will be useful,
|
|
27
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
28
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
29
|
-
* GNU Lesser General Public License for more details.
|
|
30
|
-
*
|
|
31
|
-
* You should have received a copy of the GNU Lesser General Public License
|
|
32
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
33
|
-
*
|
|
34
|
-
* @licend The above is the entire license notice
|
|
35
|
-
* for the JavaScript code in this file.
|
|
36
|
-
*
|
|
37
|
-
*/
|
|
38
11
|
describe('sort-tags', () => {
|
|
39
12
|
it('Creates a validator', async () => {
|
|
40
13
|
const validator = await (0, _sortTags.default)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sort-tags.spec.js"],"names":["describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","record","MarcRecord","fields","tag","value","ind1","ind2","subfields","code","result","eql","valid","messages","fix"],"mappings":"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","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2020 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nimport {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/sort-tags';\n\ndescribe('sort-tags', () => {\n it('Creates a validator', async () => {\n const validator = await validatorFactory();\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n describe('#validate', () => {\n it('Finds the record valid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '100'\n },\n {\n tag: '008',\n value: 'bar'\n },\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Foo Bar'\n }\n ]\n },\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Fubar'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true, messages: []});\n });\n it('Finds the record invalid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '008',\n value: 'bar'\n },\n {\n tag: '001',\n value: '100'\n },\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Fubar'\n }\n ]\n },\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Foo Bar'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n expect(result).to.eql({valid: false, messages: ['Fields are in incorrect order']});\n });\n });\n\n describe('#fix', () => {\n it('Sorts with exclusion', async () => {\n const validator = await validatorFactory([/^5..$/u, /^7..$/u]);\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '100'\n },\n {\n tag: '530',\n value: 'bar'\n },\n {\n tag: '30',\n value: 'bar'\n },\n {\n tag: 'c',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Fubar'\n }\n ]\n },\n {\n tag: '520',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'asdassdaasdsadsasad'\n }\n ]\n },\n {\n tag: 'a',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'qweweqewqqweweqwq'\n }\n ]\n },\n {\n tag: '700',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Bar Foo'\n }\n ]\n },\n {\n tag: '711',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Foo'\n }\n ]\n },\n {\n tag: '710',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'w',\n value: 'Bar'\n }\n ]\n }\n ]\n });\n await validator.fix(record);\n expect(record.fields).to.eql([\n {\n tag: '001',\n value: '100'\n },\n {\n tag: '30',\n value: 'bar'\n },\n {\n tag: '530',\n value: 'bar'\n },\n {\n tag: '520',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'asdassdaasdsadsasad'\n }\n ]\n },\n {\n tag: '700',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Bar Foo'\n }\n ]\n },\n {\n tag: '711',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Foo'\n }\n ]\n },\n {\n tag: '710',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'w',\n value: 'Bar'\n }\n ]\n },\n {\n tag: 'a',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'qweweqewqqweweqwq'\n }\n ]\n },\n {\n tag: 'c',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Fubar'\n }\n ]\n }\n ]);\n });\n });\n});\n"],"file":"sort-tags.spec.js"}
|
|
1
|
+
{"version":3,"file":"sort-tags.spec.js","names":["describe","it","validator","to","be","an","that","has","any","keys","description","a","validate","record","MarcRecord","fields","tag","value","ind1","ind2","subfields","code","result","eql","valid","messages","fix"],"sources":["../src/sort-tags.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/sort-tags';\n\ndescribe('sort-tags', () => {\n it('Creates a validator', async () => {\n const validator = await validatorFactory();\n\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n describe('#validate', () => {\n it('Finds the record valid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '100'\n },\n {\n tag: '008',\n value: 'bar'\n },\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Foo Bar'\n }\n ]\n },\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Fubar'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n\n expect(result).to.eql({valid: true, messages: []});\n });\n it('Finds the record invalid', async () => {\n const validator = await validatorFactory();\n const record = new MarcRecord({\n fields: [\n {\n tag: '008',\n value: 'bar'\n },\n {\n tag: '001',\n value: '100'\n },\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Fubar'\n }\n ]\n },\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Foo Bar'\n }\n ]\n }\n ]\n });\n const result = await validator.validate(record);\n expect(result).to.eql({valid: false, messages: ['Fields are in incorrect order']});\n });\n });\n\n describe('#fix', () => {\n it('Sorts with exclusion', async () => {\n const validator = await validatorFactory([/^5..$/u, /^7..$/u]);\n const record = new MarcRecord({\n fields: [\n {\n tag: '001',\n value: '100'\n },\n {\n tag: '530',\n value: 'bar'\n },\n {\n tag: '30',\n value: 'bar'\n },\n {\n tag: 'c',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Fubar'\n }\n ]\n },\n {\n tag: '520',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'asdassdaasdsadsasad'\n }\n ]\n },\n {\n tag: 'a',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'qweweqewqqweweqwq'\n }\n ]\n },\n {\n tag: '700',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Bar Foo'\n }\n ]\n },\n {\n tag: '711',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Foo'\n }\n ]\n },\n {\n tag: '710',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'w',\n value: 'Bar'\n }\n ]\n }\n ]\n });\n await validator.fix(record);\n expect(record.fields).to.eql([\n {\n tag: '001',\n value: '100'\n },\n {\n tag: '30',\n value: 'bar'\n },\n {\n tag: '530',\n value: 'bar'\n },\n {\n tag: '520',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'asdassdaasdsadsasad'\n }\n ]\n },\n {\n tag: '700',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Bar Foo'\n }\n ]\n },\n {\n tag: '711',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Foo'\n }\n ]\n },\n {\n tag: '710',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'w',\n value: 'Bar'\n }\n ]\n },\n {\n tag: 'a',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'qweweqewqqweweqwq'\n }\n ]\n },\n {\n tag: 'c',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {\n code: 'a',\n value: 'Fubar'\n }\n ]\n }\n ]);\n });\n });\n});\n"],"mappings":"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"}
|
|
@@ -4,34 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = _default;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
11
|
-
*
|
|
12
|
-
* MARC record validators used in Melinda
|
|
13
|
-
*
|
|
14
|
-
* Copyright (c) 2014-2022 University Of Helsinki (The National Library Of Finland)
|
|
15
|
-
*
|
|
16
|
-
* This file is part of marc-record-validators-melinda
|
|
17
|
-
*
|
|
18
|
-
* marc-record-validators-melinda program is free software: you can redistribute it and/or modify
|
|
19
|
-
* it under the terms of the GNU Lesser General Public License as
|
|
20
|
-
* published by the Free Software Foundation, either version 3 of the
|
|
21
|
-
* License, or (at your option) any later version.
|
|
22
|
-
*
|
|
23
|
-
* marc-record-validators-melinda is distributed in the hope that it will be useful,
|
|
24
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
25
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
26
|
-
* GNU Lesser General Public License for more details.
|
|
27
|
-
*
|
|
28
|
-
* You should have received a copy of the GNU Lesser General Public License
|
|
29
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
30
|
-
*
|
|
31
|
-
* @licend The above is the entire license notice
|
|
32
|
-
* for the JavaScript code in this file.
|
|
33
|
-
*
|
|
34
|
-
*/
|
|
35
7
|
// Tag (RegExp): Pattern to match the field's tags Mandatory
|
|
36
8
|
// ind1 (RegExp): Pattern to match the field's ind1 property
|
|
37
9
|
// ind2 (RegExp): Pattern to match the field's ind2 property
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/subfield-exclusion.js"],"names":["confSpec","tag","type","mandatory","ind1","ind2","subfields","code","value","forEach","obj","fun","Object","entries","isRegExp","re","RegExp","config","Array","isArray","TypeError","configValid","description","validate","record","excludeSubfields","fix","checkMandatory","key","val","configMatchesSpec","data","spec","Error","subObj","subKey","subVal","conf","res","message","valid","confObj","found","get","element","every","confKey","confField","test","subField","excluded","elemSub","subFieldCodeFine","subFieldValueFine","push","sf","removeSubfield","length","removeField"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA,MAAMA,QAAQ,GAAG;AACfC,EAAAA,GAAG,EAAE;AAAE;AACLC,IAAAA,IAAI,EAAE,QADH;AAEHC,IAAAA,SAAS,EAAE;AAFR,GADU;AAKfC,EAAAA,IAAI,EAAE;AAAE;AACNF,IAAAA,IAAI,EAAE,QADF,CACW;;AADX,GALS;AAQfG,EAAAA,IAAI,EAAE;AAAE;AACNH,IAAAA,IAAI,EAAE,QADF,CACW;;AADX,GARS;AAWfI,EAAAA,SAAS,EAAE;AAAE;AACXC,IAAAA,IAAI,EAAE;AACJL,MAAAA,IAAI,EAAE,QADF;AAEJC,MAAAA,SAAS,EAAE;AAFP,KADG;AAKTK,IAAAA,KAAK,EAAE;AACLN,MAAAA,IAAI,EAAE;AADD,KALE;AAQTC,IAAAA,SAAS,EAAE;AARF;AAXI,CAAjB;;AAuBA,SAASM,OAAT,CAAiBC,GAAjB,EAAsBC,GAAtB,EAA2B;AACzBC,EAAAA,MAAM,CAACC,OAAP,CAAeH,GAAf,EAAoBD,OAApB,CAA4BE,GAA5B;AACD;;AAED,SAASG,QAAT,CAAkBC,EAAlB,EAAsB;AACpB,SAAOA,EAAE,YAAYC,MAArB;AACD;;AAEc,kBAAUC,MAAV,EAAkB;AAC/B,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAL,EAA4B;AAC1B,UAAM,IAAIG,SAAJ,CAAc,kCAAd,CAAN;AACD;;AAEDC,EAAAA,WAAW,CAACJ,MAAD,CAAX;AAEA,SAAO;AACLK,IAAAA,WAAW,EACT,kEAFG;AAGLC,IAAAA,QAAQ,EAAEC,MAAM,IAAIC,gBAAgB,CAACD,MAAD,EAASP,MAAT,EAAiB,KAAjB,CAH/B;AAILS,IAAAA,GAAG,EAAEF,MAAM,IAAIC,gBAAgB,CAACD,MAAD,EAASP,MAAT,EAAiB,IAAjB;AAJ1B,GAAP,CAP+B,CAc/B;AACA;;AACA,WAASI,WAAT,CAAqBJ,MAArB,EAA6B;AAC3BA,IAAAA,MAAM,CAACR,OAAP,CAAeC,GAAG,IAAI;AACpBiB,MAAAA,cAAc,CAAC3B,QAAD,EAAWU,GAAX,CAAd;AAEAD,MAAAA,OAAO,CAACC,GAAD,EAAM,CAAC,CAACkB,GAAD,EAAMC,GAAN,CAAD,KAAgB;AAC3BC,QAAAA,iBAAiB,CAACD,GAAD,EAAMD,GAAN,EAAW5B,QAAX,CAAjB;AACD,OAFM,CAAP;AAGD,KAND;AAOD,GAxB8B,CA0B/B;;;AACA,WAAS8B,iBAAT,CAA2BC,IAA3B,EAAiCH,GAAjC,EAAsCI,IAAtC,EAA4C;AAC1C;AACA,QAAI,CAACA,IAAI,CAACJ,GAAD,CAAT,EAAgB;AACd,YAAM,IAAIK,KAAJ,CAAW,iDAAgDL,GAAI,EAA/D,CAAN;AACD,KAJyC,CAM1C;;;AACA,QAAI,OAAOG,IAAP,KAAgBC,IAAI,CAACJ,GAAD,CAAJ,CAAU1B,IAA1B,IACD8B,IAAI,CAACJ,GAAD,CAAJ,CAAU1B,IAAV,KAAmB,QAAnB,IAA+B,CAACY,QAAQ,CAACiB,IAAD,CAD3C,EACoD;AAClD,YAAM,IAAIE,KAAJ,CAAW,oDAAmDL,GAAI,EAAlE,CAAN;AACD,KAVyC,CAY1C;;;AACA,QAAIA,GAAG,KAAK,WAAZ,EAAyB;AAAE;AACzBnB,MAAAA,OAAO,CAACsB,IAAD,EAAO,CAAC,GAAGG,MAAH,CAAD,KAAgB;AAC5B;AACA,YAAI,OAAOA,MAAP,KAAkB,QAAlB,IAA8B,CAAChB,KAAK,CAACC,OAAN,CAAce,MAAd,CAAnC,EAA0D;AAAE;AAC1DP,UAAAA,cAAc,CAACK,IAAI,CAACJ,GAAD,CAAL,EAAYM,MAAZ,CAAd;AAEAzB,UAAAA,OAAO,CAACyB,MAAD,EAAS,CAAC,CAACC,MAAD,EAASC,MAAT,CAAD,KAAsB;AACpCN,YAAAA,iBAAiB,CAACM,MAAD,EAASD,MAAT,EAAiBH,IAAI,CAACJ,GAAD,CAArB,CAAjB;AACD,WAFM,CAAP;AAGD,SAND,MAMO;AACL,gBAAM,IAAIR,SAAJ,CAAe,uCAAsCc,MAAO,aAA5D,CAAN;AACD;AACF,OAXM,CAAP;AAYD;AACF;;AAED,WAASP,cAAT,CAAwBK,IAAxB,EAA8BtB,GAA9B,EAAmC;AACjC;AACAD,IAAAA,OAAO,CAACuB,IAAD,EAAO,CAAC,CAACJ,GAAD,EAAMC,GAAN,CAAD,KAAgB;AAC5B,UAAIA,GAAG,CAAC1B,SAAJ,IAAiB,OAAOO,GAAG,CAACkB,GAAD,CAAV,KAAoB,WAAzC,EAAsD;AACpD,cAAM,IAAIK,KAAJ,CAAW,wDAAuDL,GAAI,EAAtE,CAAN;AACD;AACF,KAJM,CAAP;AAKD,GA/D8B,CAgE/B;AAEA;AACA;;;AACA,WAASH,gBAAT,CAA0BD,MAA1B,EAAkCa,IAAlC,EAAwCX,GAAxC,EAA6C;AAC3C,UAAMY,GAAG,GAAG;AAACC,MAAAA,OAAO,EAAE,EAAV;AAAcC,MAAAA,KAAK,EAAE;AAArB,KAAZ,CAD2C,CAG3C;;AACAH,IAAAA,IAAI,CAAC5B,OAAL,CAAagC,OAAO,IAAI;AACtB,YAAMC,KAAK,GAAGlB,MAAM,CAACmB,GAAP,CAAWF,OAAO,CAACxC,GAAnB,CAAd,CADsB,CACiB;AAEvC;;AACAyC,MAAAA,KAAK,CAACjC,OAAN,CAAcmC,OAAO,IAAI;AACvB;AACA,YAAIhC,MAAM,CAACC,OAAP,CAAe4B,OAAf,EAAwBI,KAAxB,CAA8B,CAAC,CAACC,OAAD,EAAUC,SAAV,CAAD,KAA0B;AAC1D;AACA,cAAID,OAAO,KAAK,KAAZ,IAAqBA,OAAO,KAAK,WAArC,EAAkD;AAChD,mBAAO,IAAP;AACD,WAJyD,CAM1D;;;AACA,cAAIF,OAAO,CAACE,OAAD,CAAP,IAAoBhC,QAAQ,CAACiC,SAAD,CAA5B,IAA2CA,SAAS,CAACC,IAAV,CAAeJ,OAAO,CAACE,OAAD,CAAtB,CAA/C,EAAiF;AAC/E,mBAAO,IAAP;AACD,WATyD,CAW1D;;;AACA,iBAAO,KAAP;AACD,SAbG,CAAJ,EAaI;AAAE;AACJ;AACAL,UAAAA,OAAO,CAACnC,SAAR,CAAkBG,OAAlB,CAA0BwC,QAAQ,IAAI;AACpC,kBAAMC,QAAQ,GAAG,EAAjB;AAEAN,YAAAA,OAAO,CAACtC,SAAR,CAAkBG,OAAlB,CAA0B0C,OAAO,IAAI;AACnC;AACA,oBAAMC,gBAAgB,GAAGH,QAAQ,CAAC1C,IAAT,IAAiB4C,OAAO,CAAC5C,IAAzB,IAAiC0C,QAAQ,CAAC1C,IAAT,CAAcyC,IAAd,CAAmBG,OAAO,CAAC5C,IAA3B,CAA1D;AACA,oBAAM8C,iBAAiB,GAAGJ,QAAQ,CAACzC,KAAT,IAAkB2C,OAAO,CAAC3C,KAA1B,IAAmCyC,QAAQ,CAACzC,KAAT,CAAewC,IAAf,CAAoBG,OAAO,CAAC3C,KAA5B,CAA7D;;AACA,kBAAI4C,gBAAgB,KAAK,OAAOH,QAAQ,CAACzC,KAAhB,KAA0B,WAA1B,IAAyC6C,iBAA9C,CAApB,EAAsF;AACpF,oBAAI3B,GAAJ,EAAS;AAAE;AACTwB,kBAAAA,QAAQ,CAACI,IAAT,CAAcH,OAAd,EADO,CACiB;AACzB,iBAFD,MAEO;AAAE;AACPb,kBAAAA,GAAG,CAACC,OAAJ,CAAYe,IAAZ,CAAkB,aAAYV,OAAO,CAAC3C,GAAI,KAAIkD,OAAO,CAAC5C,IAAK,oBAA3D,EADK,CAC4E;AAClF;AACF;AACF,aAXD;AAaA2C,YAAAA,QAAQ,CAACzC,OAAT,CAAiB8C,EAAE,IAAI/B,MAAM,CAACgC,cAAP,CAAsBD,EAAtB,EAA0BX,OAA1B,CAAvB,EAhBoC,CAiBpC;;AACA,gBAAIA,OAAO,CAACtC,SAAR,IAAqBsC,OAAO,CAACtC,SAAR,CAAkBmD,MAAlB,KAA6B,CAAtD,EAAyD;AAAE;AACzDjC,cAAAA,MAAM,CAACkC,WAAP,CAAmBd,OAAnB;AACD;AACF,WArBD;AAsBD;AACF,OAxCD;AAyCD,KA7CD,EAJ2C,CAmD3C;;AACA,QAAI,CAAClB,GAAL,EAAU;AACR,UAAIY,GAAG,CAACC,OAAJ,CAAYkB,MAAZ,GAAqB,CAAzB,EAA4B;AAAE;AAC5BnB,QAAAA,GAAG,CAACE,KAAJ,GAAY,KAAZ,CAD0B,CACP;AACpB;;AAED,aAAOF,GAAP;AACD,KA1D0C,CA2D3C;;AACD;AACF","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2022 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\n// Tag (RegExp): Pattern to match the field's tags Mandatory\n// ind1 (RegExp): Pattern to match the field's ind1 property\n// ind2 (RegExp): Pattern to match the field's ind2 property\n// subfields (Array<Object>): An array of objects with the following properties (Mandatory):\n// // code (RegExp): Pattern to match the subfield's code Mandatory\n// // value (RegExp): Pattern to match the subfield's value\n\n// Configuration specification\nconst confSpec = {\n tag: { // Pattern to match the field's tags\n type: 'RegExp',\n mandatory: true\n },\n ind1: { // Pattern to match the field's ind1 property.\n type: 'RegExp' // Array<Indicator>\n },\n ind2: { // Pattern to match the field's ind2 property.\n type: 'RegExp' // Array<Indicator>\n },\n subfields: { // An array of objects with the following properties\n code: {\n type: 'RegExp',\n mandatory: true\n },\n value: {\n type: 'RegExp'\n },\n mandatory: true\n }\n};\n\nfunction forEach(obj, fun) {\n Object.entries(obj).forEach(fun);\n}\n\nfunction isRegExp(re) {\n return re instanceof RegExp;\n}\n\nexport default function (config) {\n if (!Array.isArray(config)) {\n throw new TypeError('Configuration array not provided');\n }\n\n configValid(config);\n\n return {\n description:\n 'Checks that the record does not contain the configured subfields',\n validate: record => excludeSubfields(record, config, false),\n fix: record => excludeSubfields(record, config, true)\n };\n\n /// /////////////////////////////////////////\n // These check that configuration is valid\n function configValid(config) {\n config.forEach(obj => {\n checkMandatory(confSpec, obj);\n\n forEach(obj, ([key, val]) => {\n configMatchesSpec(val, key, confSpec);\n });\n });\n }\n\n // Recursive validator\n function configMatchesSpec(data, key, spec) {\n // Field not found in configuration spec\n if (!spec[key]) {\n throw new Error(`Configuration not valid - unidentified value: ${key}`);\n }\n\n // If configuration type does not match type in configuration spec\n if (typeof data !== spec[key].type &&\n (spec[key].type === 'RegExp' && !isRegExp(data))) {\n throw new Error(`Configuration not valid - invalid data type for: ${key}`);\n }\n\n // Check subfields recursively\n if (key === 'subfields') { // eslint-disable-line functional/no-conditional-statement\n forEach(data, ([, subObj]) => {\n // Console.log(\"subObj: \", subObj, \" type: \", typeof subObj, !(Array.isArray(subObj)))\n if (typeof subObj === 'object' && !Array.isArray(subObj)) { // eslint-disable-line functional/no-conditional-statement\n checkMandatory(spec[key], subObj);\n\n forEach(subObj, ([subKey, subVal]) => {\n configMatchesSpec(subVal, subKey, spec[key]);\n });\n } else {\n throw new TypeError(`Configuration not valid - subfield: ${subObj} not object`);\n }\n });\n }\n }\n\n function checkMandatory(spec, obj) {\n // Check if all mandatory fields are present\n forEach(spec, ([key, val]) => {\n if (val.mandatory && typeof obj[key] === 'undefined') {\n throw new Error(`Configuration not valid - missing mandatory element: ${key}`);\n }\n });\n }\n /// /////////////////////////////////////////\n\n /// /////////////////////////////////////////\n // These check that record is valid\n function excludeSubfields(record, conf, fix) {\n const res = {message: [], valid: true};\n\n // Parse trough every element of config array\n conf.forEach(confObj => {\n const found = record.get(confObj.tag); // Find matching record fields based on mandatory tag\n\n // Check if some of found record fields matches all configuration fields\n found.forEach(element => {\n // Compare each found element against each configuration object\n if (Object.entries(confObj).every(([confKey, confField]) => {\n // Tag already checked at .get(), subfields later\n if (confKey === 'tag' || confKey === 'subfields') {\n return true;\n }\n\n // Configuration object is RegExp and record value matches it\n if (element[confKey] && isRegExp(confField) && confField.test(element[confKey])) {\n return true;\n }\n\n // Configuration object not found from found element\n return false;\n })) { // eslint-disable-line functional/no-conditional-statement\n // All configuration fields match, check if some subfields should be excluded.\n confObj.subfields.forEach(subField => {\n const excluded = [];\n\n element.subfields.forEach(elemSub => {\n // Check if subfield matches configuration spec\n const subFieldCodeFine = subField.code && elemSub.code && subField.code.test(elemSub.code);\n const subFieldValueFine = subField.value && elemSub.value && subField.value.test(elemSub.value);\n if (subFieldCodeFine && (typeof subField.value === 'undefined' || subFieldValueFine)) {\n if (fix) { // eslint-disable-line functional/no-conditional-statement\n excluded.push(elemSub); // eslint-disable-line functional/immutable-data\n } else { // eslint-disable-line functional/no-conditional-statement\n res.message.push(`Subfield $${element.tag}$$${elemSub.code}should be excluded`); // eslint-disable-line functional/immutable-data\n }\n }\n });\n\n excluded.forEach(sf => record.removeSubfield(sf, element));\n // If no subfields remains, the whole field will be removed as well:\n if (element.subfields && element.subfields.length === 0) { // eslint-disable-line functional/no-conditional-statement\n record.removeField(element);\n }\n });\n }\n });\n });\n\n // Fix does not send response\n if (!fix) {\n if (res.message.length > 0) { // eslint-disable-line functional/no-conditional-statement\n res.valid = false; // eslint-disable-line functional/immutable-data\n }\n\n return res;\n }\n // Res.fix.push('Field $' + element.tag + ' excluded');\n }\n}\n"],"file":"subfield-exclusion.js"}
|
|
1
|
+
{"version":3,"file":"subfield-exclusion.js","names":["confSpec","tag","type","mandatory","ind1","ind2","subfields","code","value","forEach","obj","fun","Object","entries","isRegExp","re","RegExp","config","Array","isArray","TypeError","configValid","description","validate","record","excludeSubfields","fix","checkMandatory","key","val","configMatchesSpec","data","spec","Error","subObj","subKey","subVal","conf","res","message","valid","confObj","found","get","element","every","confKey","confField","test","subField","excluded","elemSub","subFieldCodeFine","subFieldValueFine","push","sf","removeSubfield","length","removeField"],"sources":["../src/subfield-exclusion.js"],"sourcesContent":["// Tag (RegExp): Pattern to match the field's tags Mandatory\n// ind1 (RegExp): Pattern to match the field's ind1 property\n// ind2 (RegExp): Pattern to match the field's ind2 property\n// subfields (Array<Object>): An array of objects with the following properties (Mandatory):\n// // code (RegExp): Pattern to match the subfield's code Mandatory\n// // value (RegExp): Pattern to match the subfield's value\n\n// Configuration specification\nconst confSpec = {\n tag: { // Pattern to match the field's tags\n type: 'RegExp',\n mandatory: true\n },\n ind1: { // Pattern to match the field's ind1 property.\n type: 'RegExp' // Array<Indicator>\n },\n ind2: { // Pattern to match the field's ind2 property.\n type: 'RegExp' // Array<Indicator>\n },\n subfields: { // An array of objects with the following properties\n code: {\n type: 'RegExp',\n mandatory: true\n },\n value: {\n type: 'RegExp'\n },\n mandatory: true\n }\n};\n\nfunction forEach(obj, fun) {\n Object.entries(obj).forEach(fun);\n}\n\nfunction isRegExp(re) {\n return re instanceof RegExp;\n}\n\nexport default function (config) {\n if (!Array.isArray(config)) {\n throw new TypeError('Configuration array not provided');\n }\n\n configValid(config);\n\n return {\n description:\n 'Checks that the record does not contain the configured subfields',\n validate: record => excludeSubfields(record, config, false),\n fix: record => excludeSubfields(record, config, true)\n };\n\n /// /////////////////////////////////////////\n // These check that configuration is valid\n function configValid(config) {\n config.forEach(obj => {\n checkMandatory(confSpec, obj);\n\n forEach(obj, ([key, val]) => {\n configMatchesSpec(val, key, confSpec);\n });\n });\n }\n\n // Recursive validator\n function configMatchesSpec(data, key, spec) {\n // Field not found in configuration spec\n if (!spec[key]) {\n throw new Error(`Configuration not valid - unidentified value: ${key}`);\n }\n\n // If configuration type does not match type in configuration spec\n if (typeof data !== spec[key].type &&\n (spec[key].type === 'RegExp' && !isRegExp(data))) {\n throw new Error(`Configuration not valid - invalid data type for: ${key}`);\n }\n\n // Check subfields recursively\n if (key === 'subfields') { // eslint-disable-line functional/no-conditional-statement\n forEach(data, ([, subObj]) => {\n // Console.log(\"subObj: \", subObj, \" type: \", typeof subObj, !(Array.isArray(subObj)))\n if (typeof subObj === 'object' && !Array.isArray(subObj)) { // eslint-disable-line functional/no-conditional-statement\n checkMandatory(spec[key], subObj);\n\n forEach(subObj, ([subKey, subVal]) => {\n configMatchesSpec(subVal, subKey, spec[key]);\n });\n } else {\n throw new TypeError(`Configuration not valid - subfield: ${subObj} not object`);\n }\n });\n }\n }\n\n function checkMandatory(spec, obj) {\n // Check if all mandatory fields are present\n forEach(spec, ([key, val]) => {\n if (val.mandatory && typeof obj[key] === 'undefined') {\n throw new Error(`Configuration not valid - missing mandatory element: ${key}`);\n }\n });\n }\n /// /////////////////////////////////////////\n\n /// /////////////////////////////////////////\n // These check that record is valid\n function excludeSubfields(record, conf, fix) {\n const res = {message: [], valid: true};\n\n // Parse trough every element of config array\n conf.forEach(confObj => {\n const found = record.get(confObj.tag); // Find matching record fields based on mandatory tag\n\n // Check if some of found record fields matches all configuration fields\n found.forEach(element => {\n // Compare each found element against each configuration object\n if (Object.entries(confObj).every(([confKey, confField]) => {\n // Tag already checked at .get(), subfields later\n if (confKey === 'tag' || confKey === 'subfields') {\n return true;\n }\n\n // Configuration object is RegExp and record value matches it\n if (element[confKey] && isRegExp(confField) && confField.test(element[confKey])) {\n return true;\n }\n\n // Configuration object not found from found element\n return false;\n })) { // eslint-disable-line functional/no-conditional-statement\n // All configuration fields match, check if some subfields should be excluded.\n confObj.subfields.forEach(subField => {\n const excluded = [];\n\n element.subfields.forEach(elemSub => {\n // Check if subfield matches configuration spec\n const subFieldCodeFine = subField.code && elemSub.code && subField.code.test(elemSub.code);\n const subFieldValueFine = subField.value && elemSub.value && subField.value.test(elemSub.value);\n if (subFieldCodeFine && (typeof subField.value === 'undefined' || subFieldValueFine)) {\n if (fix) { // eslint-disable-line functional/no-conditional-statement\n excluded.push(elemSub); // eslint-disable-line functional/immutable-data\n } else { // eslint-disable-line functional/no-conditional-statement\n res.message.push(`Subfield $${element.tag}$$${elemSub.code}should be excluded`); // eslint-disable-line functional/immutable-data\n }\n }\n });\n\n excluded.forEach(sf => record.removeSubfield(sf, element));\n // If no subfields remains, the whole field will be removed as well:\n if (element.subfields && element.subfields.length === 0) { // eslint-disable-line functional/no-conditional-statement\n record.removeField(element);\n }\n });\n }\n });\n });\n\n // Fix does not send response\n if (!fix) {\n if (res.message.length > 0) { // eslint-disable-line functional/no-conditional-statement\n res.valid = false; // eslint-disable-line functional/immutable-data\n }\n\n return res;\n }\n // Res.fix.push('Field $' + element.tag + ' excluded');\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA,MAAMA,QAAQ,GAAG;EACfC,GAAG,EAAE;IAAE;IACLC,IAAI,EAAE,QADH;IAEHC,SAAS,EAAE;EAFR,CADU;EAKfC,IAAI,EAAE;IAAE;IACNF,IAAI,EAAE,QADF,CACW;;EADX,CALS;EAQfG,IAAI,EAAE;IAAE;IACNH,IAAI,EAAE,QADF,CACW;;EADX,CARS;EAWfI,SAAS,EAAE;IAAE;IACXC,IAAI,EAAE;MACJL,IAAI,EAAE,QADF;MAEJC,SAAS,EAAE;IAFP,CADG;IAKTK,KAAK,EAAE;MACLN,IAAI,EAAE;IADD,CALE;IAQTC,SAAS,EAAE;EARF;AAXI,CAAjB;;AAuBA,SAASM,OAAT,CAAiBC,GAAjB,EAAsBC,GAAtB,EAA2B;EACzBC,MAAM,CAACC,OAAP,CAAeH,GAAf,EAAoBD,OAApB,CAA4BE,GAA5B;AACD;;AAED,SAASG,QAAT,CAAkBC,EAAlB,EAAsB;EACpB,OAAOA,EAAE,YAAYC,MAArB;AACD;;AAEc,kBAAUC,MAAV,EAAkB;EAC/B,IAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAL,EAA4B;IAC1B,MAAM,IAAIG,SAAJ,CAAc,kCAAd,CAAN;EACD;;EAEDC,WAAW,CAACJ,MAAD,CAAX;EAEA,OAAO;IACLK,WAAW,EACT,kEAFG;IAGLC,QAAQ,EAAEC,MAAM,IAAIC,gBAAgB,CAACD,MAAD,EAASP,MAAT,EAAiB,KAAjB,CAH/B;IAILS,GAAG,EAAEF,MAAM,IAAIC,gBAAgB,CAACD,MAAD,EAASP,MAAT,EAAiB,IAAjB;EAJ1B,CAAP,CAP+B,CAc/B;EACA;;EACA,SAASI,WAAT,CAAqBJ,MAArB,EAA6B;IAC3BA,MAAM,CAACR,OAAP,CAAeC,GAAG,IAAI;MACpBiB,cAAc,CAAC3B,QAAD,EAAWU,GAAX,CAAd;MAEAD,OAAO,CAACC,GAAD,EAAM,CAAC,CAACkB,GAAD,EAAMC,GAAN,CAAD,KAAgB;QAC3BC,iBAAiB,CAACD,GAAD,EAAMD,GAAN,EAAW5B,QAAX,CAAjB;MACD,CAFM,CAAP;IAGD,CAND;EAOD,CAxB8B,CA0B/B;;;EACA,SAAS8B,iBAAT,CAA2BC,IAA3B,EAAiCH,GAAjC,EAAsCI,IAAtC,EAA4C;IAC1C;IACA,IAAI,CAACA,IAAI,CAACJ,GAAD,CAAT,EAAgB;MACd,MAAM,IAAIK,KAAJ,CAAW,iDAAgDL,GAAI,EAA/D,CAAN;IACD,CAJyC,CAM1C;;;IACA,IAAI,OAAOG,IAAP,KAAgBC,IAAI,CAACJ,GAAD,CAAJ,CAAU1B,IAA1B,IACD8B,IAAI,CAACJ,GAAD,CAAJ,CAAU1B,IAAV,KAAmB,QAAnB,IAA+B,CAACY,QAAQ,CAACiB,IAAD,CAD3C,EACoD;MAClD,MAAM,IAAIE,KAAJ,CAAW,oDAAmDL,GAAI,EAAlE,CAAN;IACD,CAVyC,CAY1C;;;IACA,IAAIA,GAAG,KAAK,WAAZ,EAAyB;MAAE;MACzBnB,OAAO,CAACsB,IAAD,EAAO,CAAC,GAAGG,MAAH,CAAD,KAAgB;QAC5B;QACA,IAAI,OAAOA,MAAP,KAAkB,QAAlB,IAA8B,CAAChB,KAAK,CAACC,OAAN,CAAce,MAAd,CAAnC,EAA0D;UAAE;UAC1DP,cAAc,CAACK,IAAI,CAACJ,GAAD,CAAL,EAAYM,MAAZ,CAAd;UAEAzB,OAAO,CAACyB,MAAD,EAAS,CAAC,CAACC,MAAD,EAASC,MAAT,CAAD,KAAsB;YACpCN,iBAAiB,CAACM,MAAD,EAASD,MAAT,EAAiBH,IAAI,CAACJ,GAAD,CAArB,CAAjB;UACD,CAFM,CAAP;QAGD,CAND,MAMO;UACL,MAAM,IAAIR,SAAJ,CAAe,uCAAsCc,MAAO,aAA5D,CAAN;QACD;MACF,CAXM,CAAP;IAYD;EACF;;EAED,SAASP,cAAT,CAAwBK,IAAxB,EAA8BtB,GAA9B,EAAmC;IACjC;IACAD,OAAO,CAACuB,IAAD,EAAO,CAAC,CAACJ,GAAD,EAAMC,GAAN,CAAD,KAAgB;MAC5B,IAAIA,GAAG,CAAC1B,SAAJ,IAAiB,OAAOO,GAAG,CAACkB,GAAD,CAAV,KAAoB,WAAzC,EAAsD;QACpD,MAAM,IAAIK,KAAJ,CAAW,wDAAuDL,GAAI,EAAtE,CAAN;MACD;IACF,CAJM,CAAP;EAKD,CA/D8B,CAgE/B;EAEA;EACA;;;EACA,SAASH,gBAAT,CAA0BD,MAA1B,EAAkCa,IAAlC,EAAwCX,GAAxC,EAA6C;IAC3C,MAAMY,GAAG,GAAG;MAACC,OAAO,EAAE,EAAV;MAAcC,KAAK,EAAE;IAArB,CAAZ,CAD2C,CAG3C;;IACAH,IAAI,CAAC5B,OAAL,CAAagC,OAAO,IAAI;MACtB,MAAMC,KAAK,GAAGlB,MAAM,CAACmB,GAAP,CAAWF,OAAO,CAACxC,GAAnB,CAAd,CADsB,CACiB;MAEvC;;MACAyC,KAAK,CAACjC,OAAN,CAAcmC,OAAO,IAAI;QACvB;QACA,IAAIhC,MAAM,CAACC,OAAP,CAAe4B,OAAf,EAAwBI,KAAxB,CAA8B,CAAC,CAACC,OAAD,EAAUC,SAAV,CAAD,KAA0B;UAC1D;UACA,IAAID,OAAO,KAAK,KAAZ,IAAqBA,OAAO,KAAK,WAArC,EAAkD;YAChD,OAAO,IAAP;UACD,CAJyD,CAM1D;;;UACA,IAAIF,OAAO,CAACE,OAAD,CAAP,IAAoBhC,QAAQ,CAACiC,SAAD,CAA5B,IAA2CA,SAAS,CAACC,IAAV,CAAeJ,OAAO,CAACE,OAAD,CAAtB,CAA/C,EAAiF;YAC/E,OAAO,IAAP;UACD,CATyD,CAW1D;;;UACA,OAAO,KAAP;QACD,CAbG,CAAJ,EAaI;UAAE;UACJ;UACAL,OAAO,CAACnC,SAAR,CAAkBG,OAAlB,CAA0BwC,QAAQ,IAAI;YACpC,MAAMC,QAAQ,GAAG,EAAjB;YAEAN,OAAO,CAACtC,SAAR,CAAkBG,OAAlB,CAA0B0C,OAAO,IAAI;cACnC;cACA,MAAMC,gBAAgB,GAAGH,QAAQ,CAAC1C,IAAT,IAAiB4C,OAAO,CAAC5C,IAAzB,IAAiC0C,QAAQ,CAAC1C,IAAT,CAAcyC,IAAd,CAAmBG,OAAO,CAAC5C,IAA3B,CAA1D;cACA,MAAM8C,iBAAiB,GAAGJ,QAAQ,CAACzC,KAAT,IAAkB2C,OAAO,CAAC3C,KAA1B,IAAmCyC,QAAQ,CAACzC,KAAT,CAAewC,IAAf,CAAoBG,OAAO,CAAC3C,KAA5B,CAA7D;;cACA,IAAI4C,gBAAgB,KAAK,OAAOH,QAAQ,CAACzC,KAAhB,KAA0B,WAA1B,IAAyC6C,iBAA9C,CAApB,EAAsF;gBACpF,IAAI3B,GAAJ,EAAS;kBAAE;kBACTwB,QAAQ,CAACI,IAAT,CAAcH,OAAd,EADO,CACiB;gBACzB,CAFD,MAEO;kBAAE;kBACPb,GAAG,CAACC,OAAJ,CAAYe,IAAZ,CAAkB,aAAYV,OAAO,CAAC3C,GAAI,KAAIkD,OAAO,CAAC5C,IAAK,oBAA3D,EADK,CAC4E;gBAClF;cACF;YACF,CAXD;YAaA2C,QAAQ,CAACzC,OAAT,CAAiB8C,EAAE,IAAI/B,MAAM,CAACgC,cAAP,CAAsBD,EAAtB,EAA0BX,OAA1B,CAAvB,EAhBoC,CAiBpC;;YACA,IAAIA,OAAO,CAACtC,SAAR,IAAqBsC,OAAO,CAACtC,SAAR,CAAkBmD,MAAlB,KAA6B,CAAtD,EAAyD;cAAE;cACzDjC,MAAM,CAACkC,WAAP,CAAmBd,OAAnB;YACD;UACF,CArBD;QAsBD;MACF,CAxCD;IAyCD,CA7CD,EAJ2C,CAmD3C;;IACA,IAAI,CAAClB,GAAL,EAAU;MACR,IAAIY,GAAG,CAACC,OAAJ,CAAYkB,MAAZ,GAAqB,CAAzB,EAA4B;QAAE;QAC5BnB,GAAG,CAACE,KAAJ,GAAY,KAAZ,CAD0B,CACP;MACpB;;MAED,OAAOF,GAAP;IACD,CA1D0C,CA2D3C;;EACD;AACF"}
|
|
@@ -8,33 +8,6 @@ var _subfieldExclusion = _interopRequireDefault(require("../src/subfield-exclusi
|
|
|
8
8
|
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
*
|
|
13
|
-
* @licstart The following is the entire license notice for the JavaScript code in this file.
|
|
14
|
-
*
|
|
15
|
-
* MARC record validators used in Melinda
|
|
16
|
-
*
|
|
17
|
-
* Copyright (c) 2014-2022 University Of Helsinki (The National Library Of Finland)
|
|
18
|
-
*
|
|
19
|
-
* This file is part of marc-record-validators-melinda
|
|
20
|
-
*
|
|
21
|
-
* marc-record-validators-melinda program is free software: you can redistribute it and/or modify
|
|
22
|
-
* it under the terms of the GNU Lesser General Public License as
|
|
23
|
-
* published by the Free Software Foundation, either version 3 of the
|
|
24
|
-
* License, or (at your option) any later version.
|
|
25
|
-
*
|
|
26
|
-
* marc-record-validators-melinda is distributed in the hope that it will be useful,
|
|
27
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
28
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
29
|
-
* GNU Lesser General Public License for more details.
|
|
30
|
-
*
|
|
31
|
-
* You should have received a copy of the GNU Lesser General Public License
|
|
32
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
33
|
-
*
|
|
34
|
-
* @licend The above is the entire license notice
|
|
35
|
-
* for the JavaScript code in this file.
|
|
36
|
-
*
|
|
37
|
-
*/
|
|
38
11
|
//import chaiAsPromised from 'chai-as-promised';
|
|
39
12
|
//chai.use(chaiAsPromised);
|
|
40
13
|
// Factory validation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/subfield-exclusion.spec.js"],"names":["describe","it","config","tag","subfields","code","validator","to","be","an","that","has","any","keys","description","a","validate","ind2","value","error","with","property","unidentified","recordValid","MarcRecord","leader","fields","ind1","recordInvalid","recordInvalidFixed","result","eql","valid","message","fix","equalsTo","recordOriginal","recordModified","configInd","recordIndInvalid","recordIndInvalidFixed"],"mappings":"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","sourcesContent":["/**\n *\n * @licstart The following is the entire license notice for the JavaScript code in this file.\n *\n * MARC record validators used in Melinda\n *\n * Copyright (c) 2014-2022 University Of Helsinki (The National Library Of Finland)\n *\n * This file is part of marc-record-validators-melinda\n *\n * marc-record-validators-melinda program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * marc-record-validators-melinda is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n * @licend The above is the entire license notice\n * for the JavaScript code in this file.\n *\n */\n\n\nimport {expect} from 'chai';\n//import chaiAsPromised from 'chai-as-promised';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/subfield-exclusion';\n\n//chai.use(chaiAsPromised);\n\n// Factory validation\ndescribe('subfield-exclusion', () => {\n describe('#validate: Check configuration validation', () => {\n it('Creates a validator from simple config', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: /4/u}]\n }\n ];\n\n const validator = await validatorFactory(config);\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n it('Creates a validator from complex config', async () => {\n const config = [\n {\n tag: /^210$/u,\n ind2: /\\s/u,\n subfields: [\n {\n code: /2/u,\n value: /.+/u\n }\n ]\n }\n ];\n\n const validator = await validatorFactory(config);\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n it('Fails to create a validator from invalid config - subfields missing', () => {\n const config = [\n {\n tag: /^210$/u\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: subfields');\n }\n });\n\n it('Fails to create a validator from invalid config - tag', () => {\n const config = [\n {\n tag: '500',\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: tag');\n }\n });\n\n it('Fails to create a validator from invalid config - missing array', () => {\n const config = {\n tag: '500',\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n };\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration array not provided');\n }\n });\n\n it('Fails to create a validator from invalid config - code', () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: 9, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: code');\n }\n });\n\n it('Fails to create a validator from invalid config - value', () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: /9/u, value: 'Fenni'}]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: value');\n }\n });\n\n\n it('Fails to create a validator from invalid config - missing mandatory: tag', () => {\n const config = [\n {\n value: /^500$/u,\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: tag');\n }\n });\n\n it('Fails to create a validator from invalid config - subfield not object: array', () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [\n ['/9/', '/^(?!FENNI<KEEP>).*$/'],\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfield: /9/,/^(?!FENNI<KEEP>).*$/ not object');\n }\n });\n\n it('Fails to create a validator from invalid config - subfield not object: string', () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [\n '/9/',\n '/^(?!FENNI<KEEP>).*$/',\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfield: /9/ not object');\n }\n });\n\n it('Fails to create a validator from invalid config - missing mandatory: subfield.code', () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [\n {code: /9/u, value: /^(?!FENNI<KEEP>).*$/u},\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: code');\n }\n });\n\n it('Fails to create a validator from invalid config - unidentified field: unidentified', () => {\n const config = [\n {\n tag: /^500$/u,\n unidentified: /^500$/u,\n subfields: [\n {code: /9/u, value: /^(?!FENNI<KEEP>).*$/u},\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - unidentified value: unidentified');\n }\n });\n });\n\n // Simple configuration https://github.com/NatLibFi/marc-record-validators-melinda/issues/46\n describe('#validate: Simple configuration (spec)', () => {\n const config = [\n {\n tag: /^100$/u,\n subfields: [{code: /4/u}]\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Foo Bar'}]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar'},\n {code: '4', value: 'att'}\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Foo Bar'}]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n expect(result).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalid);\n expect(result).to.eql({valid: false, message: ['Subfield $100$$4should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n\n describe('#validate: Remove only subfield -> remove field as well', () => {\n const config = [\n {\n tag: /^041$/u,\n subfields: [{code: /^[ad]$/u, value: /^zxx$/u}]\n }\n ];\n\n const recordOriginal = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '041',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'zxx'}]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordModified = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record with 041$a zxx invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordOriginal);\n expect(result).to.eql({valid: false, message: ['Subfield $041$$ashould be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordOriginal);\n expect(recordOriginal.equalsTo(recordModified)).to.eql(true);\n });\n });\n\n // Complex configuration https://github.com/NatLibFi/marc-record-validators-melinda/issues/46\n describe('#validate: Complex configuration (spec)', () => {\n const config = [\n {\n tag: /^210$/u,\n ind2: /\\s/u,\n subfields: [{code: /2/u, value: /.+/u}]\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '210',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Foo'}]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '210',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo'},\n {code: '2', value: 'dnlm'}\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '210',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Foo'}]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n expect(result).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalid);\n expect(result).to.eql({valid: false, message: ['Subfield $210$$2should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n // More special cases to increase coverage\n describe('#validate: Custom configuration', () => {\n const configInd = [\n {\n tag: /^500$/u,\n ind1: /^8$/u,\n ind2: /^4$/u,\n subfields: [{code: /2/u, value: /.+/u}]\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '210',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Foo'}]\n }, {\n tag: '500',\n subfields: [\n {code: 'a', value: 'Foo'},\n {code: '2', value: 'dnlm'}\n ]\n }\n ]\n });\n\n const recordIndInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: '8',\n ind2: '4',\n subfields: [\n {code: 'a', value: 'Foo'},\n {code: '2', value: 'dnlm'}\n ]\n }\n ]\n });\n\n const recordIndInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: '8',\n ind2: '4',\n subfields: [{code: 'a', value: 'Foo'}]\n }\n ]\n });\n\n it('Finds the record valid - Ind1&Ind2', async () => {\n const validator = await validatorFactory(configInd);\n const result = await validator.validate(recordValid);\n expect(result).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid - Ind', async () => {\n const validator = await validatorFactory(configInd);\n const result = await validator.validate(recordIndInvalid);\n expect(result).to.eql({valid: false, message: ['Subfield $500$$2should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(configInd);\n await validator.fix(recordIndInvalid);\n expect(recordIndInvalid.equalsTo(recordIndInvalidFixed)).to.eql(true);\n });\n });\n});\n"],"file":"subfield-exclusion.spec.js"}
|
|
1
|
+
{"version":3,"file":"subfield-exclusion.spec.js","names":["describe","it","config","tag","subfields","code","validator","to","be","an","that","has","any","keys","description","a","validate","ind2","value","error","with","property","unidentified","recordValid","MarcRecord","leader","fields","ind1","recordInvalid","recordInvalidFixed","result","eql","valid","message","fix","equalsTo","recordOriginal","recordModified","configInd","recordIndInvalid","recordIndInvalidFixed"],"sources":["../src/subfield-exclusion.spec.js"],"sourcesContent":["import {expect} from 'chai';\n//import chaiAsPromised from 'chai-as-promised';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport validatorFactory from '../src/subfield-exclusion';\n\n//chai.use(chaiAsPromised);\n\n// Factory validation\ndescribe('subfield-exclusion', () => {\n describe('#validate: Check configuration validation', () => {\n it('Creates a validator from simple config', async () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: /4/u}]\n }\n ];\n\n const validator = await validatorFactory(config);\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n it('Creates a validator from complex config', async () => {\n const config = [\n {\n tag: /^210$/u,\n ind2: /\\s/u,\n subfields: [\n {\n code: /2/u,\n value: /.+/u\n }\n ]\n }\n ];\n\n const validator = await validatorFactory(config);\n expect(validator)\n .to.be.an('object')\n .that.has.any.keys('description', 'validate');\n\n expect(validator.description).to.be.a('string');\n expect(validator.validate).to.be.a('function');\n });\n\n it('Fails to create a validator from invalid config - subfields missing', () => {\n const config = [\n {\n tag: /^210$/u\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: subfields');\n }\n });\n\n it('Fails to create a validator from invalid config - tag', () => {\n const config = [\n {\n tag: '500',\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: tag');\n }\n });\n\n it('Fails to create a validator from invalid config - missing array', () => {\n const config = {\n tag: '500',\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n };\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration array not provided');\n }\n });\n\n it('Fails to create a validator from invalid config - code', () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: 9, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: code');\n }\n });\n\n it('Fails to create a validator from invalid config - value', () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [{code: /9/u, value: 'Fenni'}]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - invalid data type for: value');\n }\n });\n\n\n it('Fails to create a validator from invalid config - missing mandatory: tag', () => {\n const config = [\n {\n value: /^500$/u,\n subfields: [{code: /9/u, value: /^(?!FENNI<KEEP>).*$/u}]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: tag');\n }\n });\n\n it('Fails to create a validator from invalid config - subfield not object: array', () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [\n ['/9/', '/^(?!FENNI<KEEP>).*$/'],\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfield: /9/,/^(?!FENNI<KEEP>).*$/ not object');\n }\n });\n\n it('Fails to create a validator from invalid config - subfield not object: string', () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [\n '/9/',\n '/^(?!FENNI<KEEP>).*$/',\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - subfield: /9/ not object');\n }\n });\n\n it('Fails to create a validator from invalid config - missing mandatory: subfield.code', () => {\n const config = [\n {\n tag: /^500$/u,\n subfields: [\n {code: /9/u, value: /^(?!FENNI<KEEP>).*$/u},\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - missing mandatory element: code');\n }\n });\n\n it('Fails to create a validator from invalid config - unidentified field: unidentified', () => {\n const config = [\n {\n tag: /^500$/u,\n unidentified: /^500$/u,\n subfields: [\n {code: /9/u, value: /^(?!FENNI<KEEP>).*$/u},\n {value: /^(?!FENNI<KEEP>).*$/u}\n ]\n }\n ];\n\n try {\n validatorFactory(config);\n } catch (error) {\n expect(error).to.be.an('error').with.property('message', 'Configuration not valid - unidentified value: unidentified');\n }\n });\n });\n\n // Simple configuration https://github.com/NatLibFi/marc-record-validators-melinda/issues/46\n describe('#validate: Simple configuration (spec)', () => {\n const config = [\n {\n tag: /^100$/u,\n subfields: [{code: /4/u}]\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Foo Bar'}]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo Bar'},\n {code: '4', value: 'att'}\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '100',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Foo Bar'}]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n expect(result).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalid);\n expect(result).to.eql({valid: false, message: ['Subfield $100$$4should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n\n describe('#validate: Remove only subfield -> remove field as well', () => {\n const config = [\n {\n tag: /^041$/u,\n subfields: [{code: /^[ad]$/u, value: /^zxx$/u}]\n }\n ];\n\n const recordOriginal = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '041',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'zxx'}]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordModified = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record with 041$a zxx invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordOriginal);\n expect(result).to.eql({valid: false, message: ['Subfield $041$$ashould be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordOriginal);\n expect(recordOriginal.equalsTo(recordModified)).to.eql(true);\n });\n });\n\n // Complex configuration https://github.com/NatLibFi/marc-record-validators-melinda/issues/46\n describe('#validate: Complex configuration (spec)', () => {\n const config = [\n {\n tag: /^210$/u,\n ind2: /\\s/u,\n subfields: [{code: /2/u, value: /.+/u}]\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '210',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Foo'}]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '210',\n ind1: ' ',\n ind2: ' ',\n subfields: [\n {code: 'a', value: 'Foo'},\n {code: '2', value: 'dnlm'}\n ]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n const recordInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '210',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Foo'}]\n }, {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }\n ]\n });\n\n it('Finds the record valid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordValid);\n expect(result).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid (spec)', async () => {\n const validator = await validatorFactory(config);\n const result = await validator.validate(recordInvalid);\n expect(result).to.eql({valid: false, message: ['Subfield $210$$2should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(config);\n await validator.fix(recordInvalid);\n expect(recordInvalid.equalsTo(recordInvalidFixed)).to.eql(true);\n });\n });\n\n // More special cases to increase coverage\n describe('#validate: Custom configuration', () => {\n const configInd = [\n {\n tag: /^500$/u,\n ind1: /^8$/u,\n ind2: /^4$/u,\n subfields: [{code: /2/u, value: /.+/u}]\n }\n ];\n\n const recordValid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '210',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Foo'}]\n }, {\n tag: '500',\n subfields: [\n {code: 'a', value: 'Foo'},\n {code: '2', value: 'dnlm'}\n ]\n }\n ]\n });\n\n const recordIndInvalid = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: '8',\n ind2: '4',\n subfields: [\n {code: 'a', value: 'Foo'},\n {code: '2', value: 'dnlm'}\n ]\n }\n ]\n });\n\n const recordIndInvalidFixed = new MarcRecord({\n leader: 'foo',\n fields: [\n {\n tag: '245',\n ind1: ' ',\n ind2: ' ',\n subfields: [{code: 'a', value: 'Fubar'}]\n }, {\n tag: '500',\n ind1: '8',\n ind2: '4',\n subfields: [{code: 'a', value: 'Foo'}]\n }\n ]\n });\n\n it('Finds the record valid - Ind1&Ind2', async () => {\n const validator = await validatorFactory(configInd);\n const result = await validator.validate(recordValid);\n expect(result).to.eql({valid: true, message: []});\n });\n\n it('Finds the record invalid - Ind', async () => {\n const validator = await validatorFactory(configInd);\n const result = await validator.validate(recordIndInvalid);\n expect(result).to.eql({valid: false, message: ['Subfield $500$$2should be excluded']});\n });\n\n it('Repairs invalid record', async () => {\n const validator = await validatorFactory(configInd);\n await validator.fix(recordIndInvalid);\n expect(recordIndInvalid.equalsTo(recordIndInvalidFixed)).to.eql(true);\n });\n });\n});\n"],"mappings":"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"}
|