diff --git a/test/ng/directive/ngRepeatSpec.js b/test/ng/directive/ngRepeatSpec.js index 33e4dcfd0464..bb80b1f74da2 100644 --- a/test/ng/directive/ngRepeatSpec.js +++ b/test/ng/directive/ngRepeatSpec.js @@ -1,7 +1,11 @@ 'use strict'; describe('ngRepeat', function() { - var element, $compile, scope; + var element, $compile, scope, $compileProvider; + + beforeEach(module(function(_$compileProvider_) { + $compileProvider = _$compileProvider_; + })); beforeEach(inject(function(_$compile_, $rootScope) { @@ -364,6 +368,75 @@ describe('ngRepeat', function() { }); + describe('nesting in replaced directive templates', function() { + + // TODO: THIS TEST IS STILL FAILING BUT CAUSES STACK OVERFLOW SO IT'S DISABLED + xit('should work when placed on a root element of attr directive with SYNC replaced template', + inject(function($templateCache, $compile, $rootScope) { + $compileProvider.directive('replaceMeWithRepeater', function() { + return { + replace: true, + template: '{{i}}' + } + }); + element = $compile('
')($rootScope); + expect(element.text()).toBe(''); + $rootScope.$apply(); + expect(element.text()).toBe('123'); + })); + + + // TODO: THIS TEST IS STILL FAILING BUT CAUSES INFINITE LOOP SO IT'S DISABLED + xit('should work when placed on a root element of attr directive with ASYNC replaced template', + inject(function($templateCache, $compile, $rootScope) { + $compileProvider.directive('replaceMeWithRepeater', function() { + return { + replace: true, + templateUrl: 'replace-me-with-repeater.html' + } + }); + $templateCache.put('replace-me-with-repeater.html', '
{{i}}
'); + element = $compile('')($rootScope); + expect(element.text()).toBe(''); + $rootScope.$apply(); + expect(element.text()).toBe('123'); + })); + + + iit('should work when placed on a root element of element directive with SYNC replaced template', + inject(function($templateCache, $compile, $rootScope) { + $compileProvider.directive('replaceMeWithRepeater', function() { + return { + restrict: 'E', + replace: true, + template: '
{{i}}
' + } + }); + element = $compile('
')($rootScope); + expect(element.text()).toBe(''); + $rootScope.$apply(); + expect(element.text()).toBe('123'); + })); + + + iit('should work when placed on a root element of element directive with ASYNC replaced template', + inject(function($templateCache, $compile, $rootScope) { + $compileProvider.directive('replaceMeWithRepeater', function() { + return { + restrict: 'E', + replace: true, + templateUrl: 'replace-me-with-repeater.html' + } + }); + $templateCache.put('replace-me-with-repeater.html', '
{{i}}
'); + element = $compile('
')($rootScope); + expect(element.text()).toBe(''); + $rootScope.$apply(); + expect(element.text()).toBe('123'); + })); + }); + + describe('stability', function() { var a, b, c, d, lis;