aboutsummaryrefslogtreecommitdiffstats
path: root/test/ScopeSpec.js
diff options
context:
space:
mode:
authorMisko Hevery2010-03-25 22:07:36 -0700
committerMisko Hevery2010-03-25 22:07:36 -0700
commit1990cbbf2817e04657ccd616da1d9d6b78cc2949 (patch)
tree9c38bfd08ab0e42f362f8d8df39c47f06c13098f /test/ScopeSpec.js
parentd934054cfc22325d817eb0643dc061f9d212804d (diff)
downloadangular.js-1990cbbf2817e04657ccd616da1d9d6b78cc2949.tar.bz2
added few extra tests
Diffstat (limited to 'test/ScopeSpec.js')
-rw-r--r--test/ScopeSpec.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/test/ScopeSpec.js b/test/ScopeSpec.js
new file mode 100644
index 00000000..0a0b4241
--- /dev/null
+++ b/test/ScopeSpec.js
@@ -0,0 +1,90 @@
+describe('scope/model', function(){
+
+ it('should create a scope with parent', function(){
+ var model = scope({name:'Misko'});
+ expect(model.name).toEqual('Misko');
+ });
+
+ it('should have $get/set$/parent$', function(){
+ var parent = {};
+ var model = scope(parent);
+ model.$set('name', 'adam');
+ expect(model.name).toEqual('adam');
+ expect(model.$get('name')).toEqual('adam');
+ expect(model.$parent).toEqual(parent);
+ });
+
+ //$eval
+ it('should eval function with correct this and pass arguments', function(){
+ var model = scope();
+ model.$eval(function(name){
+ this.name = name;
+ }, 'works');
+ expect(model.name).toEqual('works');
+ });
+
+ it('should eval expression with correct this', function(){
+ var model = scope();
+ model.$eval('name="works"');
+ expect(model.name).toEqual('works');
+ });
+
+ //$onEval
+ it('should watch an expression for change', function(){
+ var model = scope();
+ model.oldValue = "";
+ var count = 0;
+ model.name = 'adam';
+ model.$watch('name', function(){ count ++; });
+ model.$watch(function(){return model.name;}, function(newValue, oldValue){
+ this.newValue = newValue;
+ this.oldValue = oldValue;
+ });
+ model.name = 'misko';
+ model.$eval();
+ expect(count).toEqual(1);
+ expect(model.newValue).toEqual('misko');
+ expect(model.oldValue).toEqual('adam');
+ });
+
+ it('should eval with no arguments', function(){
+ var model = scope();
+ var count = 0;
+ model.$onEval(function(){count++;});
+ model.$eval();
+ expect(count).toEqual(1);
+ });
+
+ //$bind
+ it('should curry a function with respect to scope', function(){
+ var model = scope();
+ model.name = 'misko';
+ expect(model.$bind(function(){return this.name;})()).toEqual('misko');
+ });
+
+ //$behavior
+ it('should behave as class', function(){
+ function Printer(brand){
+ this.brand = brand;
+ };
+ Printer.prototype.print = function(){
+ this.printed = true;
+ };
+ var model = scope({ name: 'parent' }, Printer, 'hp');
+ expect(model.brand).toEqual('hp');
+ model.print();
+ expect(model.printed).toEqual(true);
+ });
+
+
+
+ //$tryEval
+ it('should report error on element', function(){
+
+ });
+
+ it('should report error on visible element', function(){
+
+ });
+
+});