aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorIgor Minar2012-05-04 01:24:46 -0700
committerIgor Minar2012-05-04 13:01:55 -0700
commit9c0418cf1abd609bf0ffbe71fbdfa75905cf8e0f (patch)
tree4f1582b46d8e17c1b72962cfac93be54d714b556 /test
parent1564b82b49d996503fe782a1c1baa0a08608cf6a (diff)
downloadangular.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.js85
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([]);
+ });
+ });
});