@natlibfi/sru-client
Version:
SRU Javascript client library
111 lines (106 loc) • 4.26 kB
JavaScript
;
var _ = _interopRequireWildcard(require("."));
var _chai = require("chai");
var _fixura = require("@natlibfi/fixura");
var _fixugenHttpClient = _interopRequireDefault(require("@natlibfi/fixugen-http-client"));
var _debug = _interopRequireDefault(require("debug"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
const debug = (0, _debug.default)('@natlibfi/sru-client:test');
(0, _fixugenHttpClient.default)({
callback,
path: [__dirname, '..', 'test-fixtures'],
fixura: {
reader: _fixura.READERS.TEXT
}
});
function callback({
getFixture,
defaultParameters,
method,
error,
expectedError,
expectedNextOffset,
expectedTotalCount
}) {
const expectedRecords = getFixture({
components: ['expected-records.json'],
reader: _fixura.READERS.JSON
});
let recordCount = 0; // eslint-disable-line functional/no-let
const records = []; // eslint-disable-line functional/no-let
const client = (0, _.default)({
...defaultParameters,
url: 'http://foo.bar'
});
return new Promise((resolve, reject) => {
client[method.name](method.parameters)
// eslint-disable-next-line max-statements
.on('error', err => {
debug(`Got error ${err}`);
// eslint-disable-next-line functional/no-conditional-statements
if (err instanceof _.SruSearchError) {
debug(`This is a SruSearchError`);
}
try {
if (expectedError) {
(0, _chai.expect)(err.message).to.match(new RegExp(expectedError.error, 'u'));
// eslint-disable-next-line functional/no-conditional-statements
if (expectedError.expectedErrorInstance === 'SruSearchError') {
debug(`This should be an ${expectedError.expectedErrorInstance}`);
(0, _chai.expect)(err).to.be.instanceOf(_.SruSearchError);
}
return resolve();
}
throw new Error(`Unexpected error: ${error}`);
} catch (err) {
reject(err);
}
}).on('record', record => {
debug(`Got record ${recordCount + 1}: ${record}`);
// eslint-disable-next-line functional/immutable-data
records.push(record);
try {
(0, _chai.expect)(expectedRecords[recordCount]).to.equal(record);
recordCount++; // eslint-disable-line no-plusplus
} catch (err) {
reject(err);
}
}).on('total', totalNumberOfRecords => {
debug(`Got total: ${totalNumberOfRecords}`);
try {
(0, _chai.expect)(Number(expectedTotalCount)).to.equal(totalNumberOfRecords);
} catch (err) {
reject(err);
}
})
// eslint-disable-next-line max-statements
.on('end', nextOffset => {
debug(`Got end, nextOffset: ${nextOffset}`);
debug(`Fetched records: (${records.length}): ${JSON.stringify(records)}`);
debug(`Expected records: (${expectedRecords.length}): ${JSON.stringify(expectedRecords)}`);
(0, _chai.expect)(expectedRecords).to.eql(records);
try {
if (nextOffset) {
debug('Got nextOffset');
(0, _chai.expect)(Number(expectedNextOffset)).to.eql(nextOffset);
return resolve();
}
/*
// if (nextOffset === undefined) {
// expect(expectedNextOffset.to.eql('undefined'));
// return resolve();
//}
*/
if (nextOffset) {
// eslint-disable-line functional/no-conditional-statements
throw new Error(`Unexpected next offset: ${nextOffset}`);
}
resolve();
} catch (err) {
reject(err);
}
});
});
}
//# sourceMappingURL=index.spec.js.map