From 5b74b7185b3e36cc99f75690c8d62f6917c0d1a8 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Fri, 27 Jul 2012 11:29:48 -0700 Subject: [PATCH] test(bootstrap): test exception siling during bootstrap Closes #1018 --- test/AngularSpec.js | 60 ++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/test/AngularSpec.js b/test/AngularSpec.js index 0c89a3f2c8ed..476702968ec1 100644 --- a/test/AngularSpec.js +++ b/test/AngularSpec.js @@ -322,7 +322,7 @@ describe('angular', function() { describe('angularInit', function() { - var bootstrap; + var bootstrapSpy; var element; beforeEach(function() { @@ -341,74 +341,83 @@ describe('angular', function() { return element[name]; } }; - bootstrap = jasmine.createSpy('bootstrap'); + bootstrapSpy = jasmine.createSpy('bootstrapSpy'); }); it('should do nothing when not found', function() { - angularInit(element, bootstrap); - expect(bootstrap).not.toHaveBeenCalled(); + angularInit(element, bootstrapSpy); + expect(bootstrapSpy).not.toHaveBeenCalled(); }); it('should look for ngApp directive as attr', function() { var appElement = jqLite('
')[0]; element.querySelectorAll['[ng-app]'] = [appElement]; - angularInit(element, bootstrap); - expect(bootstrap).toHaveBeenCalledOnceWith(appElement, ['ABC']); + angularInit(element, bootstrapSpy); + expect(bootstrapSpy).toHaveBeenCalledOnceWith(appElement, ['ABC']); }); it('should look for ngApp directive in id', function() { var appElement = jqLite('
')[0]; jqLite(document.body).append(appElement); - angularInit(element, bootstrap); - expect(bootstrap).toHaveBeenCalledOnceWith(appElement, ['ABC']); + angularInit(element, bootstrapSpy); + expect(bootstrapSpy).toHaveBeenCalledOnceWith(appElement, ['ABC']); }); it('should look for ngApp directive in className', function() { var appElement = jqLite('
')[0]; element.querySelectorAll['.ng\\:app'] = [appElement]; - angularInit(element, bootstrap); - expect(bootstrap).toHaveBeenCalledOnceWith(appElement, ['ABC']); + angularInit(element, bootstrapSpy); + expect(bootstrapSpy).toHaveBeenCalledOnceWith(appElement, ['ABC']); }); it('should look for ngApp directive using querySelectorAll', function() { var appElement = jqLite('
')[0]; element.querySelectorAll['[ng\\:app]'] = [ appElement ]; - angularInit(element, bootstrap); - expect(bootstrap).toHaveBeenCalledOnceWith(appElement, ['ABC']); + angularInit(element, bootstrapSpy); + expect(bootstrapSpy).toHaveBeenCalledOnceWith(appElement, ['ABC']); }); it('should bootstrap using class name', function() { var appElement = jqLite('
')[0]; - angularInit(jqLite('
').append(appElement)[0], bootstrap); - expect(bootstrap).toHaveBeenCalledOnceWith(appElement, ['ABC']); + angularInit(jqLite('
').append(appElement)[0], bootstrapSpy); + expect(bootstrapSpy).toHaveBeenCalledOnceWith(appElement, ['ABC']); }); it('should bootstrap anonymously', function() { var appElement = jqLite('
')[0]; element.querySelectorAll['[x-ng-app]'] = [ appElement ]; - angularInit(element, bootstrap); - expect(bootstrap).toHaveBeenCalledOnceWith(appElement, []); + angularInit(element, bootstrapSpy); + expect(bootstrapSpy).toHaveBeenCalledOnceWith(appElement, []); }); it('should bootstrap anonymously using class only', function() { var appElement = jqLite('
')[0]; - angularInit(jqLite('
').append(appElement)[0], bootstrap); - expect(bootstrap).toHaveBeenCalledOnceWith(appElement, []); + angularInit(jqLite('
').append(appElement)[0], bootstrapSpy); + expect(bootstrapSpy).toHaveBeenCalledOnceWith(appElement, []); }); it('should bootstrap if the annotation is on the root element', function() { var appElement = jqLite('
')[0]; - angularInit(appElement, bootstrap); - expect(bootstrap).toHaveBeenCalledOnceWith(appElement, []); + angularInit(appElement, bootstrapSpy); + expect(bootstrapSpy).toHaveBeenCalledOnceWith(appElement, []); + }); + + + it('should complain if app module cannot be found', function() { + var appElement = jqLite('
')[0]; + + expect(function() { + angularInit(appElement, bootstrap); + }).toThrow('No module: doesntexist'); }); }); @@ -546,6 +555,17 @@ describe('angular', function() { expect(element.data('$injector')).toBe(injector); dealoc(element); }); + + it("should complain if app module can't be found", function() { + var element = jqLite('
{{1+2}}
'); + + expect(function() { + angular.bootstrap(element, ['doesntexist']); + }).toThrow('No module: doesntexist'); + + expect(element.html()).toBe('{{1+2}}'); + dealoc(element); + }); });