feat: Expect plugins to return Promises

BREAKING CHANGE: Each plugin is expected to return an async function or a Promise returning function. The callback parameter is not passed to plugins anymore.
This commit is contained in:
Pierre Vanduynslager
2017-11-24 21:56:15 -05:00
parent d4c7605f68
commit 5bec59b26b
9 changed files with 37 additions and 60 deletions
+4 -7
View File
@@ -1,4 +1,3 @@
import {callbackify} from 'util';
import test from 'ava';
import {noop} from 'lodash';
import {stub, match} from 'sinon';
@@ -39,7 +38,7 @@ test('Normalize and load plugin that retuns multiple functions', t => {
test('Wrap plugin in a function that validate the output of the plugin', async t => {
const pluginFunction = stub().resolves(1);
const plugin = normalize('', callbackify(pluginFunction), t.context.logger, {
const plugin = normalize('', pluginFunction, t.context.logger, {
validator: output => output === 1,
message: 'The output must be 1',
});
@@ -53,7 +52,7 @@ test('Wrap plugin in a function that validate the output of the plugin', async t
test('Plugin is called with "pluginConfig" (omitting "path") and input', async t => {
const pluginFunction = stub().resolves();
const conf = {path: callbackify(pluginFunction), conf: 'confValue'};
const conf = {path: pluginFunction, conf: 'confValue'};
const plugin = normalize('', conf, t.context.logger);
await plugin('param');
@@ -61,9 +60,8 @@ test('Plugin is called with "pluginConfig" (omitting "path") and input', async t
});
test('Prevent plugins to modify "pluginConfig"', async t => {
const pluginFunction = stub().callsFake((pluginConfig, options, cb) => {
const pluginFunction = stub().callsFake(pluginConfig => {
pluginConfig.conf.subConf = 'otherConf';
cb();
});
const conf = {path: pluginFunction, conf: {subConf: 'originalConf'}};
const plugin = normalize('', conf, t.context.logger);
@@ -73,9 +71,8 @@ test('Prevent plugins to modify "pluginConfig"', async t => {
});
test('Prevent plugins to modify its input', async t => {
const pluginFunction = stub().callsFake((pluginConfig, options, cb) => {
const pluginFunction = stub().callsFake((pluginConfig, options) => {
options.param.subParam = 'otherParam';
cb();
});
const input = {param: {subParam: 'originalSubParam'}};
const plugin = normalize('', pluginFunction, t.context.logger);