UNPKG

@natlibfi/sru-client

Version:

SRU Javascript client library

76 lines (75 loc) 2.71 kB
import createClient, { SruSearchError } from "./index.js"; import assert from "node:assert"; import { READERS } from "@natlibfi/fixura"; import generateTests from "@natlibfi/fixugen-http-client"; import createDebugLogger from "debug"; const debug = createDebugLogger("@natlibfi/sru-client:test"); generateTests({ callback, path: [import.meta.dirname, "..", "test-fixtures"], fixura: { reader: READERS.TEXT } }); function callback({ getFixture, defaultParameters, method, error, expectedError, expectedNextOffset, expectedTotalCount }) { const expectedRecords = getFixture({ components: ["expected-records.json"], reader: READERS.JSON }); let recordCount = 0; const records = []; const client = createClient({ ...defaultParameters, url: "http://foo.bar" }); return new Promise((resolve, reject) => { client[method.name](method.parameters).on("error", (err) => { debug(`Got error ${err}`); if (err instanceof SruSearchError) { debug(`This is a SruSearchError`); } try { if (expectedError) { assert.match(err.message, new RegExp(expectedError.error, "u")); if (expectedError.expectedErrorInstance === "SruSearchError") { debug(`This should be an ${expectedError.expectedErrorInstance}`); assert(err instanceof SruSearchError); } return resolve(); } throw new Error(`Unexpected error: ${error}`); } catch (err2) { reject(err2); } }).on("record", (record) => { debug(`Got record ${recordCount + 1}: ${record}`); records.push(record); try { assert.deepEqual(expectedRecords[recordCount], record); recordCount++; } catch (err) { reject(err); } }).on("total", (totalNumberOfRecords) => { debug(`Got total: ${totalNumberOfRecords}`); try { assert.equal(Number(expectedTotalCount), totalNumberOfRecords); } catch (err) { reject(err); } }).on("end", (nextOffset) => { debug(`Got end, nextOffset: ${nextOffset}`); debug(`Fetched records: (${records.length}): ${JSON.stringify(records)}`); debug(`Expected records: (${expectedRecords.length}): ${JSON.stringify(expectedRecords)}`); assert.deepEqual(expectedRecords, records); try { if (nextOffset) { debug("Got nextOffset"); assert.equal(Number(expectedNextOffset), nextOffset); return resolve(); } if (nextOffset) { throw new Error(`Unexpected next offset: ${nextOffset}`); } resolve(); } catch (err) { reject(err); } }); }); } //# sourceMappingURL=index.test.js.map