diff options
Diffstat (limited to 'test/widgetsSpec.js')
| -rw-r--r-- | test/widgetsSpec.js | 68 |
1 files changed, 62 insertions, 6 deletions
diff --git a/test/widgetsSpec.js b/test/widgetsSpec.js index 3b6be8ec..da9d5f9b 100644 --- a/test/widgetsSpec.js +++ b/test/widgetsSpec.js @@ -1,4 +1,4 @@ -describe("widgets", function(){ +describe("input widget", function(){ var compile, element, scope; @@ -15,14 +15,70 @@ describe("widgets", function(){ }); afterEach(function(){ - if (element) { - element.remove(); - } + if (element) element.remove(); expect(_(jqCache).size()).toEqual(0); }); - it('should fail', function(){ - fail('iueoi'); + it('should input-text auto init and handle keyup/change events', function(){ + compile('<input type="Text" name="name" value="Misko"/>'); + expect(scope.get('name')).toEqual("Misko"); + + scope.set('name', 'Adam'); + scope.updateView(); + expect(element.attr('value')).toEqual("Adam"); + + element.attr('value', 'Shyam'); + element.trigger('keyup'); + expect(scope.get('name')).toEqual('Shyam'); + + element.attr('value', 'Kai'); + element.trigger('change'); + expect(scope.get('name')).toEqual('Kai'); + }); + + it("should process ng-format", function(){ + compile('<input type="Text" name="list" value="a,b,c" ng-format="list"/>'); + expect(scope.get('list')).toEqual(['a', 'b', 'c']); + + scope.set('list', ['x', 'y', 'z']); + scope.updateView(); + expect(element.attr('value')).toEqual("x, y, z"); + + element.attr('value', '1, 2, 3'); + element.trigger('keyup'); + expect(scope.get('list')).toEqual(['1', '2', '3']); + }); + + it("should process ng-validation", function(){ + compile('<input type="text" name="price" value="abc" ng-validate="number"/>'); + expect(element.hasClass('ng-validation-error')).toBeTruthy(); + expect(element.attr('ng-error')).toEqual('Not a number'); + + scope.set('price', '123'); + scope.updateView(); + expect(element.hasClass('ng-validation-error')).toBeFalsy(); + expect(element.attr('ng-error')).toBeFalsy(); + + element.attr('value', 'x'); + element.trigger('keyup'); + expect(element.hasClass('ng-validation-error')).toBeTruthy(); + expect(element.attr('ng-error')).toEqual('Not a number'); + }); + + it("should process ng-required", function(){ + compile('<input type="text" name="price" ng-required/>'); + expect(element.hasClass('ng-validation-error')).toBeTruthy(); + expect(element.attr('ng-error')).toEqual('Required'); + + scope.set('price', 'xxx'); + scope.updateView(); + expect(element.hasClass('ng-validation-error')).toBeFalsy(); + expect(element.attr('ng-error')).toBeFalsy(); + + element.attr('value', ''); + element.trigger('keyup'); + expect(element.hasClass('ng-validation-error')).toBeTruthy(); + expect(element.attr('ng-error')).toEqual('Required'); }); }); |
