From d934054cfc22325d817eb0643dc061f9d212804d Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Thu, 25 Mar 2010 22:03:11 -0700 Subject: major refactoring of scope --- test/directivesSpec.js | 96 ++++++++++++++++++++++++-------------------------- test/markupSpec.js | 17 +++++---- test/widgetsSpec.js | 96 ++++++++++++++++++++++++-------------------------- 3 files changed, 102 insertions(+), 107 deletions(-) (limited to 'test') diff --git a/test/directivesSpec.js b/test/directivesSpec.js index 83a270c1..4ef57dce 100644 --- a/test/directivesSpec.js +++ b/test/directivesSpec.js @@ -1,49 +1,49 @@ describe("directives", function(){ - var compile, element; + var compile, model, element; beforeEach(function() { var compiler = new Compiler(angularTextMarkup, angularAttrMarkup, angularDirective, angularWidget); compile = function(html) { element = jqLite(html); - var view = compiler.compile(element)(element); - view.init(); - return view.scope; + model = compiler.compile(element)(element); + model.$init(); + return model; }; }); afterEach(function() { - element.remove(); + model.$element.remove(); expect(_(jqCache).size()).toEqual(0); }); it("should ng-init", function() { var scope = compile('
'); - expect(scope.get('a')).toEqual(123); + expect(scope.a).toEqual(123); }); it("should ng-eval", function() { var scope = compile(''); - expect(scope.get('a')).toEqual(0); - scope.updateView(); - expect(scope.get('a')).toEqual(1); - scope.updateView(); - expect(scope.get('a')).toEqual(2); + expect(scope.a).toEqual(0); + scope.$eval(); + expect(scope.a).toEqual(1); + scope.$eval(); + expect(scope.a).toEqual(2); }); it('should ng-bind', function() { var scope = compile(''); expect(element.text()).toEqual(''); - scope.set('a', 'misko'); - scope.updateView(); + scope.a = 'misko'; + scope.$eval(); expect(element.text()).toEqual('misko'); }); it('should ng-bind-template', function() { var scope = compile(''); expect(element.text()).toEqual(''); - scope.set('name', 'Misko'); - scope.updateView(); + scope.$set('name', 'Misko'); + scope.$eval(); expect(element.text()).toEqual('Hello Misko!'); }); @@ -51,75 +51,73 @@ describe("directives", function(){ var scope = compile('
');
expect(element.attr('src')).toEqual();
expect(element.attr('ng-bind-attr')).toEqual('{"src":"http://server/{{path}}.png"}');
- scope.set('path', 'a/b');
- scope.updateView();
+ scope.$set('path', 'a/b');
+ scope.$eval();
expect(element.attr('src')).toEqual("http://server/a/b.png");
});
diff --git a/test/widgetsSpec.js b/test/widgetsSpec.js
index 0f416278..7c9ea04a 100644
--- a/test/widgetsSpec.js
+++ b/test/widgetsSpec.js
@@ -1,6 +1,6 @@
describe("input widget", function(){
- var compile, element, scope, model;
+ var compile, element, scope;
beforeEach(function() {
scope = null;
@@ -8,10 +8,8 @@ describe("input widget", function(){
var compiler = new Compiler(angularTextMarkup, angularAttrMarkup, angularDirective, angularWidget);
compile = function(html) {
element = jqLite(html);
- var view = compiler.compile(element)(element);
- view.init();
- scope = view.scope;
- model = scope.state;
+ scope = compiler.compile(element)(element);
+ scope.$init();
};
});
@@ -22,35 +20,35 @@ describe("input widget", function(){
it('should input-text auto init and handle keyup/change events', function(){
compile('');
- expect(scope.get('name')).toEqual("Misko");
- expect(scope.get('count')).toEqual(0);
+ expect(scope.$get('name')).toEqual("Misko");
+ expect(scope.$get('count')).toEqual(0);
- scope.set('name', 'Adam');
- scope.updateView();
+ scope.$set('name', 'Adam');
+ scope.$eval();
expect(element.val()).toEqual("Adam");
element.val('Shyam');
element.trigger('keyup');
- expect(scope.get('name')).toEqual('Shyam');
- expect(scope.get('count')).toEqual(1);
+ expect(scope.$get('name')).toEqual('Shyam');
+ expect(scope.$get('count')).toEqual(1);
element.val('Kai');
element.trigger('change');
- expect(scope.get('name')).toEqual('Kai');
- expect(scope.get('count')).toEqual(2);
+ expect(scope.$get('name')).toEqual('Kai');
+ expect(scope.$get('count')).toEqual(2);
});
it("should process ng-format", function(){
compile('');
- expect(scope.get('list')).toEqual(['a', 'b', 'c']);
+ expect(scope.$get('list')).toEqual(['a', 'b', 'c']);
- scope.set('list', ['x', 'y', 'z']);
- scope.updateView();
+ scope.$set('list', ['x', 'y', 'z']);
+ scope.$eval();
expect(element.val()).toEqual("x, y, z");
element.val('1, 2, 3');
element.trigger('keyup');
- expect(scope.get('list')).toEqual(['1', '2', '3']);
+ expect(scope.$get('list')).toEqual(['1', '2', '3']);
});
it("should process ng-validation", function(){
@@ -58,8 +56,8 @@ describe("input widget", function(){
expect(element.hasClass('ng-validation-error')).toBeTruthy();
expect(element.attr('ng-error')).toEqual('Not a number');
- scope.set('price', '123');
- scope.updateView();
+ scope.$set('price', '123');
+ scope.$eval();
expect(element.hasClass('ng-validation-error')).toBeFalsy();
expect(element.attr('ng-error')).toBeFalsy();
@@ -74,8 +72,8 @@ describe("input widget", function(){
expect(element.hasClass('ng-validation-error')).toBeTruthy();
expect(element.attr('ng-error')).toEqual('Required');
- scope.set('price', 'xxx');
- scope.updateView();
+ scope.$set('price', 'xxx');
+ scope.$eval();
expect(element.hasClass('ng-validation-error')).toBeFalsy();
expect(element.attr('ng-error')).toBeFalsy();
@@ -87,41 +85,41 @@ describe("input widget", function(){
it("should process ng-required", function() {
compile('');
- expect(scope.get('name')).toEqual("Misko");
+ expect(scope.$get('name')).toEqual("Misko");
- scope.set('name', 'Adam');
- scope.updateView();
+ scope.$set('name', 'Adam');
+ scope.$eval();
expect(element.val()).toEqual("Adam");
element.val('Shyam');
element.trigger('keyup');
- expect(scope.get('name')).toEqual('Shyam');
+ expect(scope.$get('name')).toEqual('Shyam');
element.val('Kai');
element.trigger('change');
- expect(scope.get('name')).toEqual('Kai');
+ expect(scope.$get('name')).toEqual('Kai');
});
it('should call ng-action on button click', function(){
compile('');
element.click();
- expect(scope.get('clicked')).toEqual(true);
+ expect(scope.$get('clicked')).toEqual(true);
});
it('should support button alias', function(){
compile('');
element.click();
- expect(scope.get('clicked')).toEqual(true);
+ expect(scope.$get('clicked')).toEqual(true);
});
it('should type="checkbox"', function(){
compile('');
- expect(scope.get('checkbox')).toEqual(true);
+ expect(scope.$get('checkbox')).toEqual(true);
element.click();
- expect(scope.get('checkbox')).toEqual(false);
- expect(scope.get('action')).toEqual(true);
+ expect(scope.$get('checkbox')).toEqual(false);
+ expect(scope.$get('action')).toEqual(true);
element.click();
- expect(scope.get('checkbox')).toEqual(true);
+ expect(scope.$get('checkbox')).toEqual(true);
});
it('should type="radio"', function(){
@@ -131,21 +129,21 @@ describe("input widget", function(){
'