aquameta-datum
Version:
Service layer for the Aquameta database API
95 lines (91 loc) • 9.74 kB
JavaScript
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVuZHBvaW50LmpzIl0sIm5hbWVzIjpbInRlc3QiLCJlbmRwb2ludCIsImZldGNoRXhwb3J0Iiwic2lub24iLCJ0IiwiZmFrZUZldGNoIiwidXJsIiwib3B0aW9ucyIsImlzIiwibWV0aG9kIiwiYm9keSIsInRydWUiLCJqc29uIiwiZmFrZSIsInJldHVybnMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc3VsdCIsInJvdyIsInN0dWIiLCJjYWxsc0Zha2UiLCJjbGllbnQiLCJ2ZXJzaW9uIiwicXVlcnkiLCJhcmdzIiwiZGF0YSIsImZldGNoIiwicmVzdG9yZSIsImVuZCIsImtleSIsImFyZ3NTdHJpbmciLCJvcmRlciIsImNvbHVtbiIsImRpcmVjdGlvbiIsImxpbWl0Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxJQUFQLE1BQWlCLE1BQWpCO0FBQ0EsT0FBT0MsUUFBUCxNQUFxQix5QkFBckI7QUFDQSxPQUFPLEtBQUtDLFdBQVosTUFBNkIsc0JBQTdCO0FBQ0EsT0FBT0MsS0FBUCxNQUFrQixPQUFsQjtBQUVBSCxJQUFJLENBQUMsV0FBRCxFQUFjLE1BQU1JLENBQU4sSUFBVztBQUMzQixRQUFNQyxTQUFTLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxPQUFOLEtBQWtCO0FBQ2xDSCxJQUFBQSxDQUFDLENBQUNJLEVBQUYsQ0FBS0YsR0FBTCxFQUFVLGtDQUFWO0FBQ0FGLElBQUFBLENBQUMsQ0FBQ0ksRUFBRixDQUFLRCxPQUFPLENBQUNFLE1BQWIsRUFBcUIsTUFBckI7QUFDQUwsSUFBQUEsQ0FBQyxDQUFDSSxFQUFGLENBQUtELE9BQU8sQ0FBQ0csSUFBYixFQUFtQixLQUFLLENBQXhCLEVBQTJCLGdDQUEzQjtBQUNBTixJQUFBQSxDQUFDLENBQUNPLElBQUYsQ0FBTyxpQkFBaUJKLE9BQXhCLEVBQWlDLG1DQUFqQztBQUNBLFdBQU87QUFDTEssTUFBQUEsSUFBSSxFQUFFVCxLQUFLLENBQUNVLElBQU4sQ0FBV0MsT0FBWCxDQUNKQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0I7QUFDZEMsUUFBQUEsTUFBTSxFQUFFLENBQUM7QUFBQ0MsVUFBQUEsR0FBRyxFQUFFO0FBQU4sU0FBRDtBQURNLE9BQWhCLENBREk7QUFERCxLQUFQO0FBT0QsR0FaRDs7QUFhQWYsRUFBQUEsS0FBSyxDQUFDZ0IsSUFBTixDQUFXakIsV0FBWCxFQUF3QixPQUF4QixFQUFpQ2tCLFNBQWpDLENBQTJDZixTQUEzQztBQUVBLFFBQU1nQixNQUFNLEdBQUc7QUFDYmYsSUFBQUEsR0FBRyxFQUFFLE1BRFE7QUFFYmdCLElBQUFBLE9BQU8sRUFBRTtBQUZJLEdBQWY7QUFJQSxRQUFNQyxLQUFLLEdBQUc7QUFDWmpCLElBQUFBLEdBQUcsRUFBRSw4QkFETztBQUVaRyxJQUFBQSxNQUFNLEVBQUUsTUFGSTtBQUdaZSxJQUFBQSxJQUFJLEVBQUUsRUFITTtBQUlaQyxJQUFBQSxJQUFJLEVBQUU7QUFKTSxHQUFkO0FBTUEsUUFBTXhCLFFBQVEsQ0FBQ29CLE1BQUQsRUFBU0UsS0FBVCxDQUFkO0FBQ0FyQixFQUFBQSxXQUFXLENBQUN3QixLQUFaLENBQWtCQyxPQUFsQjtBQUNBdkIsRUFBQUEsQ0FBQyxDQUFDd0IsR0FBRjtBQUNELENBN0JHLENBQUo7QUErQkE1QixJQUFJLENBQUMsdUJBQUQsRUFBMEIsTUFBTUksQ0FBTixJQUFXO0FBQ3ZDLFFBQU1DLFNBQVMsR0FBRyxDQUFDQyxHQUFELEVBQU1DLE9BQU4sS0FBa0I7QUFDbENILElBQUFBLENBQUMsQ0FBQ0ksRUFBRixDQUFLLE9BQU9ELE9BQU8sQ0FBQ0csSUFBcEIsRUFBMEIsUUFBMUIsRUFBb0Msa0JBQXBDO0FBQ0FOLElBQUFBLENBQUMsQ0FBQ0ksRUFBRixDQUFLRCxPQUFPLENBQUNHLElBQWIsRUFBbUIsaUJBQW5CLEVBQXNDLHFCQUF0QztBQUNBLFdBQU87QUFDTEUsTUFBQUEsSUFBSSxFQUFFVCxLQUFLLENBQUNVLElBQU4sQ0FBV0MsT0FBWCxDQUNKQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0I7QUFDZEMsUUFBQUEsTUFBTSxFQUFFLENBQUM7QUFBQ0MsVUFBQUEsR0FBRyxFQUFFO0FBQU4sU0FBRDtBQURNLE9BQWhCLENBREk7QUFERCxLQUFQO0FBT0QsR0FWRDs7QUFXQWYsRUFBQUEsS0FBSyxDQUFDZ0IsSUFBTixDQUFXakIsV0FBWCxFQUF3QixPQUF4QixFQUFpQ2tCLFNBQWpDLENBQTJDZixTQUEzQztBQUVBLFFBQU1rQixLQUFLLEdBQUc7QUFDWmpCLElBQUFBLEdBQUcsRUFBRSw4QkFETztBQUVaRyxJQUFBQSxNQUFNLEVBQUUsTUFGSTtBQUdaZSxJQUFBQSxJQUFJLEVBQUUsRUFITTtBQUlaQyxJQUFBQSxJQUFJLEVBQUU7QUFBQ0ksTUFBQUEsR0FBRyxFQUFFO0FBQU47QUFKTSxHQUFkO0FBTUEsUUFBTTVCLFFBQVEsQ0FBQyxFQUFELEVBQUtzQixLQUFMLENBQWQ7QUFDQXJCLEVBQUFBLFdBQVcsQ0FBQ3dCLEtBQVosQ0FBa0JDLE9BQWxCO0FBQ0F2QixFQUFBQSxDQUFDLENBQUN3QixHQUFGO0FBQ0QsQ0F2QkcsQ0FBSjtBQXlCQTVCLElBQUksQ0FBQyx1QkFBRCxFQUEwQixNQUFNSSxDQUFOLElBQVc7QUFDdkMsUUFBTTBCLFVBQVUsR0FBRyx1QkFBbkI7QUFDQSxRQUFNTixJQUFJLEdBQUc7QUFDWE8sSUFBQUEsS0FBSyxFQUFFLENBQ0w7QUFDRUMsTUFBQUEsTUFBTSxFQUFFLE1BRFY7QUFFRUMsTUFBQUEsU0FBUyxFQUFFO0FBRmIsS0FESyxDQURJO0FBT1hDLElBQUFBLEtBQUssRUFBRTtBQVBJLEdBQWI7QUFTQSxRQUFNYixNQUFNLEdBQUc7QUFDYmYsSUFBQUEsR0FBRyxFQUFFLEtBRFE7QUFFYmdCLElBQUFBLE9BQU8sRUFBRTtBQUZJLEdBQWY7QUFJQSxRQUFNQyxLQUFLLEdBQUc7QUFDWmpCLElBQUFBLEdBQUcsRUFBRSwyQkFETztBQUVaa0IsSUFBQUE7QUFGWSxHQUFkOztBQUtBLFFBQU1uQixTQUFTLEdBQUdDLEdBQUcsSUFBSTtBQUN2QkYsSUFBQUEsQ0FBQyxDQUFDSSxFQUFGLENBQ0VGLEdBREYsRUFFRyxHQUFFZSxNQUFNLENBQUNmLEdBQUksSUFBR2UsTUFBTSxDQUFDQyxPQUFRLElBQUdDLEtBQUssQ0FBQ2pCLEdBQUksSUFBR3dCLFVBQVcsRUFGN0QsRUFHRSxtQkFIRjtBQUtBLFdBQU87QUFDTGxCLE1BQUFBLElBQUksRUFBRVQsS0FBSyxDQUFDVSxJQUFOLENBQVdDLE9BQVgsQ0FDSkMsT0FBTyxDQUFDQyxPQUFSLENBQWdCO0FBQ2RDLFFBQUFBLE1BQU0sRUFBRSxDQUFDO0FBQUNDLFVBQUFBLEdBQUcsRUFBRTtBQUFOLFNBQUQ7QUFETSxPQUFoQixDQURJO0FBREQsS0FBUDtBQU9ELEdBYkQ7O0FBY0FmLEVBQUFBLEtBQUssQ0FBQ2dCLElBQU4sQ0FBV2pCLFdBQVgsRUFBd0IsT0FBeEIsRUFBaUNrQixTQUFqQyxDQUEyQ2YsU0FBM0M7QUFFQSxRQUFNSixRQUFRLENBQUNvQixNQUFELEVBQVNFLEtBQVQsQ0FBZDtBQUNBckIsRUFBQUEsV0FBVyxDQUFDd0IsS0FBWixDQUFrQkMsT0FBbEI7QUFDQXZCLEVBQUFBLENBQUMsQ0FBQ3dCLEdBQUY7QUFDRCxDQXZDRyxDQUFKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRlc3QgZnJvbSAndGFwZSc7XG5pbXBvcnQgZW5kcG9pbnQgZnJvbSAnLi4vLi4vcXVlcnkvZW5kcG9pbnQuanMnO1xuaW1wb3J0ICogYXMgZmV0Y2hFeHBvcnQgZnJvbSAnLi4vLi4vcXVlcnkvZmV0Y2guanMnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcblxudGVzdCgnI2VuZHBvaW50JywgYXN5bmMgdCA9PiB7XG4gIGNvbnN0IGZha2VGZXRjaCA9ICh1cmwsIG9wdGlvbnMpID0+IHtcbiAgICB0LmlzKHVybCwgJy9kYi92My9yZWxhdGlvbi9lbmRwb2ludC9zZXNzaW9uJyk7XG4gICAgdC5pcyhvcHRpb25zLm1ldGhvZCwgJ1BPU1QnKTtcbiAgICB0LmlzKG9wdGlvbnMuYm9keSwgdm9pZCAwLCAnYm9keSBpcyBub3QgYWRkZWQgd2l0aCBubyBkYXRhJyk7XG4gICAgdC50cnVlKCdjcmVkZW50aWFscycgaW4gb3B0aW9ucywgJ3NvbWUgZm9ybSBvZiBjcmVkZW50aWFscyBhcmUgdXNlZCcpO1xuICAgIHJldHVybiB7XG4gICAgICBqc29uOiBzaW5vbi5mYWtlLnJldHVybnMoXG4gICAgICAgIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgcmVzdWx0OiBbe3Jvdzoge319XSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgIH07XG4gIH07XG4gIHNpbm9uLnN0dWIoZmV0Y2hFeHBvcnQsICdmZXRjaCcpLmNhbGxzRmFrZShmYWtlRmV0Y2gpO1xuXG4gIGNvbnN0IGNsaWVudCA9IHtcbiAgICB1cmw6ICcvZGIvJyxcbiAgICB2ZXJzaW9uOiAndjMnLFxuICB9O1xuICBjb25zdCBxdWVyeSA9IHtcbiAgICB1cmw6ICcvcmVsYXRpb24vL2VuZHBvaW50L3Nlc3Npb24vJyxcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBhcmdzOiB7fSxcbiAgICBkYXRhOiBudWxsLFxuICB9O1xuICBhd2FpdCBlbmRwb2ludChjbGllbnQsIHF1ZXJ5KTtcbiAgZmV0Y2hFeHBvcnQuZmV0Y2gucmVzdG9yZSgpO1xuICB0LmVuZCgpO1xufSk7XG5cbnRlc3QoJyNlbmRwb2ludCAtIHdpdGggZGF0YScsIGFzeW5jIHQgPT4ge1xuICBjb25zdCBmYWtlRmV0Y2ggPSAodXJsLCBvcHRpb25zKSA9PiB7XG4gICAgdC5pcyh0eXBlb2Ygb3B0aW9ucy5ib2R5LCAnc3RyaW5nJywgJ2JvZHkgaXMgYSBzdHJpbmcnKTtcbiAgICB0LmlzKG9wdGlvbnMuYm9keSwgJ3tcImtleVwiOlwidmFsdWVcIn0nLCAnYm9keSBpcyBzdHJpbmdpZmllZCcpO1xuICAgIHJldHVybiB7XG4gICAgICBqc29uOiBzaW5vbi5mYWtlLnJldHVybnMoXG4gICAgICAgIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgcmVzdWx0OiBbe3Jvdzoge319XSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgIH07XG4gIH07XG4gIHNpbm9uLnN0dWIoZmV0Y2hFeHBvcnQsICdmZXRjaCcpLmNhbGxzRmFrZShmYWtlRmV0Y2gpO1xuXG4gIGNvbnN0IHF1ZXJ5ID0ge1xuICAgIHVybDogJy9yZWxhdGlvbi8vZW5kcG9pbnQvc2Vzc2lvbi8nLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGFyZ3M6IHt9LFxuICAgIGRhdGE6IHtrZXk6ICd2YWx1ZSd9LFxuICB9O1xuICBhd2FpdCBlbmRwb2ludCh7fSwgcXVlcnkpO1xuICBmZXRjaEV4cG9ydC5mZXRjaC5yZXN0b3JlKCk7XG4gIHQuZW5kKCk7XG59KTtcblxudGVzdCgnI2VuZHBvaW50IC0gd2l0aCBhcmdzJywgYXN5bmMgdCA9PiB7XG4gIGNvbnN0IGFyZ3NTdHJpbmcgPSAnbGltaXQ9NSZvcmRlcl9ieT1uYW1lJztcbiAgY29uc3QgYXJncyA9IHtcbiAgICBvcmRlcjogW1xuICAgICAge1xuICAgICAgICBjb2x1bW46ICduYW1lJyxcbiAgICAgICAgZGlyZWN0aW9uOiAnYXNjJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBsaW1pdDogNSxcbiAgfTtcbiAgY29uc3QgY2xpZW50ID0ge1xuICAgIHVybDogJy9kYicsXG4gICAgdmVyc2lvbjogJ3YzJyxcbiAgfTtcbiAgY29uc3QgcXVlcnkgPSB7XG4gICAgdXJsOiAncmVsYXRpb24vZW5kcG9pbnQvc2Vzc2lvbicsXG4gICAgYXJncyxcbiAgfTtcblxuICBjb25zdCBmYWtlRmV0Y2ggPSB1cmwgPT4ge1xuICAgIHQuaXMoXG4gICAgICB1cmwsXG4gICAgICBgJHtjbGllbnQudXJsfS8ke2NsaWVudC52ZXJzaW9ufS8ke3F1ZXJ5LnVybH0/JHthcmdzU3RyaW5nfWAsXG4gICAgICAnYWRkcyBxdWVyeSBzdHJpbmcnLFxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGpzb246IHNpbm9uLmZha2UucmV0dXJucyhcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICByZXN1bHQ6IFt7cm93OiB7fX1dLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgfTtcbiAgfTtcbiAgc2lub24uc3R1YihmZXRjaEV4cG9ydCwgJ2ZldGNoJykuY2FsbHNGYWtlKGZha2VGZXRjaCk7XG5cbiAgYXdhaXQgZW5kcG9pbnQoY2xpZW50LCBxdWVyeSk7XG4gIGZldGNoRXhwb3J0LmZldGNoLnJlc3RvcmUoKTtcbiAgdC5lbmQoKTtcbn0pO1xuIl19