From 3f9a2ab9bdfcd12cb7df74b0d38cecf2ee4ac94a Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Fri, 12 Feb 2010 19:39:01 -0800
Subject: added asynchronous validator
---
test/ValidatorsTest.js | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
(limited to 'test/ValidatorsTest.js')
diff --git a/test/ValidatorsTest.js b/test/ValidatorsTest.js
index a4e603fa..5449ebb0 100644
--- a/test/ValidatorsTest.js
+++ b/test/ValidatorsTest.js
@@ -81,3 +81,58 @@ ValidatorTest.prototype.testJson = function() {
assertNotNull(angular.validator.json("''X"));
assertNull(angular.validator.json("{}"));
};
+
+describe('Validator:asynchronous', function(){
+ var asynchronous = angular.validator.asynchronous;
+ var self;
+ var value, fn;
+
+ beforeEach(function(){
+ value = null;
+ fn = null;
+ self = {
+ $element:$('')[0],
+ $invalidWidgets:[],
+ $updateView: noop
+ };
+ });
+
+ it('should make a request and show spinner', function(){
+ var x = compile('')
+ var asyncFn = function(v,f){value=v; fn=f};
+ var input = x.node.find(":input");
+ x.scope.set("asyncFn", asyncFn);
+ x.scope.set("name", "misko");
+ x.binder.updateView();
+ expect(value).toEqual('misko');
+ expect(input.hasClass('ng-input-indicator-wait')).toBeTruthy();
+ fn("myError");
+ expect(input.hasClass('ng-input-indicator-wait')).toBeFalsy();
+ expect(input.attr('ng-error')).toEqual("myError");
+ });
+
+ it("should not make second request to same value", function(){
+ asynchronous.call(self, "kai", function(v,f){value=v; fn=f;});
+ expect(value).toEqual('kai');
+ expect(self.$invalidWidgets).toEqual([self.$element]);
+
+ var spy = jasmine.createSpy();
+ asynchronous.call(self, "kai", spy);
+ expect(spy).wasNotCalled();
+
+ asynchronous.call(self, "misko", spy);
+ expect(spy).wasCalled();
+ });
+
+ it("should ignore old callbacks, and not remove spinner", function(){
+ var firstCb, secondCb;
+ asynchronous.call(self, "first", function(v,f){value=v; firstCb=f;});
+ asynchronous.call(self, "second", function(v,f){value=v; secondCb=f;});
+
+ firstCb();
+ expect($(self.$element).hasClass('ng-input-indicator-wait')).toBeTruthy();
+
+ secondCb();
+ expect($(self.$element).hasClass('ng-input-indicator-wait')).toBeFalsy();
+ });
+});
\ No newline at end of file
--
cgit v1.2.3