@natlibfi/melinda-commons 13.2.0-alpha.1 → 13.2.0-alpha.2

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/dist/utils.js CHANGED
@@ -10,6 +10,7 @@ exports.getRecordStandardIdentifiers = getRecordStandardIdentifiers;
10
10
  exports.getRecordTitle = getRecordTitle;
11
11
  exports.isComponentRecord = isComponentRecord;
12
12
  exports.isDeletedRecord = isDeletedRecord;
13
+ exports.isTestRecord = isTestRecord;
13
14
  exports.parseBoolean = parseBoolean;
14
15
  exports.toAlephId = toAlephId;
15
16
  function generateAuthorizationHeader(username, password = '') {
@@ -45,6 +46,39 @@ function isDeletedRecord(record) {
45
46
  }
46
47
  }
47
48
  }
49
+ function isTestRecord(record, checkNotesInf500 = true) {
50
+ return checkSta() || checkf500(checkNotesInf500);
51
+ function checkSta() {
52
+ return record.get(/^STA$/u).some(check);
53
+ function check({
54
+ subfields
55
+ }) {
56
+ const values = ['TEST'];
57
+ return subfields.some(({
58
+ code,
59
+ value
60
+ }) => code === 'a' && values.includes(value));
61
+ }
62
+ }
63
+ function checkf500(checkNotesInf500) {
64
+ if (!checkNotesInf500) {
65
+ return false;
66
+ }
67
+ return record.get(/^500$/u).some(check);
68
+
69
+ // Recognize record as test record if it has f500 $a that has contents matching "test record" or "testitietue"
70
+ // Note: we might have false positives here, this test can be ignored by giving second param as 'false'
71
+ function check({
72
+ subfields
73
+ }) {
74
+ const testRecordRegexp = /testitietue|test record/iu;
75
+ return subfields.some(({
76
+ code,
77
+ value
78
+ }) => code === 'a' && testRecordRegexp.test(value));
79
+ }
80
+ }
81
+ }
48
82
  function isComponentRecord(record, ignoreCollections = false, additionalHostFields = []) {
49
83
  // Record is a component record if it has bibliografic level of a component in leader
50
84
  // and/or has at least one host link field (f773)
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["generateAuthorizationHeader","username","password","encoded","Buffer","from","toString","isDeletedRecord","record","includes","leader","checkDel","checkSta","get","some","check","subfields","code","value","values","isComponentRecord","ignoreCollections","additionalHostFields","hostFields","concat","hostFieldPatternString","join","hostFieldRegex","RegExp","recordHasHostFields","length","parseBoolean","undefined","Number","isNaN","test","Boolean","getRecordTitle","TRIM_PATTERN","field","find","f","sf","replace","getRecordStandardIdentifiers","filter","map","subfield","clone","o","JSON","parse","stringify","toAlephId","id","padStart","fromAlephId"],"sources":["../src/utils.js"],"sourcesContent":["export function generateAuthorizationHeader(username, password = '') {\n const encoded = Buffer.from(`${username}:${password}`).toString('base64');\n return `Basic ${encoded}`;\n}\n\nexport function isDeletedRecord(record) {\n if (['d', 's', 'x'].includes(record.leader[5])) {\n return true;\n }\n\n return checkDel() || checkSta();\n\n function checkDel() {\n return record.get(/^DEL$/u).some(check);\n\n function check({subfields}) {\n return subfields.some(({code, value}) => code === 'a' && value === 'Y');\n }\n }\n\n function checkSta() {\n return record.get(/^STA$/u).some(check);\n\n function check({subfields}) {\n const values = ['DELETED', 'DELETED-SPLIT', 'DELETED-DEPRECATED'];\n return subfields.some(({code, value}) => code === 'a' && values.includes(value));\n }\n }\n}\n\nexport function isComponentRecord(record, ignoreCollections = false, additionalHostFields = []) {\n\n // Record is a component record if it has bibliografic level of a component in leader\n // and/or has at least one host link field (f773)\n\n\n // Ignore collections - optionally do not handle collections (LDR/07 'c')\n // or collection subUnits (LDR/07 'd') as components, even if they do have f773\n\n // https://www.loc.gov/marc/bibliographic/bdleader.html\n // LDR/07\n // c - Collection\n // d - Subunit (in a collection)\n\n if (ignoreCollections && ['c', 'd'].includes(record.leader[7])) {\n return false;\n }\n\n // https://www.loc.gov/marc/bibliographic/bdleader.html\n // LDR/07\n // a - Monographic component part\n // b - Serial component part\n // d - Subunit (in a collection)\n\n if (['a', 'b', 'd'].includes(record.leader[7])) {\n return true;\n }\n\n // https://www.loc.gov/marc/bibliographic/bd773.html\n // 773 - Host Item Entry (R)\n\n // additionalHostFields (for example f973 for Viola's multihost componenets)\n // optionally recognize fields given in additionalHostFields array as hostFields\n\n const hostFields = additionalHostFields.concat('773');\n const hostFieldPatternString = `^(${hostFields.join('|')})$`;\n const hostFieldRegex = new RegExp(hostFieldPatternString, 'u');\n\n const recordHasHostFields = record.get(hostFieldRegex).length > 0;\n return recordHasHostFields;\n //return record.get(/^773$/u).length > 0;\n}\n\nexport function parseBoolean(value) {\n if (value === undefined) {\n return false;\n }\n\n if (Number.isNaN(Number(value))) {\n return value.length > 0 && !(/^(?:false)$/ui).test(value);\n }\n\n return Boolean(Number(value));\n}\n\nexport function getRecordTitle(record) {\n const TRIM_PATTERN = '[?!.,(){}:;/ ]*';\n // DEVELOP: get mainHeadings for aut records\n const field = record\n .get(/^245$/u)\n .find(f => f.subfields.some(sf => sf.code === 'a'));\n\n if (field) {\n return field.subfields.find(sf => sf.code === 'a').value\n .replace(new RegExp(`^${TRIM_PATTERN}`, 'u'), '')\n .replace(new RegExp(`${TRIM_PATTERN}$`, 'u'), '');\n }\n\n return '';\n}\n\nexport function getRecordStandardIdentifiers(record) {\n return record.get(/^(?<def>020|022|024)$/u)\n .filter(f => f.subfields.some(sf => ['a', 'z'].includes(sf.code)))\n .map(field => {\n const subfield = field.subfields.find(sf => ['a', 'z'].includes(sf.code));\n return subfield.value;\n });\n}\n\nexport function clone(o) {\n return JSON.parse(JSON.stringify(o));\n}\n\nexport function toAlephId(id) {\n return id.padStart(9, '0');\n}\n\nexport function fromAlephId(id) {\n return id.replace(/^0+/u, '');\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["generateAuthorizationHeader","username","password","encoded","Buffer","from","toString","isDeletedRecord","record","includes","leader","checkDel","checkSta","get","some","check","subfields","code","value","values","isTestRecord","checkNotesInf500","checkf500","testRecordRegexp","test","isComponentRecord","ignoreCollections","additionalHostFields","hostFields","concat","hostFieldPatternString","join","hostFieldRegex","RegExp","recordHasHostFields","length","parseBoolean","undefined","Number","isNaN","Boolean","getRecordTitle","TRIM_PATTERN","field","find","f","sf","replace","getRecordStandardIdentifiers","filter","map","subfield","clone","o","JSON","parse","stringify","toAlephId","id","padStart","fromAlephId"],"sources":["../src/utils.js"],"sourcesContent":["export function generateAuthorizationHeader(username, password = '') {\n const encoded = Buffer.from(`${username}:${password}`).toString('base64');\n return `Basic ${encoded}`;\n}\n\nexport function isDeletedRecord(record) {\n if (['d', 's', 'x'].includes(record.leader[5])) {\n return true;\n }\n\n return checkDel() || checkSta();\n\n function checkDel() {\n return record.get(/^DEL$/u).some(check);\n\n function check({subfields}) {\n return subfields.some(({code, value}) => code === 'a' && value === 'Y');\n }\n }\n\n function checkSta() {\n return record.get(/^STA$/u).some(check);\n\n function check({subfields}) {\n const values = ['DELETED', 'DELETED-SPLIT', 'DELETED-DEPRECATED'];\n return subfields.some(({code, value}) => code === 'a' && values.includes(value));\n }\n }\n}\n\nexport function isTestRecord(record, checkNotesInf500 = true) {\n\n return checkSta() || checkf500(checkNotesInf500);\n\n function checkSta() {\n return record.get(/^STA$/u).some(check);\n\n function check({subfields}) {\n const values = ['TEST'];\n return subfields.some(({code, value}) => code === 'a' && values.includes(value));\n }\n }\n\n function checkf500(checkNotesInf500) {\n if (!checkNotesInf500) {\n return false;\n }\n\n return record.get(/^500$/u).some(check);\n\n // Recognize record as test record if it has f500 $a that has contents matching \"test record\" or \"testitietue\"\n // Note: we might have false positives here, this test can be ignored by giving second param as 'false'\n function check({subfields}) {\n const testRecordRegexp = /testitietue|test record/iu;\n return subfields.some(({code, value}) => code === 'a' && testRecordRegexp.test(value));\n }\n }\n\n}\n\n\nexport function isComponentRecord(record, ignoreCollections = false, additionalHostFields = []) {\n\n // Record is a component record if it has bibliografic level of a component in leader\n // and/or has at least one host link field (f773)\n\n\n // Ignore collections - optionally do not handle collections (LDR/07 'c')\n // or collection subUnits (LDR/07 'd') as components, even if they do have f773\n\n // https://www.loc.gov/marc/bibliographic/bdleader.html\n // LDR/07\n // c - Collection\n // d - Subunit (in a collection)\n\n if (ignoreCollections && ['c', 'd'].includes(record.leader[7])) {\n return false;\n }\n\n // https://www.loc.gov/marc/bibliographic/bdleader.html\n // LDR/07\n // a - Monographic component part\n // b - Serial component part\n // d - Subunit (in a collection)\n\n if (['a', 'b', 'd'].includes(record.leader[7])) {\n return true;\n }\n\n // https://www.loc.gov/marc/bibliographic/bd773.html\n // 773 - Host Item Entry (R)\n\n // additionalHostFields (for example f973 for Viola's multihost componenets)\n // optionally recognize fields given in additionalHostFields array as hostFields\n\n const hostFields = additionalHostFields.concat('773');\n const hostFieldPatternString = `^(${hostFields.join('|')})$`;\n const hostFieldRegex = new RegExp(hostFieldPatternString, 'u');\n\n const recordHasHostFields = record.get(hostFieldRegex).length > 0;\n return recordHasHostFields;\n //return record.get(/^773$/u).length > 0;\n}\n\nexport function parseBoolean(value) {\n if (value === undefined) {\n return false;\n }\n\n if (Number.isNaN(Number(value))) {\n return value.length > 0 && !(/^(?:false)$/ui).test(value);\n }\n\n return Boolean(Number(value));\n}\n\nexport function getRecordTitle(record) {\n const TRIM_PATTERN = '[?!.,(){}:;/ ]*';\n // DEVELOP: get mainHeadings for aut records\n const field = record\n .get(/^245$/u)\n .find(f => f.subfields.some(sf => sf.code === 'a'));\n\n if (field) {\n return field.subfields.find(sf => sf.code === 'a').value\n .replace(new RegExp(`^${TRIM_PATTERN}`, 'u'), '')\n .replace(new RegExp(`${TRIM_PATTERN}$`, 'u'), '');\n }\n\n return '';\n}\n\nexport function getRecordStandardIdentifiers(record) {\n return record.get(/^(?<def>020|022|024)$/u)\n .filter(f => f.subfields.some(sf => ['a', 'z'].includes(sf.code)))\n .map(field => {\n const subfield = field.subfields.find(sf => ['a', 'z'].includes(sf.code));\n return subfield.value;\n });\n}\n\nexport function clone(o) {\n return JSON.parse(JSON.stringify(o));\n}\n\nexport function toAlephId(id) {\n return id.padStart(9, '0');\n}\n\nexport function fromAlephId(id) {\n return id.replace(/^0+/u, '');\n}\n"],"mappings":"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","ignoreList":[]}
@@ -59,6 +59,38 @@ describe('utils', () => {
59
59
  (0, _chai.expect)((0, _utils.isDeletedRecord)(record)).to.equal(true);
60
60
  });
61
61
  });
62
+ describe('isTestRecord', () => {
63
+ it('Should find the record a test record (STA)', () => {
64
+ const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isTestRecord/record1.json'), 'utf8');
65
+ const record = new _marcRecord.MarcRecord(JSON.parse(data));
66
+ (0, _chai.expect)((0, _utils.isTestRecord)(record)).to.equal(true);
67
+ });
68
+ it('Should find the record a test record (f500 "Testitietue.")', () => {
69
+ const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isTestRecord/record2.json'), 'utf8');
70
+ const record = new _marcRecord.MarcRecord(JSON.parse(data));
71
+ (0, _chai.expect)((0, _utils.isTestRecord)(record)).to.equal(true);
72
+ });
73
+ it('Should find the record a test record (f500 "Foobar TESTITIETUE baz.")', () => {
74
+ const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isTestRecord/record3.json'), 'utf8');
75
+ const record = new _marcRecord.MarcRecord(JSON.parse(data));
76
+ (0, _chai.expect)((0, _utils.isTestRecord)(record)).to.equal(true);
77
+ });
78
+ it('Should find the record a test record (f500 "test record")', () => {
79
+ const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isTestRecord/record4.json'), 'utf8');
80
+ const record = new _marcRecord.MarcRecord(JSON.parse(data));
81
+ (0, _chai.expect)((0, _utils.isTestRecord)(record)).to.equal(true);
82
+ });
83
+ it('Should find the record not a test record', () => {
84
+ const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isTestRecord/record5.json'), 'utf8');
85
+ const record = new _marcRecord.MarcRecord(JSON.parse(data));
86
+ (0, _chai.expect)((0, _utils.isTestRecord)(record)).to.equal(false);
87
+ });
88
+ it('Should find the record not a test record (f500 "test record", but configured not test f500)', () => {
89
+ const data = _fs.default.readFileSync(_path.default.join(FIXTURES_PATH, 'isTestRecord/record4.json'), 'utf8');
90
+ const record = new _marcRecord.MarcRecord(JSON.parse(data));
91
+ (0, _chai.expect)((0, _utils.isTestRecord)(record, false)).to.equal(false);
92
+ });
93
+ });
62
94
  describe('parseBoolean', () => {
63
95
  it('Should parse undefined as false', () => {
64
96
  (0, _chai.expect)((0, _utils.parseBoolean)(undefined)).to.equal(false);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.spec.js","names":["_fs","_interopRequireDefault","require","_path","_chai","_marcRecord","_utils","MarcRecord","setValidationOptions","subfieldValues","FIXTURES_PATH","path","join","__dirname","describe","it","value","generateAuthorizationHeader","expect","to","equal","data","fs","readFileSync","record","JSON","parse","isDeletedRecord","parseBoolean","undefined","isComponentRecord","forEach","descr","index","title","recordData","getRecordTitle","identifiers","getRecordStandardIdentifiers","eql","obj","cloned","clone","not"],"sources":["../src/utils.spec.js"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport {\n generateAuthorizationHeader, isDeletedRecord, parseBoolean, clone,\n getRecordTitle, getRecordStandardIdentifiers, isComponentRecord\n} from './utils';\n\nMarcRecord.setValidationOptions({subfieldValues: false});\n\nconst FIXTURES_PATH = path.join(__dirname, '../test-fixtures/utils');\n\ndescribe('utils', () => {\n describe('generateAuthorizationHeader', () => {\n it('Should create a proper Authorization header', () => {\n const value = generateAuthorizationHeader('foo', 'bar');\n expect(value).to.equal('Basic Zm9vOmJhcg==');\n });\n });\n\n describe('isDeletedRecord', () => {\n it('Should find the record deleted (Leader)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record1.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (DEL)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record2.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (STA)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record3.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record not deleted', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record4.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(false);\n });\n\n it('Should find the record deleted (Split)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record5.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (Deprecated)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record6.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (Split (Aleph))', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record7.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (Deprecated (Aleph))', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record8.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n });\n\n describe('parseBoolean', () => {\n it('Should parse undefined as false', () => {\n expect(parseBoolean(undefined)).to.equal(false);\n });\n\n it('Should parse zero-length string as false', () => {\n expect(parseBoolean('')).to.equal(false);\n });\n\n it('Should parse numericish value as true', () => {\n expect(parseBoolean('1')).to.equal(true);\n });\n\n it('Should parse numericush value as false', () => {\n expect(parseBoolean('0')).to.equal(false);\n });\n\n it('Should parse literal \\'false\\' value as false', () => {\n expect(parseBoolean('false')).to.equal(false);\n });\n\n it('Should parse non-numericish value as true', () => {\n expect(parseBoolean('foo')).to.equal(true);\n });\n\n it('Should parse literal \\'FALSE\\' value as false', () => {\n expect(parseBoolean('FALSE')).to.equal(false);\n });\n\n it('Should parse literal \\'FAlsE\\' value as false', () => {\n expect(parseBoolean('FAlsE')).to.equal(false);\n });\n\n });\n\n describe('isComponentRecord', () => {\n it('Should find out that the record is a component record (f773)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record1.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record)).to.equal(true);\n });\n\n it('Should find out that the record is a component record (f773 + LDR/07 \"a\")', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record2.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record)).to.equal(true);\n });\n\n it('Should find out that the record is a component (LDR/07 \"d\")', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record3.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record)).to.equal(true);\n });\n\n it('Should find out that the record is not a component record', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record4.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record)).to.equal(false);\n });\n\n it('Should find out that the record is not a component record when ignoring collections', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record4.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record, true)).to.equal(false);\n });\n\n\n it('Should find out that the record is not a component record when ignoring collections (LDR/07 \"d\")', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record5.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record, true)).to.equal(false);\n });\n\n\n it('Should find out that the record is not a component record when ignoring collections (LDR/07 \"c\" and f773)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record6.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record, true)).to.equal(false);\n });\n\n it('Should find out that the record is a component record when using additional host fields (f973)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record7.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record, false, ['973'])).to.equal(true);\n });\n\n });\n\n\n describe('getRecordTitle', () => {\n [\n 'Should find a title',\n 'Should not find a title'\n ].forEach((descr, index) => {\n it(descr, () => {\n const title = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordTitle/title${index}.txt`), 'utf8');\n const recordData = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordTitle/record${index}.json`), 'utf8');\n const record = new MarcRecord(JSON.parse(recordData));\n\n expect(getRecordTitle(record)).to.equal(title);\n });\n });\n });\n\n describe('getRecordStandardIdentifiers', () => {\n [\n 'Should find identifiers',\n 'Should not find an identifier'\n ].forEach((descr, index) => {\n it(descr, () => {\n const identifiers = JSON.parse(fs.readFileSync(path.join(FIXTURES_PATH, `getRecordStandardIdentifiers/identifiers${index}.json`), 'utf8'));\n const recordData = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordStandardIdentifiers/record${index}.json`), 'utf8');\n const record = new MarcRecord(JSON.parse(recordData));\n\n expect(getRecordStandardIdentifiers(record)).to.eql(identifiers);\n });\n });\n });\n\n describe('clone', () => {\n it('Should clone an object', (index = '1') => {\n const obj = JSON.parse(fs.readFileSync(path.join(FIXTURES_PATH, `clone/${index}/obj.json`), 'utf8'));\n const cloned = clone(obj);\n\n expect(obj).to.not.equal(cloned);\n expect(cloned).to.eql(obj);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils.spec.js","names":["_fs","_interopRequireDefault","require","_path","_chai","_marcRecord","_utils","MarcRecord","setValidationOptions","subfieldValues","FIXTURES_PATH","path","join","__dirname","describe","it","value","generateAuthorizationHeader","expect","to","equal","data","fs","readFileSync","record","JSON","parse","isDeletedRecord","isTestRecord","parseBoolean","undefined","isComponentRecord","forEach","descr","index","title","recordData","getRecordTitle","identifiers","getRecordStandardIdentifiers","eql","obj","cloned","clone","not"],"sources":["../src/utils.spec.js"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport {expect} from 'chai';\nimport {MarcRecord} from '@natlibfi/marc-record';\nimport {\n generateAuthorizationHeader, isDeletedRecord, isTestRecord, parseBoolean, clone,\n getRecordTitle, getRecordStandardIdentifiers, isComponentRecord\n} from './utils';\n\nMarcRecord.setValidationOptions({subfieldValues: false});\n\nconst FIXTURES_PATH = path.join(__dirname, '../test-fixtures/utils');\n\ndescribe('utils', () => {\n describe('generateAuthorizationHeader', () => {\n it('Should create a proper Authorization header', () => {\n const value = generateAuthorizationHeader('foo', 'bar');\n expect(value).to.equal('Basic Zm9vOmJhcg==');\n });\n });\n\n describe('isDeletedRecord', () => {\n it('Should find the record deleted (Leader)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record1.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (DEL)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record2.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (STA)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record3.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record not deleted', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record4.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(false);\n });\n\n it('Should find the record deleted (Split)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record5.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (Deprecated)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record6.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (Split (Aleph))', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record7.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n\n it('Should find the record deleted (Deprecated (Aleph))', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record8.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isDeletedRecord(record)).to.equal(true);\n });\n });\n\n describe('isTestRecord', () => {\n it('Should find the record a test record (STA)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isTestRecord/record1.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isTestRecord(record)).to.equal(true);\n });\n\n it('Should find the record a test record (f500 \"Testitietue.\")', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isTestRecord/record2.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isTestRecord(record)).to.equal(true);\n });\n\n it('Should find the record a test record (f500 \"Foobar TESTITIETUE baz.\")', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isTestRecord/record3.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isTestRecord(record)).to.equal(true);\n });\n\n it('Should find the record a test record (f500 \"test record\")', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isTestRecord/record4.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isTestRecord(record)).to.equal(true);\n });\n\n it('Should find the record not a test record', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isTestRecord/record5.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isTestRecord(record)).to.equal(false);\n });\n\n it('Should find the record not a test record (f500 \"test record\", but configured not test f500)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isTestRecord/record4.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isTestRecord(record, false)).to.equal(false);\n });\n\n });\n\n\n describe('parseBoolean', () => {\n it('Should parse undefined as false', () => {\n expect(parseBoolean(undefined)).to.equal(false);\n });\n\n it('Should parse zero-length string as false', () => {\n expect(parseBoolean('')).to.equal(false);\n });\n\n it('Should parse numericish value as true', () => {\n expect(parseBoolean('1')).to.equal(true);\n });\n\n it('Should parse numericush value as false', () => {\n expect(parseBoolean('0')).to.equal(false);\n });\n\n it('Should parse literal \\'false\\' value as false', () => {\n expect(parseBoolean('false')).to.equal(false);\n });\n\n it('Should parse non-numericish value as true', () => {\n expect(parseBoolean('foo')).to.equal(true);\n });\n\n it('Should parse literal \\'FALSE\\' value as false', () => {\n expect(parseBoolean('FALSE')).to.equal(false);\n });\n\n it('Should parse literal \\'FAlsE\\' value as false', () => {\n expect(parseBoolean('FAlsE')).to.equal(false);\n });\n\n });\n\n describe('isComponentRecord', () => {\n it('Should find out that the record is a component record (f773)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record1.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record)).to.equal(true);\n });\n\n it('Should find out that the record is a component record (f773 + LDR/07 \"a\")', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record2.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record)).to.equal(true);\n });\n\n it('Should find out that the record is a component (LDR/07 \"d\")', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record3.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record)).to.equal(true);\n });\n\n it('Should find out that the record is not a component record', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record4.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record)).to.equal(false);\n });\n\n it('Should find out that the record is not a component record when ignoring collections', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record4.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record, true)).to.equal(false);\n });\n\n\n it('Should find out that the record is not a component record when ignoring collections (LDR/07 \"d\")', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record5.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record, true)).to.equal(false);\n });\n\n\n it('Should find out that the record is not a component record when ignoring collections (LDR/07 \"c\" and f773)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record6.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record, true)).to.equal(false);\n });\n\n it('Should find out that the record is a component record when using additional host fields (f973)', () => {\n const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isComponentRecord/record7.json'), 'utf8');\n const record = new MarcRecord(JSON.parse(data));\n expect(isComponentRecord(record, false, ['973'])).to.equal(true);\n });\n\n });\n\n\n describe('getRecordTitle', () => {\n [\n 'Should find a title',\n 'Should not find a title'\n ].forEach((descr, index) => {\n it(descr, () => {\n const title = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordTitle/title${index}.txt`), 'utf8');\n const recordData = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordTitle/record${index}.json`), 'utf8');\n const record = new MarcRecord(JSON.parse(recordData));\n\n expect(getRecordTitle(record)).to.equal(title);\n });\n });\n });\n\n describe('getRecordStandardIdentifiers', () => {\n [\n 'Should find identifiers',\n 'Should not find an identifier'\n ].forEach((descr, index) => {\n it(descr, () => {\n const identifiers = JSON.parse(fs.readFileSync(path.join(FIXTURES_PATH, `getRecordStandardIdentifiers/identifiers${index}.json`), 'utf8'));\n const recordData = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordStandardIdentifiers/record${index}.json`), 'utf8');\n const record = new MarcRecord(JSON.parse(recordData));\n\n expect(getRecordStandardIdentifiers(record)).to.eql(identifiers);\n });\n });\n });\n\n describe('clone', () => {\n it('Should clone an object', (index = '1') => {\n const obj = JSON.parse(fs.readFileSync(path.join(FIXTURES_PATH, `clone/${index}/obj.json`), 'utf8'));\n const cloned = clone(obj);\n\n expect(obj).to.not.equal(cloned);\n expect(cloned).to.eql(obj);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "url": "git@github.com:natlibfi/melinda-commons-js.git"
15
15
  },
16
16
  "license": "MIT",
17
- "version": "13.2.0-alpha.1",
17
+ "version": "13.2.0-alpha.2",
18
18
  "main": "./dist/index.js",
19
19
  "engines": {
20
20
  "node": ">=18"
package/src/utils.js CHANGED
@@ -28,6 +28,37 @@ export function isDeletedRecord(record) {
28
28
  }
29
29
  }
30
30
 
31
+ export function isTestRecord(record, checkNotesInf500 = true) {
32
+
33
+ return checkSta() || checkf500(checkNotesInf500);
34
+
35
+ function checkSta() {
36
+ return record.get(/^STA$/u).some(check);
37
+
38
+ function check({subfields}) {
39
+ const values = ['TEST'];
40
+ return subfields.some(({code, value}) => code === 'a' && values.includes(value));
41
+ }
42
+ }
43
+
44
+ function checkf500(checkNotesInf500) {
45
+ if (!checkNotesInf500) {
46
+ return false;
47
+ }
48
+
49
+ return record.get(/^500$/u).some(check);
50
+
51
+ // Recognize record as test record if it has f500 $a that has contents matching "test record" or "testitietue"
52
+ // Note: we might have false positives here, this test can be ignored by giving second param as 'false'
53
+ function check({subfields}) {
54
+ const testRecordRegexp = /testitietue|test record/iu;
55
+ return subfields.some(({code, value}) => code === 'a' && testRecordRegexp.test(value));
56
+ }
57
+ }
58
+
59
+ }
60
+
61
+
31
62
  export function isComponentRecord(record, ignoreCollections = false, additionalHostFields = []) {
32
63
 
33
64
  // Record is a component record if it has bibliografic level of a component in leader
package/src/utils.spec.js CHANGED
@@ -3,7 +3,7 @@ import path from 'path';
3
3
  import {expect} from 'chai';
4
4
  import {MarcRecord} from '@natlibfi/marc-record';
5
5
  import {
6
- generateAuthorizationHeader, isDeletedRecord, parseBoolean, clone,
6
+ generateAuthorizationHeader, isDeletedRecord, isTestRecord, parseBoolean, clone,
7
7
  getRecordTitle, getRecordStandardIdentifiers, isComponentRecord
8
8
  } from './utils';
9
9
 
@@ -69,6 +69,46 @@ describe('utils', () => {
69
69
  });
70
70
  });
71
71
 
72
+ describe('isTestRecord', () => {
73
+ it('Should find the record a test record (STA)', () => {
74
+ const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isTestRecord/record1.json'), 'utf8');
75
+ const record = new MarcRecord(JSON.parse(data));
76
+ expect(isTestRecord(record)).to.equal(true);
77
+ });
78
+
79
+ it('Should find the record a test record (f500 "Testitietue.")', () => {
80
+ const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isTestRecord/record2.json'), 'utf8');
81
+ const record = new MarcRecord(JSON.parse(data));
82
+ expect(isTestRecord(record)).to.equal(true);
83
+ });
84
+
85
+ it('Should find the record a test record (f500 "Foobar TESTITIETUE baz.")', () => {
86
+ const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isTestRecord/record3.json'), 'utf8');
87
+ const record = new MarcRecord(JSON.parse(data));
88
+ expect(isTestRecord(record)).to.equal(true);
89
+ });
90
+
91
+ it('Should find the record a test record (f500 "test record")', () => {
92
+ const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isTestRecord/record4.json'), 'utf8');
93
+ const record = new MarcRecord(JSON.parse(data));
94
+ expect(isTestRecord(record)).to.equal(true);
95
+ });
96
+
97
+ it('Should find the record not a test record', () => {
98
+ const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isTestRecord/record5.json'), 'utf8');
99
+ const record = new MarcRecord(JSON.parse(data));
100
+ expect(isTestRecord(record)).to.equal(false);
101
+ });
102
+
103
+ it('Should find the record not a test record (f500 "test record", but configured not test f500)', () => {
104
+ const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isTestRecord/record4.json'), 'utf8');
105
+ const record = new MarcRecord(JSON.parse(data));
106
+ expect(isTestRecord(record, false)).to.equal(false);
107
+ });
108
+
109
+ });
110
+
111
+
72
112
  describe('parseBoolean', () => {
73
113
  it('Should parse undefined as false', () => {
74
114
  expect(parseBoolean(undefined)).to.equal(false);
@@ -0,0 +1,29 @@
1
+ {
2
+ "leader": "01864cam a2200529zi 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "000001234"
7
+ },
8
+ {
9
+ "tag": "245",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "foobar"
16
+ }
17
+ ]
18
+ },
19
+ {
20
+ "tag": "STA",
21
+ "subfields": [
22
+ {
23
+ "code": "a",
24
+ "value": "TEST"
25
+ }
26
+ ]
27
+ }
28
+ ]
29
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "leader": "01864cam a2200529zi 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "000001234"
7
+ },
8
+ {
9
+ "tag": "245",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "foobar"
16
+ }
17
+ ]
18
+ },
19
+ {
20
+ "tag": "500",
21
+ "subfields": [
22
+ {
23
+ "code": "a",
24
+ "value": "Testitietue."
25
+ }
26
+ ]
27
+ }
28
+ ]
29
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "leader": "01864cam a2200529zi 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "000001234"
7
+ },
8
+ {
9
+ "tag": "245",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "foobar"
16
+ }
17
+ ]
18
+ },
19
+ {
20
+ "tag": "500",
21
+ "subfields": [
22
+ {
23
+ "code": "a",
24
+ "value": "Foobar TESTITIETUE baz."
25
+ }
26
+ ]
27
+ }
28
+ ]
29
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "leader": "01864cam a2200529zi 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "000001234"
7
+ },
8
+ {
9
+ "tag": "245",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "foobar"
16
+ }
17
+ ]
18
+ },
19
+ {
20
+ "tag": "500",
21
+ "subfields": [
22
+ {
23
+ "code": "a",
24
+ "value": "test record"
25
+ }
26
+ ]
27
+ }
28
+ ]
29
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "leader": "01864cam a2200529zi 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "000001234"
7
+ },
8
+ {
9
+ "tag": "245",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "foobar"
16
+ }
17
+ ]
18
+ },
19
+ {
20
+ "tag": "500",
21
+ "subfields": [
22
+ {
23
+ "code": "a",
24
+ "value": "Normal note about something"
25
+ }
26
+ ]
27
+ }
28
+ ]
29
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "leader": "01864cam a2200529zi 4500",
3
+ "fields": [
4
+ {
5
+ "tag": "001",
6
+ "value": "000001234"
7
+ },
8
+ {
9
+ "tag": "245",
10
+ "ind1": " ",
11
+ "ind2": " ",
12
+ "subfields": [
13
+ {
14
+ "code": "a",
15
+ "value": "foobar"
16
+ }
17
+ ]
18
+ },
19
+ {
20
+ "tag": "STA",
21
+ "subfields": [
22
+ {
23
+ "code": "a",
24
+ "value": "DELETED"
25
+ }
26
+ ]
27
+ }
28
+ ]
29
+ }