From 9767a823b68c9aacdc1b350abf1933023520e484 Mon Sep 17 00:00:00 2001 From: Doped Dude Date: Wed, 10 Feb 2016 04:46:37 +0530 Subject: [PATCH] added test cases to validate the middlewares & components configuration custom directory support --- test/compiler.test.js | 73 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 67 insertions(+), 6 deletions(-) diff --git a/test/compiler.test.js b/test/compiler.test.js index ee34e0e..b3c2342 100644 --- a/test/compiler.test.js +++ b/test/compiler.test.js @@ -1546,7 +1546,8 @@ describe('compiler', function() { describe('for middleware', function() { - function testMiddlewareRegistration(middlewareId, sourceFile) { + function testMiddlewareRegistration(middlewareId, sourceFile, + alternativeDirTest) { var json = { initial: { }, @@ -1560,7 +1561,21 @@ describe('compiler', function() { appdir.writeConfigFileSync('middleware.json', json); - var instructions = boot.compile(appdir.PATH); + var instructions; + + if (alternativeDirTest === true) { + var customDir = path.resolve(appdir.PATH, 'custom'); + fs.mkdirsSync(customDir); + fs.renameSync( + path.resolve(appdir.PATH, 'middleware.json'), + path.resolve(customDir, 'middleware.json')); + instructions = boot.compile({ + appRootDir: appdir.PATH, + middlewareRootDir: path.resolve(appdir.PATH, 'custom') + }); + } else { + instructions = boot.compile(appdir.PATH); + } expect(instructions.middleware).to.eql({ phases: ['initial', 'custom'], @@ -1588,11 +1603,23 @@ describe('compiler', function() { sourceFileForUrlNotFound); }); + it('Suports `middlewareRootDir` Option And ' + + 'emits middleware instructions', function() { + testMiddlewareRegistration('loopback/server/middleware/url-not-found', + sourceFileForUrlNotFound, true); + }); + it('emits middleware instructions for fragment', function() { testMiddlewareRegistration('loopback#url-not-found', sourceFileForUrlNotFound); }); + it('Suports `middlewareRootDir` Option And ' + + 'emits middleware instructions for fragment', function() { + testMiddlewareRegistration('loopback#url-not-found', + sourceFileForUrlNotFound, true); + }); + it('fails when a module middleware cannot be resolved', function() { appdir.writeConfigFileSync('middleware.json', { final: { @@ -2209,21 +2236,46 @@ describe('compiler', function() { }); describe('for components', function() { - it('loads component configs from multiple files', function() { + // Validate merging of component configuration from different locations + function testComponentConfigsMerge(alternativeDirTest) { appdir.createConfigFilesSync(); appdir.writeConfigFileSync('component-config.json', { debug: { option: 'value' } }); appdir.writeConfigFileSync('component-config.local.json', { - debug: { local: 'applied' } + debug: {local: 'applied'} }); var env = process.env.NODE_ENV || 'development'; appdir.writeConfigFileSync('component-config.' + env + '.json', { - debug: { env: 'applied' } + debug: {env: 'applied'} }); - var instructions = boot.compile(appdir.PATH); + var instructions; + + if (alternativeDirTest === true) { + var customDir = path.resolve(appdir.PATH, 'custom'); + fs.mkdirsSync(customDir); + + fs.renameSync( + path.resolve(appdir.PATH, 'component-config.json'), + path.resolve(customDir, 'component-config.json')); + + fs.renameSync( + path.resolve(appdir.PATH, 'component-config.local.json'), + path.resolve(customDir, 'component-config.local.json')); + + fs.renameSync( + path.resolve(appdir.PATH, 'component-config.' + env + '.json'), + path.resolve(customDir, 'component-config.' + env + '.json')); + + instructions = boot.compile({ + appRootDir: appdir.PATH, + componentRootDir: path.resolve(appdir.PATH, 'custom') + }); + } else { + instructions = boot.compile(appdir.PATH); + } var component = instructions.components[0]; expect(component).to.eql({ @@ -2234,6 +2286,15 @@ describe('compiler', function() { env: 'applied' } }); + } + + it('loads component configs from multiple files', function() { + testComponentConfigsMerge(); + }); + + it('Suports `componentRootDir` Option And ' + + 'loads component configs from multiple files', function() { + testComponentConfigsMerge(true); }); it('loads component relative to appRootDir', function() {