diff options
Diffstat (limited to 'test/ng/compileSpec.js')
| -rwxr-xr-x | test/ng/compileSpec.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index f2fa4ef6..853290a6 100755 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -2492,6 +2492,62 @@ describe('$compile', function() { expect(lastRefValueInParent).toBe('new'); })); + + describe('literal objects', function() { + it('should copy parent changes', inject(function() { + compile('<div><span my-component reference="{name: name}">'); + + $rootScope.name = 'a'; + $rootScope.$apply(); + expect(componentScope.reference).toEqual({name: 'a'}); + + $rootScope.name = 'b'; + $rootScope.$apply(); + expect(componentScope.reference).toEqual({name: 'b'}); + })); + + it('should not change the component when parent does not change', inject(function() { + compile('<div><span my-component reference="{name: name}">'); + + $rootScope.name = 'a'; + $rootScope.$apply(); + var lastComponentValue = componentScope.reference; + $rootScope.$apply(); + expect(componentScope.reference).toBe(lastComponentValue); + })); + + it('should complain when the component changes', inject(function() { + compile('<div><span my-component reference="{name: name}">'); + + $rootScope.name = 'a'; + $rootScope.$apply(); + componentScope.reference = {name: 'b'}; + expect(function() { + $rootScope.$apply(); + }).toThrowMinErr("$compile", "nonassign", "Expression '{name: name}' used with directive 'myComponent' is non-assignable!"); + + })); + + it('should work for primitive literals', inject(function() { + test('1', 1); + test('null', null); + test('undefined', undefined); + test("'someString'", 'someString'); + + + function test(literalString, literalValue) { + compile('<div><span my-component reference="'+literalString+'">'); + + $rootScope.$apply(); + expect(componentScope.reference).toBe(literalValue); + dealoc(element); + + } + + })); + + }); + }); |
