@devotis/bouquet
Version:
A bouquet of little functions, wrappers and libraries that I use across projects and clients 💐
79 lines (73 loc) • 2.17 kB
JavaScript
const tape = require('tape');
tape('functions', (t) => {
const expected = {
logger: {
index: ['info', 'warn', 'error', 'debug'],
},
mssql: {
mssql: [
'connect',
'query',
'close',
'all',
'one',
'tag',
'cp',
'mssql',
],
},
express: {
utils: ['getRemoteAddress'],
middleware: [
'ensureAuthenticated',
'ensureCsrfProtected',
'ensureNocache',
'ensureTraceProtected',
],
session: ['session', 'getRedisStore'],
setup: [
'setupErrorHandling',
'setupPostgraphile',
'setupStartServer',
],
},
mailjet: {
index: ['connect', 'send'],
},
pg: {
index: [
'getConnectionString',
'connect',
'getClient',
'query',
'queryAsRole',
'queryWithContext',
'sql',
],
},
};
// iterate over submodules
Object.entries(expected).forEach(([submodule, value]) => {
const actualFns = Object.keys(require(`../src/${submodule}`));
// iterate over expected files/folders in submodules
Object.entries(value).forEach(([folder, arr]) => {
// iterate over its expected functions
arr.forEach((expectedFnName) => {
const foundIndex = actualFns.indexOf(expectedFnName);
t.ok(
foundIndex > -1,
`bouquet/${submodule} exports function "${expectedFnName}" (in ${folder})`
);
actualFns.splice(foundIndex, 1);
});
});
t.equal(
actualFns.length,
0,
`bouquet/${submodule} also exports these unexpected functions: ${actualFns.join(
', '
)}`
);
});
t.end();
});