From 8c94a1b2d955495865edb7769a6e44e12b899da3 Mon Sep 17 00:00:00 2001 From: Rajesh Segu Date: Wed, 5 Dec 2018 10:55:04 -0800 Subject: [PATCH 1/2] add error message to catch a plugin being added as a middleware --- src/__tests__/index.node.js | 17 +++++++++++++++++ src/base-app.js | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/src/__tests__/index.node.js b/src/__tests__/index.node.js index caf1178d..88720746 100644 --- a/src/__tests__/index.node.js +++ b/src/__tests__/index.node.js @@ -608,3 +608,20 @@ test('enable proxy flag', async t => { t.equal(app._app.proxy, true, 'fusion proxy should be true by default'); t.end(); }); + +test('registering a plugin as a middleware should throw', async t => { + const simplePlugin = createPlugin({ + middleware: () => { + return (ctx, next) => { + return next(); + }; + }, + }); + const app = new BaseApp('el', el => el); + try { + app.middleware(simplePlugin); + } catch (e) { + t.equals(e.message, 'Cannot register plugin as a middleware'); + t.end(); + } +}); diff --git a/src/base-app.js b/src/base-app.js index 3f3e990b..ff878507 100644 --- a/src/base-app.js +++ b/src/base-app.js @@ -112,8 +112,12 @@ class FusionApp { } middleware(deps: *, middleware: *) { if (middleware === undefined) { + if (deps.__plugin__ === true) { + throw new Error('Cannot register plugin as a middleware'); + } middleware = () => deps; } + this.register(createPlugin({deps, middleware})); } enhance(token: Token, enhancer: Function) { From 30aae8cb3884f81688563cdeef5a08d912b7a96a Mon Sep 17 00:00:00 2001 From: Rajesh Segu Date: Thu, 6 Dec 2018 10:45:02 -0800 Subject: [PATCH 2/2] fix flow error --- src/__tests__/index.node.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/__tests__/index.node.js b/src/__tests__/index.node.js index 88720746..7b3442a4 100644 --- a/src/__tests__/index.node.js +++ b/src/__tests__/index.node.js @@ -617,8 +617,10 @@ test('registering a plugin as a middleware should throw', async t => { }; }, }); + const app = new BaseApp('el', el => el); try { + // $FlowFixMe app.middleware(simplePlugin); } catch (e) { t.equals(e.message, 'Cannot register plugin as a middleware');