UNPKG

aquameta-datum

Version:

Service layer for the Aquameta database API

95 lines (91 loc) 9.74 kB
import test from 'tape'; import endpoint from '../../query/endpoint.js'; import * as fetchExport from '../../query/fetch.js'; import sinon from 'sinon'; test('#endpoint', async t => { const fakeFetch = (url, options) => { t.is(url, '/db/v3/relation/endpoint/session'); t.is(options.method, 'POST'); t.is(options.body, void 0, 'body is not added with no data'); t.true('credentials' in options, 'some form of credentials are used'); return { json: sinon.fake.returns(Promise.resolve({ result: [{ row: {} }] })) }; }; sinon.stub(fetchExport, 'fetch').callsFake(fakeFetch); const client = { url: '/db/', version: 'v3' }; const query = { url: '/relation//endpoint/session/', method: 'POST', args: {}, data: null }; await endpoint(client, query); fetchExport.fetch.restore(); t.end(); }); test('#endpoint - with data', async t => { const fakeFetch = (url, options) => { t.is(typeof options.body, 'string', 'body is a string'); t.is(options.body, '{"key":"value"}', 'body is stringified'); return { json: sinon.fake.returns(Promise.resolve({ result: [{ row: {} }] })) }; }; sinon.stub(fetchExport, 'fetch').callsFake(fakeFetch); const query = { url: '/relation//endpoint/session/', method: 'POST', args: {}, data: { key: 'value' } }; await endpoint({}, query); fetchExport.fetch.restore(); t.end(); }); test('#endpoint - with args', async t => { const argsString = 'limit=5&order_by=name'; const args = { order: [{ column: 'name', direction: 'asc' }], limit: 5 }; const client = { url: '/db', version: 'v3' }; const query = { url: 'relation/endpoint/session', args }; const fakeFetch = url => { t.is(url, `${client.url}/${client.version}/${query.url}?${argsString}`, 'adds query string'); return { json: sinon.fake.returns(Promise.resolve({ result: [{ row: {} }] })) }; }; sinon.stub(fetchExport, 'fetch').callsFake(fakeFetch); await endpoint(client, query); fetchExport.fetch.restore(); t.end(); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVuZHBvaW50LmpzIl0sIm5hbWVzIjpbInRlc3QiLCJlbmRwb2ludCIsImZldGNoRXhwb3J0Iiwic2lub24iLCJ0IiwiZmFrZUZldGNoIiwidXJsIiwib3B0aW9ucyIsImlzIiwibWV0aG9kIiwiYm9keSIsInRydWUiLCJqc29uIiwiZmFrZSIsInJldHVybnMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc3VsdCIsInJvdyIsInN0dWIiLCJjYWxsc0Zha2UiLCJjbGllbnQiLCJ2ZXJzaW9uIiwicXVlcnkiLCJhcmdzIiwiZGF0YSIsImZldGNoIiwicmVzdG9yZSIsImVuZCIsImtleSIsImFyZ3NTdHJpbmciLCJvcmRlciIsImNvbHVtbiIsImRpcmVjdGlvbiIsImxpbWl0Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxJQUFQLE1BQWlCLE1BQWpCO0FBQ0EsT0FBT0MsUUFBUCxNQUFxQix5QkFBckI7QUFDQSxPQUFPLEtBQUtDLFdBQVosTUFBNkIsc0JBQTdCO0FBQ0EsT0FBT0MsS0FBUCxNQUFrQixPQUFsQjtBQUVBSCxJQUFJLENBQUMsV0FBRCxFQUFjLE1BQU1JLENBQU4sSUFBVztBQUMzQixRQUFNQyxTQUFTLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxPQUFOLEtBQWtCO0FBQ2xDSCxJQUFBQSxDQUFDLENBQUNJLEVBQUYsQ0FBS0YsR0FBTCxFQUFVLGtDQUFWO0FBQ0FGLElBQUFBLENBQUMsQ0FBQ0ksRUFBRixDQUFLRCxPQUFPLENBQUNFLE1BQWIsRUFBcUIsTUFBckI7QUFDQUwsSUFBQUEsQ0FBQyxDQUFDSSxFQUFGLENBQUtELE9BQU8sQ0FBQ0csSUFBYixFQUFtQixLQUFLLENBQXhCLEVBQTJCLGdDQUEzQjtBQUNBTixJQUFBQSxDQUFDLENBQUNPLElBQUYsQ0FBTyxpQkFBaUJKLE9BQXhCLEVBQWlDLG1DQUFqQztBQUNBLFdBQU87QUFDTEssTUFBQUEsSUFBSSxFQUFFVCxLQUFLLENBQUNVLElBQU4sQ0FBV0MsT0FBWCxDQUNKQyxPQUFPLENBQUND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REYsRUFFRyxHQUFFZSxNQUFNLENBQUNmLEdBQUksSUFBR2UsTUFBTSxDQUFDQyxPQUFRLElBQUdDLEtBQUssQ0FBQ2pCLEdBQUksSUFBR3dCLFVBQVcsRUFGN0QsRUFHRSxtQkFIRjtBQUtBLFdBQU87QUFDTGxCLE1BQUFBLElBQUksRUFBRVQsS0FBSyxDQUFDVSxJQUFOLENBQVdDLE9BQVgsQ0FDSkMsT0FBTyxDQUFDQyxPQUFSLENBQWdCO0FBQ2RDLFFBQUFBLE1BQU0sRUFBRSxDQUFDO0FBQUNDLFVBQUFBLEdBQUcsRUFBRTtBQUFOLFNBQUQ7QUFETSxPQUFoQixDQURJO0FBREQsS0FBUDtBQU9ELEdBYkQ7O0FBY0FmLEVBQUFBLEtBQUssQ0FBQ2dCLElBQU4sQ0FBV2pCLFdBQVgsRUFBd0IsT0FBeEIsRUFBaUNrQixTQUFqQyxDQUEyQ2YsU0FBM0M7QUFFQSxRQUFNSixRQUFRLENBQUNvQixNQUFELEVBQVNFLEtBQVQsQ0FBZDtBQUNBckIsRUFBQUEsV0FBVyxDQUFDd0IsS0FBWixDQUFrQkMsT0FBbEI7QUFDQXZCLEVBQUFBLENBQUMsQ0FBQ3dCLEdBQUY7QUFDRCxDQXZDRyxDQUFKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRlc3QgZnJvbSAndGFwZSc7XG5pbXBvcnQgZW5kcG9pbnQgZnJvbSAnLi4vLi4vcXVlcnkvZW5kcG9pbnQuanMnO1xuaW1wb3J0ICogYXMgZmV0Y2hFeHBvcnQgZnJvbSAnLi4vLi4vcXVlcnkvZmV0Y2guanMnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcblxudGVzdCgnI2VuZHBvaW50JywgYXN5bmMgdCA9PiB7XG4gIGNvbnN0IGZha2VGZXRjaCA9ICh1cmwsIG9wdGlvbnMpID0+IHtcbiAgICB0LmlzKHVybCwgJy9kYi92My9yZWxhdGlvbi9lbmRwb2ludC9zZXNzaW9uJyk7XG4gICAgdC5pcyhvcHRpb25zLm1ldGhvZCwgJ1BPU1QnKTtcbiAgICB0LmlzKG9wdGlvbnMuYm9keSwgdm9pZCAwLCAnYm9keSBpcyBub3QgYWRkZWQgd2l0aCBubyBkYXRhJyk7XG4gICAgdC50cnVlKCdjcmVkZW50aWFscycgaW4gb3B0aW9ucywgJ3NvbWUgZm9ybSBvZiBjcmVkZW50aWFscyBhcmUgdXNlZCcpO1xuICAgIHJldHVybiB7XG4gICAgICBqc29uOiBzaW5vbi5mYWtlLnJldHVybnMoXG4gICAgICAgIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgcmVzdWx0OiBbe3Jvdzoge319XSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgIH07XG4gIH07XG4gIHNpbm9uLnN0dWIoZmV0Y2hFeHBvcnQsICdmZXRjaCcpLmNhbGxzRmFrZShmYWtlRmV0Y2gpO1xuXG4gIGNvbnN0IGNsaWVudCA9IHtcbiAgICB1cmw6ICcvZGIvJyxcbiAgICB2ZXJzaW9uOiAndjMnLFxuICB9O1xuICBjb25zdCBxdWVyeSA9IHtcbiAgICB1cmw6ICcvcmVsYXRpb24vL2VuZHBvaW50L3Nlc3Npb24vJyxcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBhcmdzOiB7fSxcbiAgICBkYXRhOiBudWxsLFxuICB9O1xuICBhd2FpdCBlbmRwb2ludChjbGllbnQsIHF1ZXJ5KTtcbiAgZmV0Y2hFeHBvcnQuZmV0Y2gucmVzdG9yZSgpO1xuICB0LmVuZCgpO1xufSk7XG5cbnRlc3QoJyNlbmRwb2ludCAtIHdpdGggZGF0YScsIGFzeW5jIHQgPT4ge1xuICBjb25zdCBmYWtlRmV0Y2ggPSAodXJsLCBvcHRpb25zKSA9PiB7XG4gICAgdC5pcyh0eXBlb2Ygb3B0aW9ucy5ib2R5LCAnc3RyaW5nJywgJ2JvZHkgaXMgYSBzdHJpbmcnKTtcbiAgICB0LmlzKG9wdGlvbnMuYm9keSwgJ3tcImtleVwiOlwidmFsdWVcIn0nLCAnYm9keSBpcyBzdHJpbmdpZmllZCcpO1xuICAgIHJldHVybiB7XG4gICAgICBqc29uOiBzaW5vbi5mYWtlLnJldHVybnMoXG4gICAgICAgIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgcmVzdWx0OiBbe3Jvdzoge319XSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgIH07XG4gIH07XG4gIHNpbm9uLnN0dWIoZmV0Y2hFeHBvcnQsICdmZXRjaCcpLmNhbGxzRmFrZShmYWtlRmV0Y2gpO1xuXG4gIGNvbnN0IHF1ZXJ5ID0ge1xuICAgIHVybDogJy9yZWxhdGlvbi8vZW5kcG9pbnQvc2Vzc2lvbi8nLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGFyZ3M6IHt9LFxuICAgIGRhdGE6IHtrZXk6ICd2YWx1ZSd9LFxuICB9O1xuICBhd2FpdCBlbmRwb2ludCh7fSwgcXVlcnkpO1xuICBmZXRjaEV4cG9ydC5mZXRjaC5yZXN0b3JlKCk7XG4gIHQuZW5kKCk7XG59KTtcblxudGVzdCgnI2VuZHBvaW50IC0gd2l0aCBhcmdzJywgYXN5bmMgdCA9PiB7XG4gIGNvbnN0IGFyZ3NTdHJpbmcgPSAnbGltaXQ9NSZvcmRlcl9ieT1uYW1lJztcbiAgY29uc3QgYXJncyA9IHtcbiAgICBvcmRlcjogW1xuICAgICAge1xuICAgICAgICBjb2x1bW46ICduYW1lJyxcbiAgICAgICAgZGlyZWN0aW9uOiAnYXNjJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBsaW1pdDogNSxcbiAgfTtcbiAgY29uc3QgY2xpZW50ID0ge1xuICAgIHVybDogJy9kYicsXG4gICAgdmVyc2lvbjogJ3YzJyxcbiAgfTtcbiAgY29uc3QgcXVlcnkgPSB7XG4gICAgdXJsOiAncmVsYXRpb24vZW5kcG9pbnQvc2Vzc2lvbicsXG4gICAgYXJncyxcbiAgfTtcblxuICBjb25zdCBmYWtlRmV0Y2ggPSB1cmwgPT4ge1xuICAgIHQuaXMoXG4gICAgICB1cmwsXG4gICAgICBgJHtjbGllbnQudXJsfS8ke2NsaWVudC52ZXJzaW9ufS8ke3F1ZXJ5LnVybH0/JHthcmdzU3RyaW5nfWAsXG4gICAgICAnYWRkcyBxdWVyeSBzdHJpbmcnLFxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGpzb246IHNpbm9uLmZha2UucmV0dXJucyhcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICByZXN1bHQ6IFt7cm93OiB7fX1dLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgfTtcbiAgfTtcbiAgc2lub24uc3R1YihmZXRjaEV4cG9ydCwgJ2ZldGNoJykuY2FsbHNGYWtlKGZha2VGZXRjaCk7XG5cbiAgYXdhaXQgZW5kcG9pbnQoY2xpZW50LCBxdWVyeSk7XG4gIGZldGNoRXhwb3J0LmZldGNoLnJlc3RvcmUoKTtcbiAgdC5lbmQoKTtcbn0pO1xuIl19