UNPKG

@natlibfi/sru-client

Version:
111 lines (106 loc) 4.26 kB
"use strict"; 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