diff options
Diffstat (limited to 'test/ng/compileSpec.js')
| -rw-r--r-- | test/ng/compileSpec.js | 245 | 
1 files changed, 123 insertions, 122 deletions
| diff --git a/test/ng/compileSpec.js b/test/ng/compileSpec.js index 86ba3ade..a6a81a0e 100644 --- a/test/ng/compileSpec.js +++ b/test/ng/compileSpec.js @@ -1,12 +1,13 @@  'use strict';  describe('$compile', function() { -  var element; +  var element, directive;    beforeEach(module(provideLog, function($provide, $compileProvider){      element = null; +    directive = $compileProvider.directive; -    $compileProvider.directive('log', function(log) { +    directive('log', function(log) {        return {          restrict: 'CAM',          priority:0, @@ -16,40 +17,40 @@ describe('$compile', function() {        };      }); -    $compileProvider.directive('highLog', function(log) { +    directive('highLog', function(log) {        return { restrict: 'CAM', priority:3, compile: valueFn(function(scope, element, attrs) {          log(attrs.highLog || 'HIGH');        })};      }); -    $compileProvider.directive('mediumLog', function(log) { +    directive('mediumLog', function(log) {        return { restrict: 'CAM', priority:2, compile: valueFn(function(scope, element, attrs) {          log(attrs.mediumLog || 'MEDIUM');        })};      }); -    $compileProvider.directive('greet', function() { +    directive('greet', function() {        return { restrict: 'CAM', priority:10,  compile: valueFn(function(scope, element, attrs) {          element.text("Hello " + attrs.greet);        })};      }); -    $compileProvider.directive('set', function() { +    directive('set', function() {        return function(scope, element, attrs) {          element.text(attrs.set);        };      }); -    $compileProvider.directive('mediumStop', valueFn({ +    directive('mediumStop', valueFn({        priority: 2,        terminal: true      })); -    $compileProvider.directive('stop', valueFn({ +    directive('stop', valueFn({        terminal: true      })); -    $compileProvider.directive('negativeStop', valueFn({ +    directive('negativeStop', valueFn({        priority: -100, // even with negative priority we still should be able to stop descend        terminal: true      })); @@ -63,8 +64,8 @@ describe('$compile', function() {    describe('configuration', function() {      it('should register a directive', function() { -      module(function($compileProvider) { -        $compileProvider.directive('div', function(log) { +      module(function() { +        directive('div', function(log) {            return {              restrict: 'ECA',              link: function(scope, element) { @@ -82,14 +83,14 @@ describe('$compile', function() {      });      it('should allow registration of multiple directives with same name', function() { -      module(function($compileProvider) { -        $compileProvider.directive('div', function(log) { +      module(function() { +        directive('div', function(log) {            return {              restrict: 'ECA',              link: log.fn('1')            };          }); -        $compileProvider.directive('div', function(log) { +        directive('div', function(log) {            return {              restrict: 'ECA',              link: log.fn('2') @@ -158,8 +159,8 @@ describe('$compile', function() {        it('should receive scope, element, and attributes', function() {          var injector; -        module(function($compileProvider) { -          $compileProvider.directive('log', function($injector, $rootScope) { +        module(function() { +          directive('log', function($injector, $rootScope) {              injector = $injector;              return {                restrict: 'CA', @@ -194,12 +195,12 @@ describe('$compile', function() {      describe('error handling', function() {        it('should handle exceptions', function() { -        module(function($compileProvider, $exceptionHandlerProvider) { +        module(function($exceptionHandlerProvider) {            $exceptionHandlerProvider.mode('log'); -          $compileProvider.directive('factoryError', function() { throw 'FactoryError'; }); -          $compileProvider.directive('templateError', +          directive('factoryError', function() { throw 'FactoryError'; }); +          directive('templateError',                valueFn({ compile: function() { throw 'TemplateError'; } })); -          $compileProvider.directive('linkingError', +          directive('linkingError',                valueFn(function() { throw 'LinkingError'; }));          });          inject(function($rootScope, $compile, $exceptionHandler) { @@ -243,8 +244,8 @@ describe('$compile', function() {        it('should allow changing the template structure after the current node', function() { -        module(function($compileProvider){ -          $compileProvider.directive('after', valueFn({ +        module(function(){ +          directive('after', valueFn({              compile: function(element) {                element.after('<span log>B</span>');              } @@ -260,8 +261,8 @@ describe('$compile', function() {        it('should allow changing the template structure after the current node inside ngRepeat', function() { -        module(function($compileProvider){ -          $compileProvider.directive('after', valueFn({ +        module(function(){ +          directive('after', valueFn({              compile: function(element) {                element.after('<span log>B</span>');              } @@ -313,9 +314,9 @@ describe('$compile', function() {        describe('restrict', function() {          it('should allow restriction of attributes', function() { -            module(function($compileProvider, $provide) { +            module(function() {                forEach({div:'E', attr:'A', clazz:'C', all:'EAC'}, function(restrict, name) { -                $compileProvider.directive(name, function(log) { +                directive(name, function(log) {                    return {                      restrict: restrict,                      compile: valueFn(function(scope, element, attr) { @@ -360,8 +361,8 @@ describe('$compile', function() {        describe('template', function() { -        beforeEach(module(function($compileProvider) { -          $compileProvider.directive('replace', valueFn({ +        beforeEach(module(function() { +          directive('replace', valueFn({              restrict: 'CAM',              replace: true,              template: '<div class="log" style="width: 10px" high-log>Replace!</div>', @@ -370,7 +371,7 @@ describe('$compile', function() {                expect(element).toBe(attr.$$element);              }            })); -          $compileProvider.directive('append', valueFn({ +          directive('append', valueFn({              restrict: 'CAM',              template: '<div class="log" style="width: 10px" high-log>Append!</div>',              compile: function(element, attr) { @@ -489,20 +490,20 @@ describe('$compile', function() {          }));          it("should fail if replacing and template doesn't have a single root element", function() { -          module(function($compileProvider) { -            $compileProvider.directive('noRootElem', function() { +          module(function() { +            directive('noRootElem', function() {                return {                  replace: true,                  template: 'dada'                }              }); -            $compileProvider.directive('multiRootElem', function() { +            directive('multiRootElem', function() {                return {                  replace: true,                  template: '<div></div><div></div>'                }              }); -            $compileProvider.directive('singleRootWithWhiteSpace', function() { +            directive('singleRootWithWhiteSpace', function() {                return {                  replace: true,                  template: '  <div></div> \n' @@ -531,22 +532,22 @@ describe('$compile', function() {        describe('templateUrl', function() {          beforeEach(module( -          function($compileProvider) { -            $compileProvider.directive('hello', valueFn({ +          function() { +            directive('hello', valueFn({                restrict: 'CAM', templateUrl: 'hello.html', transclude: true              })); -            $compileProvider.directive('cau', valueFn({ +            directive('cau', valueFn({                restrict: 'CAM', templateUrl:'cau.html'              })); -            $compileProvider.directive('cError', valueFn({ +            directive('cError', valueFn({                restrict: 'CAM',                templateUrl:'error.html',                compile: function() {                  throw Error('cError');                }              })); -            $compileProvider.directive('lError', valueFn({ +            directive('lError', valueFn({                restrict: 'CAM',                templateUrl: 'error.html',                compile: function() { @@ -555,18 +556,18 @@ describe('$compile', function() {              })); -            $compileProvider.directive('iHello', valueFn({ +            directive('iHello', valueFn({                restrict: 'CAM',                replace: true,                templateUrl: 'hello.html'              })); -            $compileProvider.directive('iCau', valueFn({ +            directive('iCau', valueFn({                restrict: 'CAM',                replace: true,                templateUrl:'cau.html'              })); -            $compileProvider.directive('iCError', valueFn({ +            directive('iCError', valueFn({                restrict: 'CAM',                replace: true,                templateUrl:'error.html', @@ -574,7 +575,7 @@ describe('$compile', function() {                  throw Error('cError');                }              })); -            $compileProvider.directive('iLError', valueFn({ +            directive('iLError', valueFn({                restrict: 'CAM',                replace: true,                templateUrl: 'error.html', @@ -810,12 +811,12 @@ describe('$compile', function() {          it('should prevent multiple templates per element', function() { -          module(function($compileProvider) { -            $compileProvider.directive('sync', valueFn({ +          module(function() { +            directive('sync', valueFn({                restrict: 'C',                template: '<span></span>'              })); -            $compileProvider.directive('async', valueFn({ +            directive('async', valueFn({                restrict: 'C',                templateUrl: 'template.html'              })); @@ -831,9 +832,9 @@ describe('$compile', function() {          describe('delay compile / linking functions until after template is resolved', function(){            var template; -          beforeEach(module(function($compileProvider) { -            function directive (name, priority, options) { -              $compileProvider.directive(name, function(log) { +          beforeEach(module(function() { +            function logDirective (name, priority, options) { +              directive(name, function(log) {                  return (extend({                   priority: priority,                   compile: function() { @@ -844,15 +845,15 @@ describe('$compile', function() {                });              } -            directive('first', 10); -            directive('second', 5, { templateUrl: 'second.html' }); -            directive('third', 3); -            directive('last', 0); +            logDirective('first', 10); +            logDirective('second', 5, { templateUrl: 'second.html' }); +            logDirective('third', 3); +            logDirective('last', 0); -            directive('iFirst', 10, {replace: true}); -            directive('iSecond', 5, {replace: true, templateUrl: 'second.html' }); -            directive('iThird', 3, {replace: true}); -            directive('iLast', 0, {replace: true}); +            logDirective('iFirst', 10, {replace: true}); +            logDirective('iSecond', 5, {replace: true, templateUrl: 'second.html' }); +            logDirective('iThird', 3, {replace: true}); +            logDirective('iLast', 0, {replace: true});            }));            it('should flush after link append', inject( @@ -990,10 +991,10 @@ describe('$compile', function() {          it("should fail if replacing and template doesn't have a single root element", function() { -          module(function($exceptionHandlerProvider, $compileProvider) { +          module(function($exceptionHandlerProvider) {              $exceptionHandlerProvider.mode('log'); -            $compileProvider.directive('template', function() { +            directive('template', function() {                return {                  replace: true,                  templateUrl: 'template.html' @@ -1029,9 +1030,9 @@ describe('$compile', function() {        describe('scope', function() {          var iscope; -        beforeEach(module(function($compileProvider) { +        beforeEach(module(function() {            forEach(['', 'a', 'b'], function(name) { -            $compileProvider.directive('scope' + uppercase(name), function(log) { +            directive('scope' + uppercase(name), function(log) {                return {                  scope: true,                  restrict: 'CA', @@ -1043,7 +1044,7 @@ describe('$compile', function() {                  }                };              }); -            $compileProvider.directive('iscope' + uppercase(name), function(log) { +            directive('iscope' + uppercase(name), function(log) {                return {                  scope: {},                  restrict: 'CA', @@ -1056,7 +1057,7 @@ describe('$compile', function() {                  }                };              }); -            $compileProvider.directive('tscope' + uppercase(name), function(log) { +            directive('tscope' + uppercase(name), function(log) {                return {                  scope: true,                  restrict: 'CA', @@ -1069,7 +1070,7 @@ describe('$compile', function() {                  }                };              }); -            $compileProvider.directive('trscope' + uppercase(name), function(log) { +            directive('trscope' + uppercase(name), function(log) {                return {                  scope: true,                  replace: true, @@ -1083,7 +1084,7 @@ describe('$compile', function() {                  }                };              }); -            $compileProvider.directive('tiscope' + uppercase(name), function(log) { +            directive('tiscope' + uppercase(name), function(log) {                return {                  scope: {},                  restrict: 'CA', @@ -1098,7 +1099,7 @@ describe('$compile', function() {                };              });            }); -          $compileProvider.directive('log', function(log) { +          directive('log', function(log) {              return {                restrict: 'CA',                link: function(scope) { @@ -1250,8 +1251,8 @@ describe('$compile', function() {    describe('interpolation', function() {      var observeSpy, attrValueDuringLinking; -    beforeEach(module(function($compileProvider) { -      $compileProvider.directive('observer', function() { +    beforeEach(module(function() { +      directive('observer', function() {          return function(scope, elm, attr) {            observeSpy = jasmine.createSpy('$observe attr'); @@ -1312,9 +1313,9 @@ describe('$compile', function() {      it('should delegate exceptions to $exceptionHandler', function() {        observeSpy = jasmine.createSpy('$observe attr').andThrow('ERROR'); -      module(function($compileProvider, $exceptionHandlerProvider) { +      module(function($exceptionHandlerProvider) {          $exceptionHandlerProvider.mode('log'); -        $compileProvider.directive('error', function() { +        directive('error', function() {            return function(scope, elm, attr) {              attr.$observe('someAttr', observeSpy);              attr.$observe('someAttr', observeSpy); @@ -1352,10 +1353,10 @@ describe('$compile', function() {    describe('link phase', function() { -    beforeEach(module(function($compileProvider) { +    beforeEach(module(function() {        forEach(['a', 'b', 'c'], function(name) { -        $compileProvider.directive(name, function(log) { +        directive(name, function(log) {            return {              restrict: 'ECA',              compile: function() { @@ -1395,8 +1396,8 @@ describe('$compile', function() {      it('should support link function on directive object', function() { -      module(function($compileProvider) { -        $compileProvider.directive('abc', valueFn({ +      module(function() { +        directive('abc', valueFn({            link: function(scope, element, attrs) {              element.text(attrs.abc);            } @@ -1413,8 +1414,8 @@ describe('$compile', function() {    describe('attrs', function() {      it('should allow setting of attributes', function() { -      module(function($compileProvider) { -        $compileProvider.directive({ +      module(function() { +        directive({            setter: valueFn(function(scope, element, attr) {              attr.$set('name', 'abc');              attr.$set('disabled', true); @@ -1433,8 +1434,8 @@ describe('$compile', function() {      it('should read boolean attributes as boolean only on control elements', function() {        var value; -      module(function($compileProvider) { -        $compileProvider.directive({ +      module(function() { +        directive({            input: valueFn({              restrict: 'ECA',              link:function(scope, element, attr) { @@ -1451,8 +1452,8 @@ describe('$compile', function() {      it('should read boolean attributes as text on non-controll elements', function() {        var value; -      module(function($compileProvider) { -        $compileProvider.directive({ +      module(function() { +        directive({            div: valueFn({              restrict: 'ECA',              link:function(scope, element, attr) { @@ -1468,8 +1469,8 @@ describe('$compile', function() {      });      it('should allow setting of attributes', function() { -      module(function($compileProvider) { -        $compileProvider.directive({ +      module(function() { +        directive({            setter: valueFn(function(scope, element, attr) {              attr.$set('name', 'abc');              attr.$set('disabled', true); @@ -1487,10 +1488,10 @@ describe('$compile', function() {      it('should create new instance of attr for each template stamping', function() { -      module(function($compileProvider, $provide) { +      module(function($provide) {          var state = { first: [], second: [] };          $provide.value('state', state); -        $compileProvider.directive({ +        directive({            first: valueFn({              priority: 1,              compile: function(templateElement, templateAttr) { @@ -1540,8 +1541,8 @@ describe('$compile', function() {      it('should properly $observe inside ng-repeat', function() {        var spies = []; -      module(function($compileProvider) { -        $compileProvider.directive('observer', function() { +      module(function() { +        directive('observer', function() {            return function(scope, elm, attr) {              spies.push(jasmine.createSpy('observer ' + spies.length));              attr.$observe('some', spies[spies.length - 1]); @@ -1575,8 +1576,8 @@ describe('$compile', function() {      describe('$set', function() {        var attr;        beforeEach(function(){ -        module(function($compileProvider) { -          $compileProvider.directive('input', valueFn({ +        module(function() { +          directive('input', valueFn({              restrict: 'ECA',              link: function(scope, element, attr) {                scope.attr = attr; @@ -1634,8 +1635,8 @@ describe('$compile', function() {    describe('locals', function() {      it('should marshal to locals', function() { -      module(function($compileProvider) { -        $compileProvider.directive('widget', function(log) { +      module(function() { +        directive('widget', function(log) {            return {              scope: {                attr: 'attribute', @@ -1690,8 +1691,8 @@ describe('$compile', function() {    describe('controller', function() {      it('should inject locals to controller', function() { -      module(function($compileProvider) { -        $compileProvider.directive('widget', function(log) { +      module(function() { +        directive('widget', function(log) {            return {              controller: function(attr, prop, assign, read, exp){                log(attr); @@ -1732,8 +1733,8 @@ describe('$compile', function() {      it('should get required controller', function() { -      module(function($compileProvider) { -        $compileProvider.directive('main', function(log) { +      module(function() { +        directive('main', function(log) {            return {              priority: 2,              controller: function() { @@ -1744,7 +1745,7 @@ describe('$compile', function() {              }            };          }); -        $compileProvider.directive('dep', function(log) { +        directive('dep', function(log) {            return {              priority: 1,              require: 'main', @@ -1753,7 +1754,7 @@ describe('$compile', function() {              }            };          }); -        $compileProvider.directive('other', function(log) { +        directive('other', function(log) {            return {              link: function(scope, element, attrs, controller) {                log(!!controller); // should be false @@ -1769,15 +1770,15 @@ describe('$compile', function() {      it('should require controller on parent element',function() { -      module(function($compileProvider) { -        $compileProvider.directive('main', function(log) { +      module(function() { +        directive('main', function(log) {            return {              controller: function() {                this.name = 'main';              }            };          }); -        $compileProvider.directive('dep', function(log) { +        directive('dep', function(log) {            return {              require: '^main',              link: function(scope, element, attrs, controller) { @@ -1794,8 +1795,8 @@ describe('$compile', function() {      it('should have optional controller on current element', function() { -      module(function($compileProvider) { -        $compileProvider.directive('dep', function(log) { +      module(function() { +        directive('dep', function(log) {            return {              require: '?main',              link: function(scope, element, attrs, controller) { @@ -1812,14 +1813,14 @@ describe('$compile', function() {      it('should support multiple controllers', function() { -      module(function($compileProvider) { -        $compileProvider.directive('c1', valueFn({ +      module(function() { +        directive('c1', valueFn({            controller: function() { this.name = 'c1'; }          })); -        $compileProvider.directive('c2', valueFn({ +        directive('c2', valueFn({            controller: function() { this.name = 'c2'; }          })); -        $compileProvider.directive('dep', function(log) { +        directive('dep', function(log) {            return {              require: ['^c1', '^c2'],              link: function(scope, element, attrs, controller) { @@ -1839,12 +1840,12 @@ describe('$compile', function() {        var syncCtrlSpy = jasmine.createSpy('sync controller'),            asyncCtrlSpy = jasmine.createSpy('async controller'); -      module(function($compileProvider) { -        $compileProvider.directive('myDirectiveSync', valueFn({ +      module(function() { +        directive('myDirectiveSync', valueFn({            template: '<div>Hello!</div>',            controller: syncCtrlSpy          })); -        $compileProvider.directive('myDirectiveAsync', valueFn({ +        directive('myDirectiveAsync', valueFn({            templateUrl: 'myDirectiveAsync.html',            controller: asyncCtrlSpy,            compile: function() { @@ -1877,8 +1878,8 @@ describe('$compile', function() {    describe('transclude', function() {      it('should compile get templateFn', function() { -      module(function($compileProvider) { -        $compileProvider.directive('trans', function(log) { +      module(function() { +        directive('trans', function(log) {            return {              transclude: 'element',              priority: 2, @@ -1906,8 +1907,8 @@ describe('$compile', function() {      it('should support transclude directive', function() { -      module(function($compileProvider) { -        $compileProvider.directive('trans', function() { +      module(function() { +        directive('trans', function() {            return {              transclude: 'content',              replace: true, @@ -1928,16 +1929,16 @@ describe('$compile', function() {      it('should transclude transcluded content', function() { -      module(function($compileProvider) { -        $compileProvider.directive('book', valueFn({ +      module(function() { +        directive('book', valueFn({            transclude: 'content',            template: '<div>book-<div chapter>(<div ng-transclude></div>)</div></div>'          })); -        $compileProvider.directive('chapter', valueFn({ +        directive('chapter', valueFn({            transclude: 'content',            templateUrl: 'chapter.html'          })); -        $compileProvider.directive('section', valueFn({ +        directive('section', valueFn({            transclude: 'content',            template: '<div>section-!<div ng-transclude></div>!</div></div>'          })); @@ -1961,13 +1962,13 @@ describe('$compile', function() {      it('should only allow one transclude per element', function() { -      module(function($compileProvider) { -        $compileProvider.directive('first', valueFn({ +      module(function() { +        directive('first', valueFn({            scope: {},            restrict: 'CA',            transclude: 'content'          })); -        $compileProvider.directive('second', valueFn({ +        directive('second', valueFn({            restrict: 'CA',            transclude: 'content'          })); @@ -1982,8 +1983,8 @@ describe('$compile', function() {      it('should remove transclusion scope, when the DOM is destroyed', function() { -      module(function($compileProvider) { -        $compileProvider.directive('box', valueFn({ +      module(function() { +        directive('box', valueFn({            transclude: 'content',            scope: { name: 'evaluate', show: 'accessor' },            template: '<div><h1>Hello: {{name}}!</h1><div ng-transclude></div></div>', @@ -2024,8 +2025,8 @@ describe('$compile', function() {      it('should support transcluded element on root content', function() {        var comment; -      module(function($compileProvider) { -        $compileProvider.directive('transclude', valueFn({ +      module(function() { +        directive('transclude', valueFn({            transclude: 'element',            compile: function(element, attr, linker) {              return function(scope, element, attr) { | 
