aboutsummaryrefslogtreecommitdiffstats
path: root/test/directivesSpec.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/directivesSpec.js')
-rw-r--r--test/directivesSpec.js91
1 files changed, 34 insertions, 57 deletions
diff --git a/test/directivesSpec.js b/test/directivesSpec.js
index a05861ae..1a02e318 100644
--- a/test/directivesSpec.js
+++ b/test/directivesSpec.js
@@ -20,20 +20,12 @@ describe("directive", function(){
expect(scope.a).toEqual(123);
});
- it("should ng:eval", function() {
- var scope = compile('<div ng:init="a=0" ng:eval="a = a + 1"></div>');
- scope.$flush();
- expect(scope.a).toEqual(1);
- scope.$flush();
- expect(scope.a).toEqual(2);
- });
-
describe('ng:bind', function(){
it('should set text', function() {
var scope = compile('<div ng:bind="a"></div>');
expect(element.text()).toEqual('');
scope.a = 'misko';
- scope.$flush();
+ scope.$digest();
expect(element.hasClass('ng-binding')).toEqual(true);
expect(element.text()).toEqual('misko');
});
@@ -41,24 +33,24 @@ describe("directive", function(){
it('should set text to blank if undefined', function() {
var scope = compile('<div ng:bind="a"></div>');
scope.a = 'misko';
- scope.$flush();
+ scope.$digest();
expect(element.text()).toEqual('misko');
scope.a = undefined;
- scope.$flush();
+ scope.$digest();
expect(element.text()).toEqual('');
});
it('should set html', function() {
var scope = compile('<div ng:bind="html|html"></div>');
scope.html = '<div unknown>hello</div>';
- scope.$flush();
+ scope.$digest();
expect(lowercase(element.html())).toEqual('<div>hello</div>');
});
it('should set unsafe html', function() {
var scope = compile('<div ng:bind="html|html:\'unsafe\'"></div>');
scope.html = '<div onclick="">hello</div>';
- scope.$flush();
+ scope.$digest();
expect(lowercase(element.html())).toEqual('<div onclick="">hello</div>');
});
@@ -67,7 +59,7 @@ describe("directive", function(){
return jqLite('<a>hello</a>');
};
var scope = compile('<div ng:bind="0|myElement"></div>');
- scope.$flush();
+ scope.$digest();
expect(lowercase(element.html())).toEqual('<a>hello</a>');
});
@@ -77,14 +69,14 @@ describe("directive", function(){
return 'HELLO';
};
var scope = compile('<div>before<div ng:bind="0|myFilter"></div>after</div>');
- scope.$flush();
+ scope.$digest();
expect(sortedHtml(scope.$element)).toEqual('<div>before<div class="filter" ng:bind="0|myFilter">HELLO</div>after</div>');
});
it('should suppress rendering of falsy values', function(){
var scope = compile('<div>{{ null }}{{ undefined }}{{ "" }}-{{ 0 }}{{ false }}</div>');
- scope.$flush();
+ scope.$digest();
expect(scope.$element.text()).toEqual('-0false');
});
@@ -94,19 +86,19 @@ describe("directive", function(){
it('should ng:bind-template', function() {
var scope = compile('<div ng:bind-template="Hello {{name}}!"></div>');
scope.name = 'Misko';
- scope.$flush();
+ scope.$digest();
expect(element.hasClass('ng-binding')).toEqual(true);
expect(element.text()).toEqual('Hello Misko!');
});
it('should have $element set to current bind element', function(){
- var innerText = 'blank';
+ var innerText;
angularFilter.myFilter = function(text){
- innerText = this.$element.text();
+ innerText = innerText || this.$element.text();
return text;
};
var scope = compile('<div>before<span ng:bind-template="{{\'HELLO\'|myFilter}}">INNER</span>after</div>');
- scope.$flush();
+ scope.$digest();
expect(scope.$element.text()).toEqual("beforeHELLOafter");
expect(innerText).toEqual('INNER');
});
@@ -116,14 +108,14 @@ describe("directive", function(){
describe('ng:bind-attr', function(){
it('should bind attributes', function(){
var scope = compile('<div ng:bind-attr="{src:\'http://localhost/mysrc\', alt:\'myalt\'}"/>');
- scope.$flush();
+ scope.$digest();
expect(element.attr('src')).toEqual('http://localhost/mysrc');
expect(element.attr('alt')).toEqual('myalt');
});
it('should not pretty print JSON in attributes', function(){
var scope = compile('<img alt="{{ {a:1} }}"/>');
- scope.$flush();
+ scope.$digest();
expect(element.attr('alt')).toEqual('{"a":1}');
});
});
@@ -138,7 +130,7 @@ describe("directive", function(){
scope.disabled = true;
scope.readonly = true;
scope.checked = true;
- scope.$flush();
+ scope.$digest();
expect(input.disabled).toEqual(true);
expect(input.readOnly).toEqual(true);
@@ -148,7 +140,7 @@ describe("directive", function(){
describe('ng:click', function(){
it('should get called on a click', function(){
var scope = compile('<div ng:click="clicked = true"></div>');
- scope.$flush();
+ scope.$digest();
expect(scope.clicked).toBeFalsy();
browserTrigger(element, 'click');
@@ -157,7 +149,7 @@ describe("directive", function(){
it('should stop event propagation', function() {
var scope = compile('<div ng:click="outer = true"><div ng:click="inner = true"></div></div>');
- scope.$flush();
+ scope.$digest();
expect(scope.outer).not.toBeDefined();
expect(scope.inner).not.toBeDefined();
@@ -175,7 +167,7 @@ describe("directive", function(){
var scope = compile('<form action="" ng:submit="submitted = true">' +
'<input type="submit"/>' +
'</form>');
- scope.$flush();
+ scope.$digest();
expect(scope.submitted).not.toBeDefined();
browserTrigger(element.children()[0]);
@@ -187,18 +179,18 @@ describe("directive", function(){
it('should add new and remove old classes dynamically', function() {
var scope = compile('<div class="existing" ng:class="dynClass"></div>');
scope.dynClass = 'A';
- scope.$flush();
+ scope.$digest();
expect(element.hasClass('existing')).toBe(true);
expect(element.hasClass('A')).toBe(true);
scope.dynClass = 'B';
- scope.$flush();
+ scope.$digest();
expect(element.hasClass('existing')).toBe(true);
expect(element.hasClass('A')).toBe(false);
expect(element.hasClass('B')).toBe(true);
delete scope.dynClass;
- scope.$flush();
+ scope.$digest();
expect(element.hasClass('existing')).toBe(true);
expect(element.hasClass('A')).toBe(false);
expect(element.hasClass('B')).toBe(false);
@@ -206,7 +198,7 @@ describe("directive", function(){
it('should support adding multiple classes', function(){
var scope = compile('<div class="existing" ng:class="[\'A\', \'B\']"></div>');
- scope.$flush();
+ scope.$digest();
expect(element.hasClass('existing')).toBeTruthy();
expect(element.hasClass('A')).toBeTruthy();
expect(element.hasClass('B')).toBeTruthy();
@@ -216,7 +208,7 @@ describe("directive", function(){
it('should ng:class odd/even', function(){
var scope = compile('<ul><li ng:repeat="i in [0,1]" class="existing" ng:class-odd="\'odd\'" ng:class-even="\'even\'"></li><ul>');
- scope.$flush();
+ scope.$digest();
var e1 = jqLite(element[0].childNodes[1]);
var e2 = jqLite(element[0].childNodes[2]);
expect(e1.hasClass('existing')).toBeTruthy();
@@ -228,32 +220,32 @@ describe("directive", function(){
describe('ng:style', function(){
it('should set', function(){
var scope = compile('<div ng:style="{height: \'40px\'}"></div>');
- scope.$flush();
+ scope.$digest();
expect(element.css('height')).toEqual('40px');
});
it('should silently ignore undefined style', function() {
var scope = compile('<div ng:style="myStyle"></div>');
- scope.$flush();
+ scope.$digest();
expect(element.hasClass('ng-exception')).toBeFalsy();
});
it('should preserve and remove previous style', function(){
var scope = compile('<div style="height: 10px;" ng:style="myStyle"></div>');
- scope.$flush();
+ scope.$digest();
expect(getStyle(element)).toEqual({height: '10px'});
scope.myStyle = {height: '20px', width: '10px'};
- scope.$flush();
+ scope.$digest();
expect(getStyle(element)).toEqual({height: '20px', width: '10px'});
scope.myStyle = {};
- scope.$flush();
+ scope.$digest();
expect(getStyle(element)).toEqual({height: '10px'});
});
});
it('should silently ignore undefined ng:style', function() {
var scope = compile('<div ng:style="myStyle"></div>');
- scope.$flush();
+ scope.$digest();
expect(element.hasClass('ng-exception')).toBeFalsy();
});
@@ -263,10 +255,10 @@ describe("directive", function(){
var element = jqLite('<div ng:show="exp"></div>'),
scope = compile(element);
- scope.$flush();
+ scope.$digest();
expect(isCssVisible(element)).toEqual(false);
scope.exp = true;
- scope.$flush();
+ scope.$digest();
expect(isCssVisible(element)).toEqual(true);
});
@@ -277,7 +269,7 @@ describe("directive", function(){
expect(isCssVisible(element)).toBe(false);
scope.exp = true;
- scope.$flush();
+ scope.$digest();
expect(isCssVisible(element)).toBe(true);
});
});
@@ -289,7 +281,7 @@ describe("directive", function(){
expect(isCssVisible(element)).toBe(true);
scope.exp = true;
- scope.$flush();
+ scope.$digest();
expect(isCssVisible(element)).toBe(false);
});
});
@@ -339,25 +331,10 @@ describe("directive", function(){
expect(scope.greeter.greeting).toEqual('hello');
expect(scope.childGreeter.greeting).toEqual('hey');
expect(scope.childGreeter.$parent.greeting).toEqual('hello');
- scope.$flush();
+ scope.$digest();
expect(scope.$element.text()).toEqual('hey dude!');
});
});
- //TODO(misko): this needs to be deleted when ng:eval-order is gone
- it('should eval things according to ng:eval-order', function(){
- var scope = compile(
- '<div ng:init="log=\'\'">' +
- '{{log = log + \'e\'}}' +
- '<span ng:eval-order="first" ng:eval="log = log + \'a\'">' +
- '{{log = log + \'b\'}}' +
- '<span src="{{log = log + \'c\'}}"></span>' +
- '<span bind-template="{{log = log + \'d\'}}"></span>' +
- '</span>' +
- '</div>');
- scope.$flush();
- expect(scope.log).toEqual('abcde');
- });
-
});