aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMisko Hevery2012-06-04 12:08:27 -0700
committerIgor Minar2012-06-08 15:27:02 -0700
commit2491319575f26fa8247b247247e223d5822ee61c (patch)
treefadd7d99f99e3ba5f2914343fb962c9e49bad7b8 /test
parentbcc3a021ebbdc33f826cc668e40de360ee6a6b23 (diff)
downloadangular.js-2491319575f26fa8247b247247e223d5822ee61c.tar.bz2
chore($compile): clean up compiler tests
Diffstat (limited to 'test')
-rw-r--r--test/ng/compileSpec.js245
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) {