/// import {DependencyManager} from '../../build/pluginsystem/depmanager'; import {childProcessMock} from '../support/servermocks'; import * as proxyquire from 'proxyquire'; describe('PluginSystem - DependencyManager:', () => { let module: DependencyManager; beforeEach(() => { let depMod = proxyquire('../../build/pluginsystem/depmanager', { 'child_process': childProcessMock }).DependencyManager; module = new depMod(); }); it('initialise without error', (done) => { let testdata = JSON.stringify({ dependencies: { myPlugin: { version: '0.1.1', dependencies: {lodash: {version: '3.4.x'}} }, webend_server: { version: '1.0.0', dependencies: {} }, webend_testpage: { version: '0.0.1', dependencies: { webend_server: {version: '1.0.0'}, lodash: {version: '3.4.x'} } } } }); childProcessMock.execFnArgs = [null, testdata, null]; module.initialise().then((data: any) => { expect(data.myPlugin).toBeUndefined(); expect(data.webend_server).toEqual({ version: '1.0.0', dependencies: {} }); expect(data.webend_testpage).toEqual({ version: '0.0.1', dependencies: { webend_server: { version: '1.0.0', dependencies: {} } } }); expect(Object.keys(data).length).toEqual(2); expect((module).initialised).toBeTruthy(); done(); }); }); it('initialise with extraneous warning', (done) => { spyOn(console, 'log'); let testdata = JSON.stringify({ dependencies: { webend_server: { version: '1.0.0', dependencies: {} } } }); childProcessMock.execFnArgs = [null, testdata, 'npm ERR! extraneous: ... some package not listed']; module.initialise().then((data: any) => { expect(console.log).toHaveBeenCalled(); expect(data).toEqual({ webend_server: { version: '1.0.0', dependencies: {} } }); expect((module).initialised).toBeTruthy(); done(); }); }); it('initialise with error', (done) => { spyOn(DependencyManager, 'filterDependencies'); spyOn(console, 'log'); childProcessMock.execFnArgs = ['Failed!', '', '']; module.initialise().then(() => {}, (err: string) => { expect(err).toEqual('Error on searching for plugins: Failed!'); expect(DependencyManager.filterDependencies).not.toHaveBeenCalled(); expect(console.log).toHaveBeenCalled(); expect((module).initialised).toBeFalsy(); done(); }); }); it('isInitialised', () => { (module).initialised = false; expect(module.isInitialised()).toBeFalsy(); (module).initialised = true; expect(module.isInitialised()).toBeTruthy(); }); it('getPlugins', () => { (module).plugins = 'myPlugins'; expect(module.getPlugins()).toEqual('myPlugins'); }); });