diff options
Diffstat (limited to 'test/ng')
| -rwxr-xr-x | test/ng/compileSpec.js | 10 | ||||
| -rw-r--r-- | test/ng/directive/ngRepeatSpec.js | 95 | 
2 files changed, 99 insertions, 6 deletions
| diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index 672a704d..0ef7e8bf 100755 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -534,7 +534,7 @@ describe('$compile', function() {            expect(div.hasClass('log')).toBe(true);            expect(div.css('width')).toBe('10px');            expect(div.css('height')).toBe('20px'); -          expect(div.attr('replace')).toEqual(''); +          expect(div.attr('replace')).toEqual(undefined);            expect(div.attr('high-log')).toEqual('');          })); @@ -856,7 +856,7 @@ describe('$compile', function() {            $rootScope.$digest();            expect(sortedHtml(element)). -            toEqual('<div><b class="hello"><span replace="">Hello, Elvis!</span></b></div>'); +            toEqual('<div><b class="hello"><span>Hello, Elvis!</span></b></div>');          })); @@ -868,7 +868,7 @@ describe('$compile', function() {                $rootScope.$digest();                expect(sortedHtml(element)). -                  toEqual('<span replace="">Hello, Elvis!</span>'); +                  toEqual('<span>Hello, Elvis!</span>');              })); @@ -1077,7 +1077,7 @@ describe('$compile', function() {              var div = element.find('div');              expect(div.attr('i-first')).toEqual(''); -            expect(div.attr('i-second')).toEqual(''); +            expect(div.attr('i-second')).toEqual(undefined);              expect(div.attr('i-third')).toEqual('');              expect(div.attr('i-last')).toEqual(''); @@ -1127,7 +1127,7 @@ describe('$compile', function() {              var div = element.find('div');              expect(div.attr('i-first')).toEqual(''); -            expect(div.attr('i-second')).toEqual(''); +            expect(div.attr('i-second')).toEqual(undefined);              expect(div.attr('i-third')).toEqual('');              expect(div.attr('i-last')).toEqual(''); diff --git a/test/ng/directive/ngRepeatSpec.js b/test/ng/directive/ngRepeatSpec.js index 9fc445ba..925a93ce 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, $exceptionHandler; +  var element, $compile, scope, $exceptionHandler, $compileProvider; + +  beforeEach(module(function(_$compileProvider_) { +    $compileProvider = _$compileProvider_; +  }));    beforeEach(module(function($exceptionHandlerProvider) { @@ -448,6 +452,95 @@ describe('ngRepeat', function() {    }); +  describe('nesting in replaced directive templates', function() { + +    it('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: '<span ng-repeat="i in items">{{log(i)}}</span>' +        } +      }); +      element = jqLite('<span replace-me-with-repeater></span>'); +      $compile(element)($rootScope); +      expect(element.text()).toBe(''); +      var logs = []; +      $rootScope.log = function(t) { logs.push(t); }; + +      // This creates one item, but it has no parent so we can't get to it +      $rootScope.items = [1, 2]; +      $rootScope.$apply(); + +      // This cleans up to prevent memory leak +      $rootScope.items = []; +      $rootScope.$apply(); +      expect(angular.mock.dump(element)).toBe('<!-- ngRepeat: i in items -->'); +      expect(logs).toEqual([1, 2, 1, 2]); +    })); + + +    iit('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', '<div ng-repeat="i in items">{{log(i)}}</div>'); +      element = jqLite('<span>-</span><span replace-me-with-repeater></span><span>-</span>'); +      $compile(element)($rootScope); +      expect(element.text()).toBe('--'); +      var logs = []; +      $rootScope.log = function(t) { logs.push(t); }; + +      // This creates one item, but it has no parent so we can't get to it +      $rootScope.items = [1, 2]; +      $rootScope.$apply(); + +      // This cleans up to prevent memory leak +      $rootScope.items = []; +      $rootScope.$apply(); +      expect(sortedHtml(element)).toBe('<span>-</span><!-- ngRepeat: i in items --><span>-</span>'); +      expect(logs).toEqual([1, 2, 1, 2]); +    })); + + +    it('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: '<div ng-repeat="i in [1,2,3]">{{i}}</div>' +        } +      }); +      element = $compile('<div><replace-me-with-repeater></replace-me-with-repeater></div>')($rootScope); +      expect(element.text()).toBe(''); +      $rootScope.$apply(); +      expect(element.text()).toBe('123'); +    })); + + +    it('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', '<div ng-repeat="i in [1,2,3]">{{i}}</div>'); +      element = $compile('<div><replace-me-with-repeater></replace-me-with-repeater></div>')($rootScope); +      expect(element.text()).toBe(''); +      $rootScope.$apply(); +      expect(element.text()).toBe('123'); +    })); +  }); + +    describe('stability', function() {      var a, b, c, d, lis; | 
