sails-arangojs
Version:
A sails-arangojs adapter for Sails / Waterline
84 lines (75 loc) • 2.91 kB
JavaScript
/* eslint-disable no-console */
/**
* Module dependencies
*/
const TestRunner = require('waternile-adapter-tests');
const packageMD = require('../package.json');
const Adapter = require('../');
// Log an intro message.
console.log(`Testing \`${packageMD.name}\`, a Sails/Waterline adapter.`);
console.log(
`Running \`waterline-adapter-tests\` against ${
packageMD.waterlineAdapter.interfaces.length
} interface(s) and ${
packageMD.waterlineAdapter.features.length
} feature(s)...`,
);
console.log(
`| Interfaces: ${packageMD.waterlineAdapter.interfaces.join(', ')
|| 'n/a'}`,
);
console.log(
`| Extra features: ${packageMD.waterlineAdapter.features.join(', ')
|| 'n/a'}`,
);
console.log();
console.log('> More info about building Waterline adapters:');
console.log(
'> https://sailsjs.com/docs/concepts/extending-sails/adapters/custom-adapters',
);
// Ensure a `url` was specified.
// (https://sailsjs.com/config/datastores#?the-connection-url)
if (!process.env.WATERLINE_ADAPTER_TESTS_URL) {
console.error();
console.error('-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-');
console.error('Cannot run tests: No database connection `url` specified.');
console.error();
console.error('Tip: You can use an environment variable to configure this.');
console.error('For example:');
console.error('```');
console.error(
' WATERLINE_ADAPTER_TESTS_URL=root@localhost:3306/testdb npm test',
);
console.error('```');
console.error('-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-');
process.exit(1);
} // -•
// Use the `waterline-adapter-tests` module to
// run mocha tests against the specified interfaces
// of the currently-implemented Waterline adapter API.
// eslint-disable-next-line no-new
new TestRunner({
// Load the adapter module.
adapter: Adapter,
// Adapter config to use for tests.
config: {
url: process.env.WATERLINE_ADAPTER_TESTS_URL,
},
// The set of adapter interface layers & specific features to test against.
interfaces: packageMD.waterlineAdapter.interfaces,
features: packageMD.waterlineAdapter.features,
});
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//
// Most databases implement 'semantic' and 'queryable' interface layers.
//
// For full interface reference, see:
// https://sailsjs.com/docs/concepts/extending-sails/adapters/custom-adapters
//
// Some features are polyfilled if omitted; allowing optimizations at the adapter
// level for databases that support the feature. For example, if you don't implement
// a `join` method, it will be polyfilled for you by Waterline core (using the same
// "polypopulate" that it uses for cross-datastore joins.) For more on that, talk
// to an adapter maintainer @ https://sailsjs.com/support.
//
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -