From 27e9340b3c25b512e45213b39811098d07e12e3b Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Thu, 7 Nov 2013 16:19:03 -0800 Subject: feat(jqLite): expose isolateScope() getter similar to scope() See doc update in the diff for more info. BREAKING CHANGE: jqLite#scope() does not return the isolate scope on the element that triggered directive with isolate scope. Use jqLite#isolateScope() instead. --- test/ng/compileSpec.js | 120 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 2 deletions(-) (limited to 'test/ng/compileSpec.js') diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index a61d50f2..5bdbad42 100755 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -1375,7 +1375,7 @@ describe('$compile', function() { return function (scope, element) { iscope = scope; log(scope.$id); - expect(element.data('$isolateScope')).toBe(scope); + expect(element.data('$isolateScopeNoTemplate')).toBe(scope); }; } }; @@ -1522,7 +1522,7 @@ describe('$compile', function() { ); - it('should allow more one new scope directives per element, but directives should share' + + it('should allow more than one new scope directives per element, but directives should share' + 'the scope', inject( function($rootScope, $compile, log) { element = $compile('
')($rootScope); @@ -1554,6 +1554,120 @@ describe('$compile', function() { expect(log).toEqual('002'); }) ); + + + describe('scope()/isolate() scope getters', function() { + + describe('with no directives', function() { + + it('should return the scope of the parent node', inject( + function($rootScope, $compile) { + element = $compile('')($rootScope); + expect(element.scope()).toBe($rootScope); + }) + ); + }); + + + describe('with new scope directives', function() { + + it('should return the new scope at the directive element', inject( + function($rootScope, $compile) { + element = $compile('')($rootScope); + expect(element.scope().$parent).toBe($rootScope); + }) + ); + + + it('should return the new scope for children in the original template', inject( + function($rootScope, $compile) { + element = $compile('')($rootScope); + expect(element.find('a').scope().$parent).toBe($rootScope); + }) + ); + + + it('should return the new scope for children in the directive template', inject( + function($rootScope, $compile, $httpBackend) { + $httpBackend.expect('GET', 'tscope.html').respond(''); + element = $compile('')($rootScope); + $httpBackend.flush(); + expect(element.find('a').scope().$parent).toBe($rootScope); + }) + ); + }); + + + describe('with isolate scope directives', function() { + + it('should return the root scope for directives at the root element', inject( + function($rootScope, $compile) { + element = $compile('')($rootScope); + expect(element.scope()).toBe($rootScope); + }) + ); + + + it('should return the non-isolate scope at the directive element', inject( + function($rootScope, $compile) { + var directiveElement; + element = $compile('