diff options
| author | Igor Minar | 2012-05-04 01:24:46 -0700 | 
|---|---|---|
| committer | Igor Minar | 2012-05-04 13:01:55 -0700 | 
| commit | 9c0418cf1abd609bf0ffbe71fbdfa75905cf8e0f (patch) | |
| tree | 4f1582b46d8e17c1b72962cfac93be54d714b556 /test | |
| parent | 1564b82b49d996503fe782a1c1baa0a08608cf6a (diff) | |
| download | angular.js-9c0418cf1abd609bf0ffbe71fbdfa75905cf8e0f.tar.bz2 | |
fix($compile): ignore ws when checking if template has single root
Also add the same error checking for sync templates.
Closes #910
Diffstat (limited to 'test')
| -rw-r--r-- | test/ng/compileSpec.js | 85 | 
1 files changed, 75 insertions, 10 deletions
| diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index b2a6856b..c5592816 100644 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -487,10 +487,48 @@ describe('$compile', function() {            expect(child).toHaveClass('three');            expect(child).toHaveClass('log'); // merged from replace directive template          })); + +        it("should fail if replacing and template doesn't have a single root element", function() { +          module(function($compileProvider) { +            $compileProvider.directive('noRootElem', function() { +              return { +                replace: true, +                template: 'dada' +              } +            }); +            $compileProvider.directive('multiRootElem', function() { +              return { +                replace: true, +                template: '<div></div><div></div>' +              } +            }); +            $compileProvider.directive('singleRootWithWhiteSpace', function() { +              return { +                replace: true, +                template: '  <div></div> \n' +              } +            }); +          }); + +          inject(function($compile) { +            expect(function() { +              $compile('<p no-root-elem></p>'); +            }).toThrow('Template must have exactly one root element. was: dada'); + +            expect(function() { +              $compile('<p multi-root-elem></p>'); +            }).toThrow('Template must have exactly one root element. was: <div></div><div></div>'); + +            // ws is ok +            expect(function() { +              $compile('<p single-root-with-white-space></p>'); +            }).not.toThrow(); +          }); +        });        }); -      describe('async templates', function() { +      describe('templateUrl', function() {          beforeEach(module(            function($compileProvider) { @@ -916,15 +954,6 @@ describe('$compile', function() {          }); -        it('should check that template has root element', inject(function($compile, $httpBackend) { -          $httpBackend.expect('GET', 'hello.html').respond('before <b>mid</b> after'); -          $compile('<div i-hello></div>'); -          expect(function(){ -            $httpBackend.flush(); -          }).toThrow('Template must have exactly one root element: before <b>mid</b> after'); -        })); - -          it('should allow multiple elements in template', inject(function($compile, $httpBackend) {            $httpBackend.expect('GET', 'hello.html').respond('before <b>mid</b> after');            element = jqLite('<div hello></div>'); @@ -958,6 +987,42 @@ describe('$compile', function() {              expect(element.text()).toEqual('i=1;i=2;');            }          )); + + +        it("should fail if replacing and template doesn't have a single root element", function() { +          module(function($exceptionHandlerProvider, $compileProvider) { +            $exceptionHandlerProvider.mode('log'); + +            $compileProvider.directive('template', function() { +              return { +                replace: true, +                templateUrl: 'template.html' +              } +            }); +          }); + +          inject(function($compile, $templateCache, $rootScope, $exceptionHandler) { +            // no root element +            $templateCache.put('template.html', 'dada'); +            $compile('<p template></p>'); +            $rootScope.$digest(); +            expect($exceptionHandler.errors.pop().message). +                toBe('Template must have exactly one root element. was: dada'); + +            // 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>'); + +            // ws is ok +            $templateCache.put('template.html', '  <div></div> \n'); +            $compile('<p template></p>'); +            $rootScope.$apply(); +            expect($exceptionHandler.errors).toEqual([]); +          }); +        });        }); | 
