aboutsummaryrefslogtreecommitdiffstats
path: root/test/directivesSpec.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/directivesSpec.js')
-rw-r--r--test/directivesSpec.js123
1 files changed, 82 insertions, 41 deletions
diff --git a/test/directivesSpec.js b/test/directivesSpec.js
index ef4814bf..f0eb5c09 100644
--- a/test/directivesSpec.js
+++ b/test/directivesSpec.js
@@ -29,35 +29,60 @@ describe("directives", function(){
expect(scope.a).toEqual(2);
});
- it('should ng:bind', function() {
- var scope = compile('<div ng:bind="a"></div>');
- expect(element.text()).toEqual('');
- scope.a = 'misko';
- scope.$eval();
- expect(element.text()).toEqual('misko');
- });
+ 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.$eval();
+ expect(element.text()).toEqual('misko');
+ });
- it('should ng:bind html', function() {
- var scope = compile('<div ng:bind="html|html"></div>');
- scope.html = '<div>hello</div>';
- scope.$eval();
- expect(lowercase(element.html())).toEqual('<div>hello</div>');
- });
+ it('should set html', function() {
+ var scope = compile('<div ng:bind="html|html"></div>');
+ scope.html = '<div>hello</div>';
+ scope.$eval();
+ expect(lowercase(element.html())).toEqual('<div>hello</div>');
+ });
+
+ it('should set element element', function() {
+ angularFilter.myElement = function() {
+ return jqLite('<a>hello</a>');
+ };
+ var scope = compile('<div ng:bind="0|myElement"></div>');
+ scope.$eval();
+ expect(lowercase(element.html())).toEqual('<a>hello</a>');
+ });
+
+ it('should have $element set to current bind element', function(){
+ angularFilter.myFilter = function(){
+ this.$element.text('HELLO');
+ };
+ var scope = compile('<div>before<div ng:bind="0|myFilter"></div>after</div>');
+ expect(scope.$element.text()).toEqual("beforeHELLOafter");
+ });
- it('should ng:bind element', function() {
- angularFilter.myElement = function() {
- return jqLite('<a>hello</a>');
- };
- var scope = compile('<div ng:bind="0|myElement"></div>');
- scope.$eval();
- expect(lowercase(element.html())).toEqual('<a>hello</a>');
});
- it('should ng:bind-template', function() {
- var scope = compile('<div ng:bind-template="Hello {{name}}!"></div>');
- scope.$set('name', 'Misko');
- scope.$eval();
- expect(element.text()).toEqual('Hello Misko!');
+ describe('ng:bind-template', function(){
+ it('should ng:bind-template', function() {
+ var scope = compile('<div ng:bind-template="Hello {{name}}!"></div>');
+ scope.$set('name', 'Misko');
+ scope.$eval();
+ expect(element.text()).toEqual('Hello Misko!');
+ });
+
+ it('should have $element set to current bind element', function(){
+ var innerText = 'blank';
+ angularFilter.myFilter = function(text){
+ innerText = this.$element.text();
+ return text;
+ };
+ var scope = compile('<div>before<span ng:bind-template="{{\'HELLO\'|myFilter}}">INNER</span>after</div>');
+ expect(scope.$element.text()).toEqual("beforeHELLOafter");
+ expect(innerText).toEqual('INNER');
+ });
+
});
it('should ng:bind-attr', function(){
@@ -115,11 +140,6 @@ describe("directives", function(){
expect(element.text()).toEqual('misko:swe;shyam:set;');
});
- it('should set ng:repeat to [] if undefinde', function(){
- var scope = compile('<ul><li ng:repeat="item in items"></li></ul>');
- expect(scope.items).toEqual([]);
- });
-
it('should error on wrong parsing of ng:repeat', function(){
var scope = compile('<ul><li ng:repeat="i dont parse"></li></ul>');
var log = "";
@@ -140,13 +160,15 @@ describe("directives", function(){
expect(scope.$get('count')).toEqual(1);
});
- it('should ng:click', function(){
- var scope = compile('<div ng:click="clicked = true"></div>');
- scope.$eval();
- expect(scope.$get('clicked')).toBeFalsy();
+ describe('ng:click', function(){
+ it('should fire event', function(){
+ var scope = compile('<div ng:click="clicked = true"></div>');
+ scope.$eval();
+ expect(scope.$get('clicked')).toBeFalsy();
- element.trigger('click');
- expect(scope.$get('clicked')).toEqual(true);
+ element.trigger('click');
+ expect(scope.$get('clicked')).toEqual(true);
+ });
});
it('should ng:class', function(){
@@ -168,16 +190,35 @@ describe("directives", function(){
expect(e2.hasClass('even')).toBeTruthy();
});
- it('should ng:style', function(){
- var scope = compile('<div ng:style="{color:\'red\'}"></div>');
- scope.$eval();
- expect(element.css('color')).toEqual('red');
+ describe('ng:style', function(){
+ it('should set', function(){
+ var scope = compile('<div ng:style="{color:\'red\'}"></div>');
+ scope.$eval();
+ expect(element.css('color')).toEqual('red');
+ });
+
+ it('should silently ignore undefined style', function() {
+ var scope = compile('<div ng:style="myStyle"></div>');
+ scope.$eval();
+ expect(element.hasClass('ng-exception')).toBeFalsy();
+ });
+
+ it('should preserve and remove previous style', function(){
+ var scope = compile('<div style="color:red;" ng:style="myStyle"></div>');
+ scope.$eval();
+ expect(getStyle(element)).toEqual({color:'red'});
+ scope.myStyle = {color:'blue', width:'10px'};
+ scope.$eval();
+ expect(getStyle(element)).toEqual({color:'blue', width:'10px'});
+ scope.myStyle = {};
+ scope.$eval();
+ expect(getStyle(element)).toEqual({color:'red'});
+ });
});
it('should silently ignore undefined ng:style', function() {
var scope = compile('<div ng:style="myStyle"></div>');
scope.$eval();
- dump(sortedHtml(element));
expect(element.hasClass('ng-exception')).toBeFalsy();
});