diff options
Diffstat (limited to 'test/ScopeSpec.js')
| -rw-r--r-- | test/ScopeSpec.js | 213 |
1 files changed, 113 insertions, 100 deletions
diff --git a/test/ScopeSpec.js b/test/ScopeSpec.js index 23638b27..a3b6d9ae 100644 --- a/test/ScopeSpec.js +++ b/test/ScopeSpec.js @@ -15,133 +15,146 @@ describe('scope/model', function(){ expect(model.$root).toEqual(model); }); - //$eval - it('should eval function with correct this and pass arguments', function(){ - var model = createScope(); - model.$eval(function(name){ - this.name = name; - }, 'works'); - expect(model.name).toEqual('works'); - }); + describe('$eval', function(){ + it('should eval function with correct this and pass arguments', function(){ + var model = createScope(); + model.$eval(function(name){ + this.name = name; + }, 'works'); + expect(model.name).toEqual('works'); + }); - it('should eval expression with correct this', function(){ - var model = createScope(); - model.$eval('name="works"'); - expect(model.name).toEqual('works'); - }); + it('should eval expression with correct this', function(){ + var model = createScope(); + model.$eval('name="works"'); + expect(model.name).toEqual('works'); + }); - //$watch - it('should watch an expression for change', function(){ - var model = createScope(); - model.oldValue = ""; - var nameCount = 0, evalCount = 0; - model.name = 'adam'; - model.$watch('name', function(){ nameCount ++; }); - model.$watch(function(){return model.name;}, function(newValue, oldValue){ - this.newValue = newValue; - this.oldValue = oldValue; + it('should do nothing on empty string and not update view', function(){ + var model = createScope(); + var onEval = jasmine.createSpy('onEval'); + model.$onEval(onEval); + model.$eval(''); + expect(onEval).wasNotCalled(); }); - model.$onEval(function(){evalCount ++;}); - model.name = 'misko'; - model.$eval(); - expect(nameCount).toEqual(2); - expect(evalCount).toEqual(1); - expect(model.newValue).toEqual('misko'); - expect(model.oldValue).toEqual('adam'); }); - it('should eval with no arguments', function(){ - var model = createScope(); - var count = 0; - model.$onEval(function(){count++;}); - model.$eval(); - expect(count).toEqual(1); - }); + describe('$watch', function(){ + it('should watch an expression for change', function(){ + var model = createScope(); + model.oldValue = ""; + var nameCount = 0, evalCount = 0; + model.name = 'adam'; + model.$watch('name', function(){ nameCount ++; }); + model.$watch(function(){return model.name;}, function(newValue, oldValue){ + this.newValue = newValue; + this.oldValue = oldValue; + }); + model.$onEval(function(){evalCount ++;}); + model.name = 'misko'; + model.$eval(); + expect(nameCount).toEqual(2); + expect(evalCount).toEqual(1); + expect(model.newValue).toEqual('misko'); + expect(model.oldValue).toEqual('adam'); + }); - //$bind - it('should curry a function with respect to scope', function(){ - var model = createScope(); - model.name = 'misko'; - expect(model.$bind(function(){return this.name;})()).toEqual('misko'); + it('should eval with no arguments', function(){ + var model = createScope(); + var count = 0; + model.$onEval(function(){count++;}); + model.$eval(); + expect(count).toEqual(1); + }); }); - //$tryEval - it('should report error on element', function(){ - var scope = createScope(); - scope.$tryEval('throw "myerror";', function(error){ - scope.error = error; + describe('$bind', function(){ + it('should curry a function with respect to scope', function(){ + var model = createScope(); + model.name = 'misko'; + expect(model.$bind(function(){return this.name;})()).toEqual('misko'); }); - expect(scope.error).toEqual('myerror'); }); - it('should report error on visible element', function(){ - var element = jqLite('<div></div>'); - var scope = createScope(); - scope.$tryEval('throw "myError"', element); - expect(element.attr('ng-exception')).toEqual('"myError"'); // errors are jsonified - expect(element.hasClass('ng-exception')).toBeTruthy(); - }); + describe('$tryEval', function(){ + it('should report error on element', function(){ + var scope = createScope(); + scope.$tryEval('throw "myerror";', function(error){ + scope.error = error; + }); + expect(scope.error).toEqual('myerror'); + }); - it('should report error on $excetionHandler', function(){ - var element = jqLite('<div></div>'); - var scope = createScope(); - scope.$exceptionHandler = function(e){ - this.error = e; - }; - scope.$tryEval('throw "myError"'); - expect(scope.error).toEqual("myError"); + it('should report error on visible element', function(){ + var element = jqLite('<div></div>'); + var scope = createScope(); + scope.$tryEval('throw "myError"', element); + expect(element.attr('ng-exception')).toEqual('"myError"'); // errors are jsonified + expect(element.hasClass('ng-exception')).toBeTruthy(); + }); + + it('should report error on $excetionHandler', function(){ + var element = jqLite('<div></div>'); + var scope = createScope(); + scope.$exceptionHandler = function(e){ + this.error = e; + }; + scope.$tryEval('throw "myError"'); + expect(scope.error).toEqual("myError"); + }); }); // $onEval + describe('$onEval', function(){ + it("should eval using priority", function(){ + var scope = createScope(); + scope.log = ""; + scope.$onEval('log = log + "middle;"'); + scope.$onEval(-1, 'log = log + "first;"'); + scope.$onEval(1, 'log = log + "last;"'); + scope.$eval(); + expect(scope.log).toEqual('first;middle;last;'); + }); - it("should eval using priority", function(){ - var scope = createScope(); - scope.log = ""; - scope.$onEval('log = log + "middle;"'); - scope.$onEval(-1, 'log = log + "first;"'); - scope.$onEval(1, 'log = log + "last;"'); - scope.$eval(); - expect(scope.log).toEqual('first;middle;last;'); - }); - - it("should have $root and $parent", function(){ - var parent = createScope(); - var scope = createScope(parent); - expect(scope.$root).toEqual(parent); - expect(scope.$parent).toEqual(parent); + it("should have $root and $parent", function(){ + var parent = createScope(); + var scope = createScope(parent); + expect(scope.$root).toEqual(parent); + expect(scope.$parent).toEqual(parent); + }); }); - // Service injection - it('should inject services', function(){ - var scope = createScope(null, { - service:function(){ + describe('service injection', function(){ + it('should inject services', function(){ + var scope = createScope(null, { + service:function(){ return "ABC"; } + }); + expect(scope.service).toEqual("ABC"); }); - expect(scope.service).toEqual("ABC"); - }); - it('should inject arugments', function(){ - var scope = createScope(null, { - name:function(){ + it('should inject arugments', function(){ + var scope = createScope(null, { + name:function(){ return "misko"; }, greet: extend(function(name) { return 'hello ' + name; }, {inject:['name']}) - }); - expect(scope.greet).toEqual("hello misko"); - }); - - it('should throw error on missing dependency', function(){ - try { - createScope(null, { - greet: extend(function(name) { - }, {inject:['name']}) }); - } catch(e) { - expect(e).toEqual("Don't know how to inject 'name'."); - } - }); + expect(scope.greet).toEqual("hello misko"); + }); + it('should throw error on missing dependency', function(){ + try { + createScope(null, { + greet: extend(function(name) { + }, {inject:['name']}) + }); + } catch(e) { + expect(e).toEqual("Don't know how to inject 'name'."); + } + }); + }); }); |
