diff options
Diffstat (limited to 'test/ng')
| -rw-r--r-- | test/ng/directive/booleanAttrsSpec.js | 28 | ||||
| -rw-r--r-- | test/ng/interpolateSpec.js | 24 |
2 files changed, 49 insertions, 3 deletions
diff --git a/test/ng/directive/booleanAttrsSpec.js b/test/ng/directive/booleanAttrsSpec.js index aa48afff..f2ea003c 100644 --- a/test/ng/directive/booleanAttrsSpec.js +++ b/test/ng/directive/booleanAttrsSpec.js @@ -89,19 +89,41 @@ describe('boolean attr directives', function() { describe('ngSrc', function() { it('should interpolate the expression and bind to src', inject(function($compile, $rootScope) { - var element = $compile('<div ng-src="some/{{id}}"></div>')($rootScope); + var element = $compile('<div ng-src="{{id}}"></div>')($rootScope); $rootScope.$digest(); - expect(element.attr('src')).toEqual('some/'); + expect(element.attr('src')).toBeUndefined(); $rootScope.$apply(function() { $rootScope.id = 1; }); - expect(element.attr('src')).toEqual('some/1'); + expect(element.attr('src')).toEqual('1'); dealoc(element); })); + describe('isTrustedContext', function() { + it('should NOT interpolate a multi-part expression for non-img src attribute', inject(function($compile, $rootScope) { + expect(function() { + var element = $compile('<div ng-src="some/{{id}}"></div>')($rootScope); + dealoc(element); + }).toThrow( + "[$interpolate:noconcat] Error while interpolating: some/{{id}}\nYou may not use " + + "multiple expressions when interpolating this expression."); + })); + + it('should interpolate a multi-part expression for regular attributes', inject(function($compile, $rootScope) { + var element = $compile('<div foo="some/{{id}}"></div>')($rootScope); + $rootScope.$digest(); + expect(element.attr('foo')).toBe('some/'); + $rootScope.$apply(function() { + $rootScope.id = 1; + }); + expect(element.attr('foo')).toEqual('some/1'); + })); + + }); + if (msie) { it('should update the element property as well as the attribute', inject( function($compile, $rootScope) { diff --git a/test/ng/interpolateSpec.js b/test/ng/interpolateSpec.js index 454d81aa..7569c0e2 100644 --- a/test/ng/interpolateSpec.js +++ b/test/ng/interpolateSpec.js @@ -149,6 +149,29 @@ describe('$interpolate', function() { }); + describe('isTrustedContext', function() { + it('should NOT interpolate a multi-part expression when isTrustedContext is true', inject(function($interpolate) { + var isTrustedContext = true; + expect(function() { + $interpolate('constant/{{var}}', true, isTrustedContext); + }).toThrow( + "[$interpolate:noconcat] Error while interpolating: constant/{{var}}\nYou may not use " + + "multiple expressions when interpolating this expression."); + expect(function() { + $interpolate('{{foo}}{{bar}}', true, isTrustedContext); + }).toThrow( + "[$interpolate:noconcat] Error while interpolating: {{foo}}{{bar}}\nYou may not use " + + "multiple expressions when interpolating this expression."); + })); + + it('should interpolate a multi-part expression when isTrustedContext is false', inject(function($interpolate) { + expect($interpolate('some/{{id}}')()).toEqual('some/'); + expect($interpolate('some/{{id}}')({id: 1})).toEqual('some/1'); + expect($interpolate('{{foo}}{{bar}}')({foo: 1, bar: 2})).toEqual('12'); + })); + }); + + describe('startSymbol', function() { beforeEach(module(function($interpolateProvider) { @@ -199,4 +222,5 @@ describe('$interpolate', function() { expect($interpolate.endSymbol()).toBe('))'); })); }); + }); |
