diff options
Diffstat (limited to 'test/ng/compileSpec.js')
| -rwxr-xr-x | test/ng/compileSpec.js | 41 | 
1 files changed, 30 insertions, 11 deletions
| diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index 26f61357..bf3d0b77 100755 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -632,11 +632,11 @@ describe('$compile', function() {            inject(function($compile) {              expect(function() {                $compile('<p no-root-elem></p>'); -            }).toThrow('Template must have exactly one root element. was: dada'); +            }).toThrow("[NgErr12] Template for directive 'noRootElem' must have exactly one root element.");              expect(function() {                $compile('<p multi-root-elem></p>'); -            }).toThrow('Template must have exactly one root element. was: <div></div><div></div>'); +            }).toThrow("[NgErr12] Template for directive 'multiRootElem' must have exactly one root element.");              // ws is ok              expect(function() { @@ -985,7 +985,7 @@ describe('$compile', function() {                expect(function() {                  $httpBackend.flush(); -              }).toThrow('Failed to load template: hello.html'); +              }).toThrow('[NgErr17] Failed to load template: hello.html');                expect(sortedHtml(element)).toBe('<div><b class="hello"></b></div>');              }          )); @@ -1005,7 +1005,7 @@ describe('$compile', function() {            inject(function($compile){              expect(function() {                $compile('<div><div class="sync async"></div></div>'); -            }).toThrow('Multiple directives [sync, async] asking for template on: '+ +            }).toThrow('[NgErr18] Multiple directives [sync, async] asking for template on: '+                  '<div class="sync async">');            });          }); @@ -1189,14 +1189,14 @@ describe('$compile', function() {              $compile('<p template></p>');              $rootScope.$digest();              expect($exceptionHandler.errors.pop().message). -                toBe('Template must have exactly one root element. was: dada'); +                toBe("[NgErr16] Template for directive 'template' must have exactly one root element. Template: template.html");              // multi root              $templateCache.put('template.html', '<div></div><div></div>');              $compile('<p template></p>');              $rootScope.$digest();              expect($exceptionHandler.errors.pop().message). -                toBe('Template must have exactly one root element. was: <div></div><div></div>'); +                toBe("[NgErr16] Template for directive 'template' must have exactly one root element. Template: template.html");              // ws is ok              $templateCache.put('template.html', '  <div></div> \n'); @@ -1456,7 +1456,7 @@ describe('$compile', function() {            function($rootScope, $compile) {              expect(function(){                $compile('<div class="iscope-a; scope-b"></div>'); -            }).toThrow('Multiple directives [iscopeA, scopeB] asking for isolated scope on: ' + +            }).toThrow('[NgErr18] Multiple directives [iscopeA, scopeB] asking for isolated scope on: ' +                  '<div class="iscope-a; scope-b ng-isolate-scope ng-scope">');            })          ); @@ -1466,7 +1466,7 @@ describe('$compile', function() {            function($rootScope, $compile) {              expect(function(){                $compile('<div class="iscope-a; iscope-b"></div>'); -            }).toThrow('Multiple directives [iscopeA, iscopeB] asking for isolated scope on: ' + +            }).toThrow('[NgErr18] Multiple directives [iscopeA, iscopeB] asking for isolated scope on: ' +                  '<div class="iscope-a; iscope-b ng-isolate-scope ng-scope">');            })          ); @@ -2074,7 +2074,7 @@ describe('$compile', function() {          componentScope.ref = 'ignore me';          expect($rootScope.$apply). -            toThrow("Non-assignable model expression: 'hello ' + name (directive: myComponent)"); +            toThrow("[NgErr14] Expression ''hello ' + name' used with directive 'myComponent' is non-assignable!");          expect(componentScope.ref).toBe('hello world');          // reset since the exception was rethrown which prevented phase clearing          $rootScope.$$phase = null; @@ -2150,7 +2150,7 @@ describe('$compile', function() {      it('should throw on unknown definition', inject(function() {        expect(function() {          compile('<div><span bad-declaration>'); -      }).toThrow('Invalid isolate scope definition for directive badDeclaration: xxx'); +      }).toThrow("[NgErr15] Invalid isolate scope definition for directive 'badDeclaration'. Definition: {... attr: 'xxx' ...}");      }));      it('should expose a $$isolateBindings property onto the scope', inject(function() { @@ -2233,6 +2233,25 @@ describe('$compile', function() {      }); +    it("should throw an error if required controller can't be found",function() { +      module(function() { +        directive('dep', function(log) { +          return { +            require: '^main', +            link: function(scope, element, attrs, controller) { +              log('dep:' + controller.name); +            } +          }; +        }); +      }); +      inject(function(log, $compile, $rootScope) { +        expect(function() { +          $compile('<div main><div dep></div></div>')($rootScope); +        }).toThrow("[NgErr13] Controller 'main', required by directive 'dep', can't be found!"); +      }); +    }); + +      it('should have optional controller on current element', function() {        module(function() {          directive('dep', function(log) { @@ -2415,7 +2434,7 @@ describe('$compile', function() {        inject(function($compile) {          expect(function() {            $compile('<div class="first second"></div>'); -        }).toThrow('Multiple directives [first, second] asking for transclusion on: ' + +        }).toThrow('[NgErr18] Multiple directives [first, second] asking for transclusion on: ' +              '<div class="first second ng-isolate-scope ng-scope">');        });      }); | 
