UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

1,087 lines (823 loc) 35.4 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2009 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Martin Wittemann (martinwittemann) ************************************************************************ */ qx.Class.define("qx.test.ui.form.FormValidator", { extend : qx.test.ui.LayoutTestCase, construct : function() { this.base(arguments); }, members : { __username : null, __password1 : null, __password2 : null, __manager : null, setUp: function() { this.__username = new qx.ui.form.TextField(); this.__password1 = new qx.ui.form.TextField(); this.__password2 = new qx.ui.form.TextField(); this.__manager = new qx.ui.form.validation.Manager(); }, tearDown: function() { this.__manager.dispose(); this.__username.dispose(); this.__password1.dispose(); this.__password2.dispose(); }, // validator __notEmptyValidator : function(value, formItem) { var isString = qx.lang.Type.isString(value); var valid = isString && value.length > 0; valid ? formItem.setInvalidMessage("") : formItem.setInvalidMessage("fail"); return valid; }, __notEmptyValidatorError : function(value) { var isString = qx.lang.Type.isString(value); if (!isString || value.length == 0) { throw new qx.core.ValidationError("fail"); } }, __asyncValidator : function(validator, value) { window.setTimeout(function() { var valid = value != null && value.length > 0; validator.setValid(valid, "fail"); }, 100); }, // context ////////////////////// testSyncContext : function() { var self = this; this.__manager.add(this.__username, function(value, formItem) { self.assertEquals(1, this.a); }, {a: 1}); this.__manager.validate(); }, testSync2Context : function() { var self = this; this.__manager.add(this.__username, function(value, formItem) { self.assertEquals(1, this.a); }, {a: 1}); this.__manager.add(this.__password1, function(value, formItem) { self.assertEquals(2, this.a); }, {a: 2}); this.__manager.validate(); }, testAsyncContext : function() { var self = this; var asyncValidator = new qx.ui.form.validation.AsyncValidator( function(value, formItem) { self.assertEquals(1, this.a); } ); this.__manager.add(this.__username, asyncValidator, {a: 1}); this.__manager.validate(); asyncValidator.dispose(); }, testAsync2Context : function() { var self = this; var asyncValidator = new qx.ui.form.validation.AsyncValidator( function(value, formItem) { self.assertEquals(1, this.a); } ); var asyncValidator2 = new qx.ui.form.validation.AsyncValidator( function(value, formItem) { self.assertEquals(2, this.a); } ); this.__manager.add(this.__username, asyncValidator, {a: 1}); this.__manager.add(this.__password1, asyncValidator2, {a: 2}); this.__manager.validate(); asyncValidator.dispose(); asyncValidator2.dispose(); }, testSyncFormContext : function() { var self = this; this.__manager.setValidator(function() { self.assertEquals(1, this.a); }); this.__manager.setContext({a: 1}); this.__manager.validate(); }, testAsyncFormContext : function() { var self = this; var asyncValidator = new qx.ui.form.validation.AsyncValidator( function() { self.assertEquals(1, this.a); }); this.__manager.setValidator(asyncValidator); this.__manager.setContext({a: 1}); this.__manager.validate(); asyncValidator.dispose(); }, // ////////////////////////////// // sync self contained /////////////// testSyncSelfContained1NotNull: function() { this.__manager.add(this.__username, this.__notEmptyValidator); // validate = fail (no text entered) this.assertFalse(this.__manager.validate()); this.assertFalse(this.__manager.getValid()); this.assertFalse(this.__username.getValid()); // check the invalid messages this.assertEquals("fail", this.__username.getInvalidMessage()); this.assertEquals("fail", this.__manager.getInvalidMessages()[0]); // enter text in the usernamen this.__username.setValue("affe"); // validate = true this.assertTrue(this.__manager.validate()); this.assertTrue(this.__manager.getValid()); this.assertTrue(this.__username.getValid()); // remove the username this.__username.resetValue(); // validate = fail this.assertFalse(this.__manager.validate()); this.assertFalse(this.__manager.getValid()); this.assertFalse(this.__username.getValid()); }, testSyncSelfContained1NotNullRadioButtonGroup: function() { var rbg = new qx.ui.form.RadioButtonGroup(); rbg.setRequired(true); rbg.getRadioGroup().setAllowEmptySelection(true); var rb1 = new qx.ui.form.RadioButton("a"); var rb2 = new qx.ui.form.RadioButton("b"); rbg.add(rb1); rbg.add(rb2); this.__manager.add(rbg); // validate = fail (no text entered) this.assertFalse(this.__manager.validate()); this.assertFalse(this.__manager.getValid()); this.assertFalse(rbg.getValid()); // select something rbg.setSelection([rb1]); // validate = true this.assertTrue(this.__manager.validate()); this.assertTrue(this.__manager.getValid()); this.assertTrue(rbg.getValid()); rbg.dispose(); }, testSyncSelfContained1NotNullEvents: function(attributes) { this.__manager.add(this.__username, this.__notEmptyValidator); var self = this; this.assertEventFired(this.__manager, "changeValid", function() { self.__manager.validate(); }, function(e) { self.assertFalse(e.getData()); self.assertNull(e.getOldData()); }); // make the form valid this.__username.setValue("affe"); this.assertEventFired(this.__manager, "changeValid", function() { self.__manager.validate(); }, function(e) { self.assertTrue(e.getData()); self.assertFalse(e.getOldData()); }); }, __testSyncSelfContained3NotNull: function(validator) { this.__manager.add(this.__username, validator); this.__manager.add(this.__password1, validator); this.__manager.add(this.__password2, validator); // validate = fail (no text entered) this.assertFalse(this.__manager.validate()); this.assertFalse(this.__username.getValid()); this.assertFalse(this.__password1.getValid()); this.assertFalse(this.__password2.getValid()); // check the invalid messages this.assertEquals("fail", this.__username.getInvalidMessage()); this.assertEquals("fail", this.__password1.getInvalidMessage()); this.assertEquals("fail", this.__password2.getInvalidMessage()); this.assertEquals("fail", this.__manager.getInvalidMessages()[0]); this.assertEquals("fail", this.__manager.getInvalidMessages()[1]); this.assertEquals("fail", this.__manager.getInvalidMessages()[2]); this.assertEquals(3, this.__manager.getInvalidMessages().length); // enter text to the two passwordfields this.__password1.setValue("1"); this.__password2.setValue("2"); // validate again = fail (username empty) this.assertFalse(this.__manager.validate()); this.assertFalse(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); // check the invalid messages this.assertEquals("fail", this.__username.getInvalidMessage()); this.assertEquals("fail", this.__manager.getInvalidMessages()[0]); this.assertEquals(1, this.__manager.getInvalidMessages().length); // enter text in the usernamen this.__username.setValue("affe"); // validate = true this.assertTrue(this.__manager.validate()); this.assertTrue(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); this.assertEquals(0, this.__manager.getInvalidMessages().length); // remove the username this.__username.resetValue(); // validate last time = false this.assertFalse(this.__manager.validate()); this.assertFalse(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); this.assertEquals(1, this.__manager.getInvalidMessages().length); }, testSyncSelfContained3NotNull : function() { this.__testSyncSelfContained3NotNull(this.__notEmptyValidator); }, testSyncSelfContained3NotNullError : function() { this.__testSyncSelfContained3NotNull(this.__notEmptyValidatorError); }, // ////////////////////////////// // sync related ////////////// __testSyncRelatedNoIndividual: function(validator) { this.__manager.add(this.__username); this.__manager.add(this.__password1); this.__manager.add(this.__password2); this.__password1.setValue("affe"); this.__manager.setValidator(validator); this.assertFalse(this.__manager.validate()); this.assertFalse(this.__manager.getValid()); this.assertEquals("fail", this.__manager.getInvalidMessage()); this.assertEquals("fail", this.__manager.getInvalidMessages()[0]); this.__password2.setValue("affe"); this.assertTrue(this.__manager.validate()); this.assertTrue(this.__manager.getValid()); this.assertEquals(0, this.__manager.getInvalidMessages().length); }, testSyncRelatedNoIndividual : function() { this.__testSyncRelatedNoIndividual(function(formItems, manager) { var valid = formItems[1].getValue() == formItems[2].getValue(); if (!valid) { manager.setInvalidMessage("fail"); } return valid; }); }, testSyncRelatedNoIndividualError : function() { this.__testSyncRelatedNoIndividual(function(formItems, manager) { if (formItems[1].getValue() != formItems[2].getValue()) { throw new qx.core.ValidationError("fail"); } }); }, testSyncRelatedWithIndividual: function() { this.__manager.add(this.__username, this.__notEmptyValidator); this.__manager.add(this.__password1, this.__notEmptyValidator); this.__manager.add(this.__password2, this.__notEmptyValidator); this.__password1.setValue("affe"); this.__manager.setValidator(function(formItems, manager) { var valid = formItems[1].getValue() == formItems[2].getValue(); if (!valid) { manager.setInvalidMessage("fail"); } return valid; }); // false: username and password2 empty && password 1 != password2 this.assertFalse(this.__manager.validate()); this.assertFalse(this.__manager.getValid()); this.assertFalse(this.__username.getValid()); this.assertFalse(this.__password2.getValid()); var messages = this.__manager.getInvalidMessages(); this.assertEquals("fail", this.__manager.getInvalidMessage()); this.assertEquals("fail", messages[0]); this.assertEquals("fail", messages[1]); this.assertEquals("fail", messages[2]); this.assertEquals(3, messages.length); this.__password2.setValue("affe"); // fail: username empty this.assertFalse(this.__manager.validate()); this.assertFalse(this.__manager.getValid()); this.assertEquals("fail", this.__manager.getInvalidMessages()[0]); this.assertEquals(1, this.__manager.getInvalidMessages().length); this.__username.setValue("user"); // ok this.assertTrue(this.__manager.validate()); this.assertTrue(this.__manager.getValid()); this.assertEquals(0, this.__manager.getInvalidMessages().length); this.assertTrue(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); // change back to not valid this.__password1.setValue("user"); // not ok this.assertFalse(this.__manager.validate()); this.assertFalse(this.__manager.getValid()); this.assertEquals(1, this.__manager.getInvalidMessages().length); this.assertTrue(this.__username.getValid()); }, // ////////////////////////////// // required ///////////////////// testRequired: function() { // set all 3 fields to required this.__username.setRequired(true); this.__password1.setRequired(true); this.__password2.setRequired(true); // add the fields to the form manager this.__manager.add(this.__username); this.__manager.add(this.__password1); this.__manager.add(this.__password2); // validate = fail (no text entered) this.assertFalse(this.__manager.validate()); this.assertFalse(this.__username.getValid()); this.assertFalse(this.__password1.getValid()); this.assertFalse(this.__password2.getValid()); // enter text to the two passwordfields this.__password1.setValue("1"); this.__password2.setValue("2"); // validate again = fail (username empty) this.assertFalse(this.__manager.validate()); this.assertFalse(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); // enter text in the usernamen this.__username.setValue("affe"); // validate last time = true this.assertTrue(this.__manager.validate()); this.assertTrue(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); }, testRequiredFieldMessage : function() { // set a global and an individual required field message this.__manager.setRequiredFieldMessage("affe"); this.__password1.setRequiredInvalidMessage("AFFEN"); // set fields to required this.__username.setRequired(true); this.__password1.setRequired(true); // add the fields to the form manager this.__manager.add(this.__username); this.__manager.add(this.__password1); // validate = fail (no text entered) this.assertFalse(this.__manager.validate()); // check the messages this.assertEquals("affe", this.__username.getInvalidMessage()); this.assertEquals("AFFEN", this.__password1.getInvalidMessage()); }, testRequiredNumberZero : function() { // initialize with value 1 var spinner = new qx.ui.form.Spinner(-1, 1, 1); spinner.setRequired(true); this.__manager.add(spinner); // validate --> should be valid due to value 1 set this.assertTrue(this.__manager.validate()); this.assertTrue(spinner.getValid()); spinner.setValue(0); // validate --> should be valid due to value 0 set this.assertTrue(this.__manager.validate()); this.assertTrue(spinner.getValid()); spinner.dispose(); }, // ////////////////////////////// // Async self contained ////////// testAsyncSelfContained1NotNullFail: function(){ var asyncValidator = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertFalse(this.__manager.isValid()); this.assertFalse(this.__username.getValid()); this.assertEquals("fail", this.__username.getInvalidMessage()); }, this); }, this); this.__manager.validate(); this.wait(); }, testAsyncSelfContained1NotNull: function(){ var asyncValidator = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator); this.__username.setValue("affe"); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertTrue(this.__manager.isValid()); this.assertTrue(this.__username.getValid()); }, this); }, this); this.__manager.validate(); this.wait(); }, testAsyncSelfContained3NotNullFail: function(){ var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator2 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator3 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, asyncValidator2); this.__manager.add(this.__password2, asyncValidator3); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertFalse(this.__manager.isValid()); this.assertFalse(this.__username.getValid()); this.assertEquals("fail", this.__username.getInvalidMessage()); this.assertEquals("fail", this.__password1.getInvalidMessage()); this.assertEquals("fail", this.__password2.getInvalidMessage()); this.assertEquals(3, this.__manager.getInvalidMessages().length); this.assertEquals("fail", this.__manager.getInvalidMessages()[0]); this.assertEquals("fail", this.__manager.getInvalidMessages()[1]); this.assertEquals("fail", this.__manager.getInvalidMessages()[2]); }, this); }, this); this.__manager.validate(); this.wait(); }, testAsyncSelfContained3NotNull: function(){ var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator2 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator3 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, asyncValidator2); this.__manager.add(this.__password2, asyncValidator3); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertTrue(this.__manager.isValid()); this.assertTrue(this.__username.getValid()); }, this); }, this); // add values to all three input fields this.__username.setValue("a"); this.__password1.setValue("b"); this.__password2.setValue("c"); this.__manager.validate(); this.wait(); }, testAsyncSelfContained2NotNullFailMixed: function() { // BUG #3735 var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator2 = new qx.ui.form.validation.AsyncValidator( function(validator, value) { window.setTimeout(function() { validator.setValid(false, "fail"); }, 300); } ); var asyncValidator3 = new qx.ui.form.validation.AsyncValidator( function(validator, value) { window.setTimeout(function() { validator.setValid(true, "WIN"); }, 500); } ); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, asyncValidator2); this.__manager.add(this.__password2, asyncValidator3); this.__username.setValid(false); this.__password1.setValid(false); this.__password2.setValid(false); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertFalse(this.__manager.isValid()); this.assertTrue(this.__username.getValid()); this.assertFalse(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); }, this); }, this); this.__username.setValue("a"); this.__manager.validate(); this.wait(); }, testAsyncSelfContained3NotNullHalfFail: function(){ var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator2 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator3 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, asyncValidator2); this.__manager.add(this.__password2, asyncValidator3); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertFalse(this.__manager.isValid()); this.assertFalse(this.__username.getValid()); this.assertEquals("fail", this.__username.getInvalidMessage()); this.assertEquals("fail", this.__manager.getInvalidMessages()[0]); this.assertEquals(1, this.__manager.getInvalidMessages().length); }, this); }, this); // add values to all three input fields this.__password1.setValue("b"); this.__password2.setValue("c"); this.__manager.validate(); this.wait(); }, // ////////////////////////////// // Async related ////////// testAsyncRelated3NotNullFail: function(){ var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator2 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator3 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, asyncValidator2); this.__manager.add(this.__password2, asyncValidator3); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertFalse(this.__manager.isValid()); this.assertTrue(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); }, this); }, this); this.__manager.setValidator(new qx.ui.form.validation.AsyncValidator( function(formItems, validator) { window.setTimeout(function() { validator.setValid(formItems[1].getValue() == formItems[2].getValue()); }, 100); } )); this.__username.setValue("u"); this.__password1.setValue("a"); this.__password2.setValue("b"); this.__manager.validate(); this.wait(); }, testAsyncRelated3NotNull: function(){ var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator2 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator3 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, asyncValidator2); this.__manager.add(this.__password2, asyncValidator3); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertTrue(this.__manager.isValid()); this.assertTrue(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); }, this); }, this); this.__manager.setValidator(new qx.ui.form.validation.AsyncValidator( function(formItems, validator) { window.setTimeout(function() { validator.setValid(formItems[1].getValue() == formItems[2].getValue()); }, 100); } )); this.__username.setValue("u"); this.__password1.setValue("a"); this.__password2.setValue("a"); this.__manager.validate(); this.wait(); }, // ////////////////////////////// // Mixed self contained ////////// testMixedSelfContained3NotNullAsyncFail: function(){ var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, this.__notEmptyValidator); this.__manager.add(this.__password2, this.__notEmptyValidator); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertFalse(this.__manager.isValid()); this.assertFalse(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); }, this); }, this); this.__password1.setValue("a"); this.__password2.setValue("b"); this.__manager.validate(); this.wait(); }, testMixedSelfContained3NotNullSyncFail: function(){ var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, this.__notEmptyValidator); this.__manager.add(this.__password2, this.__notEmptyValidator); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertFalse(this.__manager.isValid()); this.assertTrue(this.__username.getValid()); this.assertFalse(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); }, this); }, this); this.__username.setValue("a"); this.__password2.setValue("b"); this.__manager.validate(); this.wait(); }, testMixedSelfContained3NotNullSync: function(){ var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, this.__notEmptyValidator); this.__manager.add(this.__password2, this.__notEmptyValidator); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertTrue(this.__manager.isValid()); this.assertTrue(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); }, this); }, this); this.__username.setValue("a"); this.__password1.setValue("b"); this.__password2.setValue("c"); this.__manager.validate(); this.wait(); }, testMixedSelfContained2SyncRequired : function(attribute) { var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__password1.setRequired(true); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertFalse(this.__manager.isValid()); this.assertTrue(this.__username.getValid()); this.assertFalse(this.__password1.getValid()); }, this); }, this); this.__username.setValue("a"); this.__manager.validate(); this.wait(); }, // ////////////////////////////// // Mixed related ////////// testMixedRelated3NotNull: function(){ var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator3 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, this.__notEmptyValidator); this.__manager.add(this.__password2, asyncValidator3); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertTrue(this.__manager.isValid()); this.assertTrue(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); }, this); }, this); this.__manager.setValidator(new qx.ui.form.validation.AsyncValidator( function(formItems, validator) { window.setTimeout(function() { validator.setValid(formItems[1].getValue() == formItems[2].getValue()); }, 100); } )); this.__username.setValue("u"); this.__password1.setValue("a"); this.__password2.setValue("a"); this.__manager.validate(); this.wait(); }, testMixedRelated3NotNullSyncFail: function(){ var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator3 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, this.__notEmptyValidator); this.__manager.add(this.__password2, asyncValidator3); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertFalse(this.__manager.isValid()); this.assertTrue(this.__username.getValid()); this.assertFalse(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); }, this); }, this); this.__manager.setValidator(new qx.ui.form.validation.AsyncValidator( function(formItems, validator) { window.setTimeout(function() { validator.setValid(formItems[1].getValue() == formItems[2].getValue()); }, 100); } )); this.__username.setValue("u"); this.__password2.setValue("a"); this.__manager.validate(); this.wait(); }, testMixedRelated3NotNullAsyncFail: function(){ var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator3 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, this.__notEmptyValidator); this.__manager.add(this.__password2, asyncValidator3); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertFalse(this.__manager.isValid()); this.assertFalse(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); }, this); }, this); this.__manager.setValidator(new qx.ui.form.validation.AsyncValidator( function(formItems, validator) { window.setTimeout(function() { validator.setValid(formItems[1].getValue() == formItems[2].getValue()); }, 100); } )); this.__password1.setValue("a"); this.__password2.setValue("a"); this.__manager.validate(); this.wait(); }, testMixedRelated3NotNullAsyncFormFail: function(){ var asyncValidator1 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); var asyncValidator3 = new qx.ui.form.validation.AsyncValidator(this.__asyncValidator); this.__manager.add(this.__username, asyncValidator1); this.__manager.add(this.__password1, this.__notEmptyValidator); this.__manager.add(this.__password2, asyncValidator3); this.__manager.addListener("complete", function() { this.resume(function() { // check the status after the complete this.assertFalse(this.__manager.isValid()); this.assertTrue(this.__username.getValid()); this.assertTrue(this.__password1.getValid()); this.assertTrue(this.__password2.getValid()); }, this); }, this); this.__manager.setValidator(new qx.ui.form.validation.AsyncValidator( function(formItems, validator) { window.setTimeout(function() { validator.setValid(formItems[1].getValue() == formItems[2].getValue()); }, 100); } )); this.__username.setValue("u"); this.__password1.setValue("a"); this.__password2.setValue("b"); this.__manager.validate(); this.wait(); }, // ////////////////////////////// // add error //////////////////// testAddWrong : function() { this.assertException(function() { this.__manager.add(new qx.core.Object()); }); this.assertException(function() { this.__manager.add(123); }); this.assertException(function() { this.__manager.add({}); }); }, testAddSelectBoxWithValidator : function() { var box = new qx.ui.form.SelectBox(); this.assertException(function() { this.__manager.add(box, function() {}); }); box.dispose(); }, // ////////////////////////////// // remove /////////////////////// testRemove : function() { this.__manager.add(this.__username, function(value, formItem) { this.assertFalse(true, "validation method called!"); }, this); this.assertEquals(this.__username, this.__manager.remove(this.__username)); this.__manager.validate(); }, // ////////////////////////////// // get items //////////////////// testGetItems : function() { this.__manager.add(this.__username); this.__manager.add(this.__password1); var items = this.__manager.getItems(); this.assertInArray(this.__username, items); this.assertInArray(this.__password1, items); }, // ////////////////////////////// // validate ////////////////////// testValidateDataBindingSelection : function() { "use strict"; var vsb = new qx.ui.form.VirtualSelectBox(); vsb.setRequired(true); this.__manager.add(vsb); this.__manager.validate(); this.assertFalse(vsb.isValid()); var m = qx.data.marshal.Json.createModel(['a', 'b']); vsb.setModel(m); this.__manager.validate(); this.assertTrue(vsb.isValid()); vsb.dispose(); m.dispose(); } // ////////////////////////////// } });