diff options
Diffstat (limited to 'test/directivesSpec.js')
| -rw-r--r-- | test/directivesSpec.js | 91 |
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'); - }); - }); |
