describe('factory vnModuleLoader', () => { let vnModuleLoader; let $scope; beforeEach(ngModule('vnCore')); beforeEach(angular.mock.inject((_vnModuleLoader_, $rootScope, $window) => { vnModuleLoader = _vnModuleLoader_; $scope = $rootScope; $window.routes = [{module: 'myModule'}]; })); describe('load()', () => { it('should return truthy promise if the module was loaded', async() => { vnModuleLoader._loaded.myModule = true; let result = await vnModuleLoader.load('myModule', {myValidations: () => {}}); expect(result).toEqual(true); }); it('should return a promise if the module was still a promise', () => { vnModuleLoader._loaded.myModule = new Promise(() => { return 'I promise you a module!'; }); let result = vnModuleLoader.load('myModule', {myValidations: () => {}}); expect(result).toEqual(jasmine.any(Promise)); }); it('should return an error if the module wasnt loaded', done => { vnModuleLoader._loaded.myModule = false; vnModuleLoader.load('myModule', {myValidations: () => {}}) .then(() => { done.fail('this must fail'); }) .catch(error => { expect(error.toString()).toEqual(`Error: Module dependency loop detected: myModule`); done(); }); $scope.$apply(); }); }); });