@natlibfi/melinda-commons 13.0.21 → 14.0.0-alpha.1
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/workflows/melinda-node-tests.yml +2 -2
- package/dist/error.js +4 -11
- package/dist/error.js.map +7 -1
- package/dist/error.test.js +14 -0
- package/dist/error.test.js.map +7 -0
- package/dist/index.js +7 -42
- package/dist/index.js.map +7 -1
- package/dist/subRecordPicker.js +21 -47
- package/dist/subRecordPicker.js.map +7 -1
- package/dist/subRecordPicker.test.js +42 -0
- package/dist/subRecordPicker.test.js.map +7 -0
- package/dist/utils.js +25 -49
- package/dist/utils.js.map +7 -1
- package/dist/utils.test.js +126 -0
- package/dist/utils.test.js.map +7 -0
- package/eslint.config.mjs +52 -0
- package/package.json +16 -94
- package/src/error.js +2 -2
- package/src/error.test.js +15 -0
- package/src/subRecordPicker.js +5 -5
- package/src/{subRecordPicker.spec.js → subRecordPicker.test.js} +18 -9
- package/src/{utils.spec.js → utils.test.js} +27 -26
- package/dist/error.spec.js +0 -14
- package/dist/error.spec.js.map +0 -1
- package/dist/subRecordPicker.spec.js +0 -51
- package/dist/subRecordPicker.spec.js.map +0 -1
- package/dist/utils.spec.js +0 -117
- package/dist/utils.spec.js.map +0 -1
- package/src/error.spec.js +0 -12
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// Eslint configuration object for src
|
|
2
|
+
const configSrc = {
|
|
3
|
+
files: [
|
|
4
|
+
"src/*"
|
|
5
|
+
],
|
|
6
|
+
linterOptions: {
|
|
7
|
+
reportUnusedDisableDirectives: true,
|
|
8
|
+
},
|
|
9
|
+
rules: {
|
|
10
|
+
"no-console": "warn",
|
|
11
|
+
"eqeqeq": ["error", "always"],
|
|
12
|
+
"no-const-assign": "error",
|
|
13
|
+
"max-depth": ["warn", 4],
|
|
14
|
+
"max-lines": ["warn", 500],
|
|
15
|
+
"max-lines-per-function": ["warn", {"max": 100}],
|
|
16
|
+
"no-else-return": ["error", {allowElseIf: false}],
|
|
17
|
+
"no-plusplus": [
|
|
18
|
+
"error",
|
|
19
|
+
{
|
|
20
|
+
"allowForLoopAfterthoughts": true
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"array-callback-return": [
|
|
24
|
+
"error",
|
|
25
|
+
{
|
|
26
|
+
"checkForEach": true
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"no-unused-vars": [
|
|
30
|
+
"error",
|
|
31
|
+
{
|
|
32
|
+
"argsIgnorePattern": "next"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"no-warning-comments": "off"
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// Eslint configuration object for globally ignoring .js files
|
|
40
|
+
// - ignore all files that start with a dot
|
|
41
|
+
// - ignore all files inside directories named 'dist'
|
|
42
|
+
const configIgnores = {
|
|
43
|
+
ignores: [
|
|
44
|
+
"**/.*",
|
|
45
|
+
"**/dist/"
|
|
46
|
+
]
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export default [
|
|
50
|
+
configSrc,
|
|
51
|
+
configIgnores
|
|
52
|
+
];
|
package/package.json
CHANGED
|
@@ -14,115 +14,37 @@
|
|
|
14
14
|
"url": "git@github.com:natlibfi/melinda-commons-js.git"
|
|
15
15
|
},
|
|
16
16
|
"license": "MIT",
|
|
17
|
-
"version": "
|
|
17
|
+
"version": "14.0.0-alpha.1",
|
|
18
18
|
"main": "./dist/index.js",
|
|
19
|
+
"type": "module",
|
|
19
20
|
"engines": {
|
|
20
|
-
"node": ">=
|
|
21
|
+
"node": ">=22"
|
|
21
22
|
},
|
|
22
23
|
"publishConfig": {
|
|
23
24
|
"access": "public"
|
|
24
25
|
},
|
|
25
26
|
"scripts": {
|
|
26
27
|
"prepare": "npm run build",
|
|
27
|
-
"build": "
|
|
28
|
+
"build": "esbuild src/**/*.js --sourcemap --platform=node --main-fields=main --outdir=dist --allow-overwrite --analyze",
|
|
28
29
|
"lint": "eslint ./src",
|
|
29
30
|
"lint:dev": "eslint --fix ./src",
|
|
31
|
+
"test:base": "node --test --experimental-test-coverage --test-reporter=spec './src/*.test.js' './src/**/*.test.js'",
|
|
30
32
|
"test": "npm run lint && npm run test:base",
|
|
31
|
-
"test
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"watch:test": "cross-env DEBUG=@natlibfi/* NODE_ENV=test nodemon",
|
|
35
|
-
"dev": "nodemon",
|
|
36
|
-
"dev:debug": "cross-env LOG_LEVEL=debug DEBUG=@natlibfi/* NODE_ENV=test nodemon"
|
|
33
|
+
"watch:test": "cross-env DEBUG=@natlibfi/* NODE_ENV=test node --watch --test --experimental-test-coverage --test-reporter=spec './src/*.test.js' './src/**/*.test.js'",
|
|
34
|
+
"dev": "npm run watch:test",
|
|
35
|
+
"dev:debug": "cross-env LOG_LEVEL=debug DEBUG=@natlibfi/* NODE_ENV=test npm run watch:test"
|
|
37
36
|
},
|
|
38
37
|
"dependencies": {
|
|
39
|
-
"@natlibfi/marc-record": "^
|
|
40
|
-
"@natlibfi/marc-record-serializers": "^
|
|
41
|
-
"@natlibfi/sru-client": "^
|
|
42
|
-
"debug": "^4.4.1"
|
|
38
|
+
"@natlibfi/marc-record": "^10.0.0-alpha.1",
|
|
39
|
+
"@natlibfi/marc-record-serializers": "^11.0.0-alpha.2",
|
|
40
|
+
"@natlibfi/sru-client": "^7.0.0-alpha.1",
|
|
41
|
+
"debug": "^4.4.1",
|
|
42
|
+
"esbuild": "^0.25.8"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@
|
|
46
|
-
"@
|
|
47
|
-
"@babel/node": "^7.27.1",
|
|
48
|
-
"@babel/plugin-transform-runtime": "^7.27.4",
|
|
49
|
-
"@babel/preset-env": "^7.27.2",
|
|
50
|
-
"@babel/register": "^7.27.1",
|
|
51
|
-
"@babel/runtime": "^7.27.6",
|
|
52
|
-
"@natlibfi/eslint-config-melinda-backend": "^3.0.6",
|
|
53
|
-
"@natlibfi/fixugen-http-client": "^3.0.10",
|
|
54
|
-
"@natlibfi/fixura": "^3.0.13",
|
|
55
|
-
"babel-plugin-istanbul": "^7.0.0",
|
|
56
|
-
"babel-plugin-rewire": "^1.2.0",
|
|
57
|
-
"chai": "^4.5.0",
|
|
45
|
+
"@natlibfi/fixugen-http-client": "^4.0.0-alpha.1",
|
|
46
|
+
"@natlibfi/fixura": "^4.0.0-alpha.12",
|
|
58
47
|
"cross-env": "^7.0.3",
|
|
59
|
-
"eslint": "^
|
|
60
|
-
"mocha": "^11.7.1",
|
|
61
|
-
"nodemon": "^3.1.10",
|
|
62
|
-
"nyc": "^17.1.0"
|
|
63
|
-
},
|
|
64
|
-
"eslintConfig": {
|
|
65
|
-
"extends": "@natlibfi/melinda-backend"
|
|
66
|
-
},
|
|
67
|
-
"babel": {
|
|
68
|
-
"plugins": [
|
|
69
|
-
[
|
|
70
|
-
"@babel/transform-runtime"
|
|
71
|
-
]
|
|
72
|
-
],
|
|
73
|
-
"presets": [
|
|
74
|
-
[
|
|
75
|
-
"@babel/preset-env",
|
|
76
|
-
{
|
|
77
|
-
"targets": [
|
|
78
|
-
"defaults",
|
|
79
|
-
"maintained node versions"
|
|
80
|
-
]
|
|
81
|
-
}
|
|
82
|
-
]
|
|
83
|
-
],
|
|
84
|
-
"env": {
|
|
85
|
-
"test": {
|
|
86
|
-
"plugins": [
|
|
87
|
-
"istanbul",
|
|
88
|
-
"rewire"
|
|
89
|
-
]
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
"mocha": {
|
|
94
|
-
"spec": [
|
|
95
|
-
"src/*.spec.js",
|
|
96
|
-
"src/**/*.spec.js"
|
|
97
|
-
],
|
|
98
|
-
"require": [
|
|
99
|
-
"@babel/register"
|
|
100
|
-
],
|
|
101
|
-
"inline-diffs": true,
|
|
102
|
-
"maxDiffSize": 25000,
|
|
103
|
-
"bail": true,
|
|
104
|
-
"exit": true
|
|
105
|
-
},
|
|
106
|
-
"nodemonConfig": {
|
|
107
|
-
"exec": "npm run test:dev",
|
|
108
|
-
"watch": [
|
|
109
|
-
"src/*",
|
|
110
|
-
"test-fixtures/*"
|
|
111
|
-
]
|
|
112
|
-
},
|
|
113
|
-
"nyc": {
|
|
114
|
-
"exclude": [
|
|
115
|
-
"src/*.spec.js",
|
|
116
|
-
"src/**/*.spec.js"
|
|
117
|
-
],
|
|
118
|
-
"reporter": [
|
|
119
|
-
"text"
|
|
120
|
-
],
|
|
121
|
-
"sourceMap": false,
|
|
122
|
-
"instrument": false,
|
|
123
|
-
"lines": 80,
|
|
124
|
-
"statements": 80,
|
|
125
|
-
"functions": 80,
|
|
126
|
-
"branches": 80
|
|
48
|
+
"eslint": "^9.32.0"
|
|
127
49
|
}
|
|
128
50
|
}
|
package/src/error.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export default class extends Error {
|
|
2
2
|
constructor(status, payload, ...params) {
|
|
3
3
|
super(params);
|
|
4
|
-
this.status = status;
|
|
5
|
-
this.payload = payload;
|
|
4
|
+
this.status = status;
|
|
5
|
+
this.payload = payload;
|
|
6
6
|
}
|
|
7
7
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {describe, it} from 'node:test';
|
|
2
|
+
import assert from 'node:assert';
|
|
3
|
+
import CommonsError from './error.js';
|
|
4
|
+
|
|
5
|
+
describe('error', () => {
|
|
6
|
+
it('Should construct the expected instance', () => {
|
|
7
|
+
const error = new CommonsError(200, 'foobar');
|
|
8
|
+
|
|
9
|
+
assert(error instanceof Error);
|
|
10
|
+
assert.equal(Object.hasOwn(error, 'status'), true);
|
|
11
|
+
assert.equal(Object.hasOwn(error, 'payload'), true);
|
|
12
|
+
assert.equal(error.status, 200);
|
|
13
|
+
assert.equal(error.payload, 'foobar');
|
|
14
|
+
});
|
|
15
|
+
});
|
package/src/subRecordPicker.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import createSruClient from '@natlibfi/sru-client';
|
|
1
|
+
import {default as createSruClient} from '@natlibfi/sru-client';
|
|
2
2
|
import {MARCXML} from '@natlibfi/marc-record-serializers';
|
|
3
3
|
import createDebugLogger from 'debug';
|
|
4
|
-
import
|
|
4
|
+
import ApiError from './error.js';
|
|
5
5
|
|
|
6
6
|
export function createSubrecordPicker(sruUrl, retrieveAll = false) {
|
|
7
|
-
if (sruUrl === undefined) {
|
|
7
|
+
if (sruUrl === undefined) {
|
|
8
8
|
throw new ApiError(400, 'Invalid sru url');
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -20,7 +20,7 @@ export function createSubrecordPicker(sruUrl, retrieveAll = false) {
|
|
|
20
20
|
const promises = [];
|
|
21
21
|
sruClient.searchRetrieve(`melinda.partsofhost=${recordId}`, {startRecord: offset})
|
|
22
22
|
.on('record', xmlString => {
|
|
23
|
-
promises.push(MARCXML.from(xmlString, {subfieldValues: false}));
|
|
23
|
+
promises.push(MARCXML.from(xmlString, {subfieldValues: false}));
|
|
24
24
|
})
|
|
25
25
|
.on('end', async nextRecordOffset => {
|
|
26
26
|
try {
|
|
@@ -40,7 +40,7 @@ export function createSubrecordPicker(sruUrl, retrieveAll = false) {
|
|
|
40
40
|
const promises = [];
|
|
41
41
|
sruClient.searchRetrieve(`melinda.partsofhost=${recordId}`)
|
|
42
42
|
.on('record', xmlString => {
|
|
43
|
-
promises.push(MARCXML.from(xmlString, {subfieldValues: false}));
|
|
43
|
+
promises.push(MARCXML.from(xmlString, {subfieldValues: false}));
|
|
44
44
|
})
|
|
45
45
|
.on('end', async () => {
|
|
46
46
|
try {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import {describe, it} from 'node:test';
|
|
2
|
+
import assert from 'node:assert';
|
|
3
3
|
import {READERS} from '@natlibfi/fixura';
|
|
4
4
|
import generateTests from '@natlibfi/fixugen-http-client';
|
|
5
|
+
import {createSubrecordPicker} from './subRecordPicker.js';
|
|
5
6
|
|
|
6
7
|
describe('subRecordPicker', () => {
|
|
7
8
|
const sruUrl = 'https://sru';
|
|
@@ -10,24 +11,32 @@ describe('subRecordPicker', () => {
|
|
|
10
11
|
describe('createSubrecordPicker', () => {
|
|
11
12
|
it('Client should have methods', () => {
|
|
12
13
|
const client = createSubrecordPicker(sruUrl, retrieveAll);
|
|
13
|
-
expect(client).to.respondTo('readAllSubrecords');
|
|
14
|
-
expect(client).to.respondTo('readSomeSubrecords');
|
|
14
|
+
// expect(client).to.respondTo('readAllSubrecords');
|
|
15
|
+
// expect(client).to.respondTo('readSomeSubrecords');
|
|
16
|
+
assert(typeof client.readAllSubrecords, 'function');
|
|
17
|
+
assert(typeof client.readSomeSubrecords, 'function');
|
|
15
18
|
});
|
|
16
19
|
|
|
17
20
|
it('Create client should work with just one parametter', () => {
|
|
18
21
|
const client = createSubrecordPicker(sruUrl);
|
|
19
|
-
expect(client).to.respondTo('readAllSubrecords');
|
|
20
|
-
expect(client).to.respondTo('readSomeSubrecords');
|
|
22
|
+
// expect(client).to.respondTo('readAllSubrecords');
|
|
23
|
+
// expect(client).to.respondTo('readSomeSubrecords');
|
|
24
|
+
assert(typeof client.readAllSubrecords, 'function');
|
|
25
|
+
assert(typeof client.readSomeSubrecords, 'function');
|
|
21
26
|
});
|
|
22
27
|
|
|
23
28
|
it('Create client should have at least one parametter', () => {
|
|
24
|
-
|
|
29
|
+
try {
|
|
30
|
+
createSubrecordPicker();
|
|
31
|
+
} catch (error) {
|
|
32
|
+
assert.equal(error.payload, 'Invalid sru url');
|
|
33
|
+
}
|
|
25
34
|
});
|
|
26
35
|
});
|
|
27
36
|
|
|
28
37
|
generateTests({
|
|
29
38
|
callback,
|
|
30
|
-
path: [
|
|
39
|
+
path: [import.meta.dirname, '..', 'test-fixtures', 'subRecordPicker']
|
|
31
40
|
});
|
|
32
41
|
|
|
33
42
|
async function callback({getFixture, method, sruUrl, retrieveAll, recordId}) {
|
|
@@ -35,7 +44,7 @@ describe('subRecordPicker', () => {
|
|
|
35
44
|
const expectedRecords = getFixture({components: ['expected-records.json'], reader: READERS.JSON});
|
|
36
45
|
const {records} = await client[method](recordId);
|
|
37
46
|
|
|
38
|
-
|
|
47
|
+
assert.deepStrictEqual(format(), expectedRecords);
|
|
39
48
|
|
|
40
49
|
function format() {
|
|
41
50
|
return records.map(r => r.toObject());
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import {
|
|
3
|
+
import {describe, it} from 'node:test';
|
|
4
|
+
import assert from 'node:assert';
|
|
4
5
|
import {MarcRecord} from '@natlibfi/marc-record';
|
|
5
6
|
import {
|
|
6
7
|
generateAuthorizationHeader, isDeletedRecord, parseBoolean, clone,
|
|
7
8
|
getRecordTitle, getRecordStandardIdentifiers
|
|
8
|
-
} from './utils';
|
|
9
|
+
} from './utils.js';
|
|
9
10
|
|
|
10
11
|
MarcRecord.setValidationOptions({subfieldValues: false});
|
|
11
12
|
|
|
12
|
-
const FIXTURES_PATH = path.join(
|
|
13
|
+
const FIXTURES_PATH = path.join(import.meta.dirname, '../test-fixtures/utils');
|
|
13
14
|
|
|
14
15
|
describe('utils', () => {
|
|
15
16
|
describe('generateAuthorizationHeader', () => {
|
|
16
17
|
it('Should create a proper Authorization header', () => {
|
|
17
18
|
const value = generateAuthorizationHeader('foo', 'bar');
|
|
18
|
-
|
|
19
|
+
assert.equal(value, 'Basic Zm9vOmJhcg==');
|
|
19
20
|
});
|
|
20
21
|
});
|
|
21
22
|
|
|
@@ -23,83 +24,83 @@ describe('utils', () => {
|
|
|
23
24
|
it('Should find the record deleted (Leader)', () => {
|
|
24
25
|
const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record1.json'), 'utf8');
|
|
25
26
|
const record = new MarcRecord(JSON.parse(data));
|
|
26
|
-
|
|
27
|
+
assert.equal(isDeletedRecord(record), true);
|
|
27
28
|
});
|
|
28
29
|
|
|
29
30
|
it('Should find the record deleted (DEL)', () => {
|
|
30
31
|
const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record2.json'), 'utf8');
|
|
31
32
|
const record = new MarcRecord(JSON.parse(data));
|
|
32
|
-
|
|
33
|
+
assert.equal(isDeletedRecord(record), true);
|
|
33
34
|
});
|
|
34
35
|
|
|
35
36
|
it('Should find the record deleted (STA)', () => {
|
|
36
37
|
const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record3.json'), 'utf8');
|
|
37
38
|
const record = new MarcRecord(JSON.parse(data));
|
|
38
|
-
|
|
39
|
+
assert.equal(isDeletedRecord(record), true);
|
|
39
40
|
});
|
|
40
41
|
|
|
41
42
|
it('Should find the record not deleted', () => {
|
|
42
43
|
const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record4.json'), 'utf8');
|
|
43
44
|
const record = new MarcRecord(JSON.parse(data));
|
|
44
|
-
|
|
45
|
+
assert.equal(isDeletedRecord(record), false);
|
|
45
46
|
});
|
|
46
47
|
|
|
47
48
|
it('Should find the record deleted (Split)', () => {
|
|
48
49
|
const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record5.json'), 'utf8');
|
|
49
50
|
const record = new MarcRecord(JSON.parse(data));
|
|
50
|
-
|
|
51
|
+
assert.equal(isDeletedRecord(record), true);
|
|
51
52
|
});
|
|
52
53
|
|
|
53
54
|
it('Should find the record deleted (Deprecated)', () => {
|
|
54
55
|
const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record6.json'), 'utf8');
|
|
55
56
|
const record = new MarcRecord(JSON.parse(data));
|
|
56
|
-
|
|
57
|
+
assert.equal(isDeletedRecord(record), true);
|
|
57
58
|
});
|
|
58
59
|
|
|
59
60
|
it('Should find the record deleted (Split (Aleph))', () => {
|
|
60
61
|
const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record7.json'), 'utf8');
|
|
61
62
|
const record = new MarcRecord(JSON.parse(data));
|
|
62
|
-
|
|
63
|
+
assert.equal(isDeletedRecord(record), true);
|
|
63
64
|
});
|
|
64
65
|
|
|
65
66
|
it('Should find the record deleted (Deprecated (Aleph))', () => {
|
|
66
67
|
const data = fs.readFileSync(path.join(FIXTURES_PATH, 'isDeletedRecord/record8.json'), 'utf8');
|
|
67
68
|
const record = new MarcRecord(JSON.parse(data));
|
|
68
|
-
|
|
69
|
+
assert.equal(isDeletedRecord(record), true);
|
|
69
70
|
});
|
|
70
71
|
});
|
|
71
72
|
|
|
72
73
|
describe('parseBoolean', () => {
|
|
73
74
|
it('Should parse undefined as false', () => {
|
|
74
|
-
|
|
75
|
+
assert.equal(parseBoolean(undefined), false);
|
|
75
76
|
});
|
|
76
77
|
|
|
77
78
|
it('Should parse zero-length string as false', () => {
|
|
78
|
-
|
|
79
|
+
assert.equal(parseBoolean(''), false);
|
|
79
80
|
});
|
|
80
81
|
|
|
81
82
|
it('Should parse numericish value as true', () => {
|
|
82
|
-
|
|
83
|
+
assert.equal(parseBoolean('1'), true);
|
|
83
84
|
});
|
|
84
85
|
|
|
85
86
|
it('Should parse numericush value as false', () => {
|
|
86
|
-
|
|
87
|
+
assert.equal(parseBoolean('0'), false);
|
|
87
88
|
});
|
|
88
89
|
|
|
89
90
|
it('Should parse literal \'false\' value as false', () => {
|
|
90
|
-
|
|
91
|
+
assert.equal(parseBoolean('false'), false);
|
|
91
92
|
});
|
|
92
93
|
|
|
93
94
|
it('Should parse non-numericish value as true', () => {
|
|
94
|
-
|
|
95
|
+
assert.equal(parseBoolean('foo'), true);
|
|
95
96
|
});
|
|
96
97
|
|
|
97
98
|
it('Should parse literal \'FALSE\' value as false', () => {
|
|
98
|
-
|
|
99
|
+
assert.equal(parseBoolean('FALSE'), false);
|
|
99
100
|
});
|
|
100
101
|
|
|
101
102
|
it('Should parse literal \'FAlsE\' value as false', () => {
|
|
102
|
-
|
|
103
|
+
assert.equal(parseBoolean('FAlsE'), false);
|
|
103
104
|
});
|
|
104
105
|
|
|
105
106
|
});
|
|
@@ -114,7 +115,7 @@ describe('utils', () => {
|
|
|
114
115
|
const recordData = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordTitle/record${index}.json`), 'utf8');
|
|
115
116
|
const record = new MarcRecord(JSON.parse(recordData));
|
|
116
117
|
|
|
117
|
-
|
|
118
|
+
assert.equal(getRecordTitle(record), title);
|
|
118
119
|
});
|
|
119
120
|
});
|
|
120
121
|
});
|
|
@@ -129,18 +130,18 @@ describe('utils', () => {
|
|
|
129
130
|
const recordData = fs.readFileSync(path.join(FIXTURES_PATH, `getRecordStandardIdentifiers/record${index}.json`), 'utf8');
|
|
130
131
|
const record = new MarcRecord(JSON.parse(recordData));
|
|
131
132
|
|
|
132
|
-
|
|
133
|
+
assert.deepStrictEqual(getRecordStandardIdentifiers(record), identifiers);
|
|
133
134
|
});
|
|
134
135
|
});
|
|
135
136
|
});
|
|
136
137
|
|
|
137
138
|
describe('clone', () => {
|
|
138
|
-
it('Should clone an object', (
|
|
139
|
-
const obj = JSON.parse(fs.readFileSync(path.join(FIXTURES_PATH, `clone
|
|
139
|
+
it('Should clone an object', () => {
|
|
140
|
+
const obj = JSON.parse(fs.readFileSync(path.join(FIXTURES_PATH, `clone/1/obj.json`), 'utf8'));
|
|
140
141
|
const cloned = clone(obj);
|
|
141
142
|
|
|
142
|
-
|
|
143
|
-
|
|
143
|
+
assert.equal(Object.is(obj, cloned), false);
|
|
144
|
+
assert.deepStrictEqual(cloned, obj);
|
|
144
145
|
});
|
|
145
146
|
});
|
|
146
147
|
});
|
package/dist/error.spec.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _chai = require("chai");
|
|
5
|
-
var _error = _interopRequireDefault(require("./error"));
|
|
6
|
-
describe('error', () => {
|
|
7
|
-
it('Should construct the expected instance', () => {
|
|
8
|
-
const error = new _error.default(200, 'foobar');
|
|
9
|
-
(0, _chai.expect)(error).to.be.an.instanceOf(Error);
|
|
10
|
-
(0, _chai.expect)(error.status).to.equal(200);
|
|
11
|
-
(0, _chai.expect)(error.payload).to.equal('foobar');
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
//# sourceMappingURL=error.spec.js.map
|
package/dist/error.spec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.spec.js","names":["_chai","require","_error","_interopRequireDefault","describe","it","error","CommonsError","expect","to","be","an","instanceOf","Error","status","equal","payload"],"sources":["../src/error.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport CommonsError from './error';\n\ndescribe('error', () => {\n it('Should construct the expected instance', () => {\n const error = new CommonsError(200, 'foobar');\n\n expect(error).to.be.an.instanceOf(Error);\n expect(error.status).to.equal(200);\n expect(error.payload).to.equal('foobar');\n });\n});\n"],"mappings":";;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEAG,QAAQ,CAAC,OAAO,EAAE,MAAM;EACtBC,EAAE,CAAC,wCAAwC,EAAE,MAAM;IACjD,MAAMC,KAAK,GAAG,IAAIC,cAAY,CAAC,GAAG,EAAE,QAAQ,CAAC;IAE7C,IAAAC,YAAM,EAACF,KAAK,CAAC,CAACG,EAAE,CAACC,EAAE,CAACC,EAAE,CAACC,UAAU,CAACC,KAAK,CAAC;IACxC,IAAAL,YAAM,EAACF,KAAK,CAACQ,MAAM,CAAC,CAACL,EAAE,CAACM,KAAK,CAAC,GAAG,CAAC;IAClC,IAAAP,YAAM,EAACF,KAAK,CAACU,OAAO,CAAC,CAACP,EAAE,CAACM,KAAK,CAAC,QAAQ,CAAC;EAC1C,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _chai = require("chai");
|
|
5
|
-
var _subRecordPicker = require("./subRecordPicker");
|
|
6
|
-
var _fixura = require("@natlibfi/fixura");
|
|
7
|
-
var _fixugenHttpClient = _interopRequireDefault(require("@natlibfi/fixugen-http-client"));
|
|
8
|
-
describe('subRecordPicker', () => {
|
|
9
|
-
const sruUrl = 'https://sru';
|
|
10
|
-
const retrieveAll = false;
|
|
11
|
-
describe('createSubrecordPicker', () => {
|
|
12
|
-
it('Client should have methods', () => {
|
|
13
|
-
const client = (0, _subRecordPicker.createSubrecordPicker)(sruUrl, retrieveAll);
|
|
14
|
-
(0, _chai.expect)(client).to.respondTo('readAllSubrecords');
|
|
15
|
-
(0, _chai.expect)(client).to.respondTo('readSomeSubrecords');
|
|
16
|
-
});
|
|
17
|
-
it('Create client should work with just one parametter', () => {
|
|
18
|
-
const client = (0, _subRecordPicker.createSubrecordPicker)(sruUrl);
|
|
19
|
-
(0, _chai.expect)(client).to.respondTo('readAllSubrecords');
|
|
20
|
-
(0, _chai.expect)(client).to.respondTo('readSomeSubrecords');
|
|
21
|
-
});
|
|
22
|
-
it('Create client should have at least one parametter', () => {
|
|
23
|
-
(0, _chai.expect)(_subRecordPicker.createSubrecordPicker).to.throw();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
(0, _fixugenHttpClient.default)({
|
|
27
|
-
callback,
|
|
28
|
-
path: [__dirname, '..', 'test-fixtures', 'subRecordPicker']
|
|
29
|
-
});
|
|
30
|
-
async function callback({
|
|
31
|
-
getFixture,
|
|
32
|
-
method,
|
|
33
|
-
sruUrl,
|
|
34
|
-
retrieveAll,
|
|
35
|
-
recordId
|
|
36
|
-
}) {
|
|
37
|
-
const client = (0, _subRecordPicker.createSubrecordPicker)(sruUrl, retrieveAll);
|
|
38
|
-
const expectedRecords = getFixture({
|
|
39
|
-
components: ['expected-records.json'],
|
|
40
|
-
reader: _fixura.READERS.JSON
|
|
41
|
-
});
|
|
42
|
-
const {
|
|
43
|
-
records
|
|
44
|
-
} = await client[method](recordId);
|
|
45
|
-
(0, _chai.expect)(format()).to.eql(expectedRecords);
|
|
46
|
-
function format() {
|
|
47
|
-
return records.map(r => r.toObject());
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
//# sourceMappingURL=subRecordPicker.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subRecordPicker.spec.js","names":["_chai","require","_subRecordPicker","_fixura","_fixugenHttpClient","_interopRequireDefault","describe","sruUrl","retrieveAll","it","client","createSubrecordPicker","expect","to","respondTo","throw","generateTests","callback","path","__dirname","getFixture","method","recordId","expectedRecords","components","reader","READERS","JSON","records","format","eql","map","r","toObject"],"sources":["../src/subRecordPicker.spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {createSubrecordPicker} from './subRecordPicker';\nimport {READERS} from '@natlibfi/fixura';\nimport generateTests from '@natlibfi/fixugen-http-client';\n\ndescribe('subRecordPicker', () => {\n const sruUrl = 'https://sru';\n const retrieveAll = false;\n\n describe('createSubrecordPicker', () => {\n it('Client should have methods', () => {\n const client = createSubrecordPicker(sruUrl, retrieveAll);\n expect(client).to.respondTo('readAllSubrecords');\n expect(client).to.respondTo('readSomeSubrecords');\n });\n\n it('Create client should work with just one parametter', () => {\n const client = createSubrecordPicker(sruUrl);\n expect(client).to.respondTo('readAllSubrecords');\n expect(client).to.respondTo('readSomeSubrecords');\n });\n\n it('Create client should have at least one parametter', () => {\n expect(createSubrecordPicker).to.throw();\n });\n });\n\n generateTests({\n callback,\n path: [__dirname, '..', 'test-fixtures', 'subRecordPicker']\n });\n\n async function callback({getFixture, method, sruUrl, retrieveAll, recordId}) {\n const client = createSubrecordPicker(sruUrl, retrieveAll);\n const expectedRecords = getFixture({components: ['expected-records.json'], reader: READERS.JSON});\n const {records} = await client[method](recordId);\n\n expect(format()).to.eql(expectedRecords);\n\n function format() {\n return records.map(r => r.toObject());\n }\n }\n});\n"],"mappings":";;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAEAK,QAAQ,CAAC,iBAAiB,EAAE,MAAM;EAChC,MAAMC,MAAM,GAAG,aAAa;EAC5B,MAAMC,WAAW,GAAG,KAAK;EAEzBF,QAAQ,CAAC,uBAAuB,EAAE,MAAM;IACtCG,EAAE,CAAC,4BAA4B,EAAE,MAAM;MACrC,MAAMC,MAAM,GAAG,IAAAC,sCAAqB,EAACJ,MAAM,EAAEC,WAAW,CAAC;MACzD,IAAAI,YAAM,EAACF,MAAM,CAAC,CAACG,EAAE,CAACC,SAAS,CAAC,mBAAmB,CAAC;MAChD,IAAAF,YAAM,EAACF,MAAM,CAAC,CAACG,EAAE,CAACC,SAAS,CAAC,oBAAoB,CAAC;IACnD,CAAC,CAAC;IAEFL,EAAE,CAAC,oDAAoD,EAAE,MAAM;MAC7D,MAAMC,MAAM,GAAG,IAAAC,sCAAqB,EAACJ,MAAM,CAAC;MAC5C,IAAAK,YAAM,EAACF,MAAM,CAAC,CAACG,EAAE,CAACC,SAAS,CAAC,mBAAmB,CAAC;MAChD,IAAAF,YAAM,EAACF,MAAM,CAAC,CAACG,EAAE,CAACC,SAAS,CAAC,oBAAoB,CAAC;IACnD,CAAC,CAAC;IAEFL,EAAE,CAAC,mDAAmD,EAAE,MAAM;MAC5D,IAAAG,YAAM,EAACD,sCAAqB,CAAC,CAACE,EAAE,CAACE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAAC,0BAAa,EAAC;IACZC,QAAQ;IACRC,IAAI,EAAE,CAACC,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,iBAAiB;EAC5D,CAAC,CAAC;EAEF,eAAeF,QAAQA,CAAC;IAACG,UAAU;IAAEC,MAAM;IAAEd,MAAM;IAAEC,WAAW;IAAEc;EAAQ,CAAC,EAAE;IAC3E,MAAMZ,MAAM,GAAG,IAAAC,sCAAqB,EAACJ,MAAM,EAAEC,WAAW,CAAC;IACzD,MAAMe,eAAe,GAAGH,UAAU,CAAC;MAACI,UAAU,EAAE,CAAC,uBAAuB,CAAC;MAAEC,MAAM,EAAEC,eAAO,CAACC;IAAI,CAAC,CAAC;IACjG,MAAM;MAACC;IAAO,CAAC,GAAG,MAAMlB,MAAM,CAACW,MAAM,CAAC,CAACC,QAAQ,CAAC;IAEhD,IAAAV,YAAM,EAACiB,MAAM,CAAC,CAAC,CAAC,CAAChB,EAAE,CAACiB,GAAG,CAACP,eAAe,CAAC;IAExC,SAASM,MAAMA,CAAA,EAAG;MAChB,OAAOD,OAAO,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,QAAQ,CAAC,CAAC,CAAC;IACvC;EACF;AACF,CAAC,CAAC","ignoreList":[]}
|