@qooxdoo/framework
Version:
The JS Framework for Coders
1,173 lines (939 loc) • 35.8 kB
JavaScript
/* ************************************************************************
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() {
super();
},
members: {
__username: null,
__password1: null,
__password2: null,
__manager: null,
setUp() {
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() {
this.__manager.dispose();
this.__username.dispose();
this.__password1.dispose();
this.__password2.dispose();
},
// validator
__notEmptyValidator(value, formItem) {
var isString = qx.lang.Type.isString(value);
var valid = isString && value.length > 0;
valid
? formItem.setInvalidMessage("")
: formItem.setInvalidMessage("fail");
return valid;
},
__notEmptyValidatorError(value) {
var isString = qx.lang.Type.isString(value);
if (!isString || value.length == 0) {
throw new qx.core.ValidationError("fail");
}
},
__asyncValidator(validator, value) {
window.setTimeout(function () {
var valid = value != null && value.length > 0;
validator.setValid(valid, "fail");
}, 100);
},
// context //////////////////////
testSyncContext() {
var self = this;
this.__manager.add(
this.__username,
function (value, formItem) {
self.assertEquals(1, this.a);
},
{ a: 1 }
);
this.__manager.validate();
},
testSync2Context() {
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() {
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() {
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() {
var self = this;
this.__manager.setValidator(function () {
self.assertEquals(1, this.a);
});
this.__manager.setContext({ a: 1 });
this.__manager.validate();
},
testAsyncFormContext() {
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() {
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() {
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(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(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() {
this.__testSyncSelfContained3NotNull(this.__notEmptyValidator);
},
testSyncSelfContained3NotNullError() {
this.__testSyncSelfContained3NotNull(this.__notEmptyValidatorError);
},
// //////////////////////////////
// sync related //////////////
__testSyncRelatedNoIndividual(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() {
this.__testSyncRelatedNoIndividual(function (formItems, manager) {
var valid = formItems[1].getValue() == formItems[2].getValue();
if (!valid) {
manager.setInvalidMessage("fail");
}
return valid;
});
},
testSyncRelatedNoIndividualError() {
this.__testSyncRelatedNoIndividual(function (formItems, manager) {
if (formItems[1].getValue() != formItems[2].getValue()) {
throw new qx.core.ValidationError("fail");
}
});
},
testSyncRelatedWithIndividual() {
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() {
// 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() {
// 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() {
// 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() {
var asyncValidator = new qx.ui.form.validation.AsyncValidator(
this.__asyncValidator
);
this.__manager.add(this.__username, asyncValidator);
this.__manager.addListener("complete", () => {
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.__manager.validate();
this.wait();
},
testAsyncSelfContained1NotNull() {
var asyncValidator = new qx.ui.form.validation.AsyncValidator(
this.__asyncValidator
);
this.__manager.add(this.__username, asyncValidator);
this.__username.setValue("affe");
this.__manager.addListener("complete", () => {
this.resume(function () {
// check the status after the complete
this.assertTrue(this.__manager.isValid());
this.assertTrue(this.__username.getValid());
}, this);
});
this.__manager.validate();
this.wait();
},
testAsyncSelfContained3NotNullFail() {
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", () => {
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.__manager.validate();
this.wait();
},
testAsyncSelfContained3NotNull() {
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", () => {
this.resume(function () {
// check the status after the complete
this.assertTrue(this.__manager.isValid());
this.assertTrue(this.__username.getValid());
}, 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() {
// 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", () => {
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.__username.setValue("a");
this.__manager.validate();
this.wait();
},
testAsyncSelfContained3NotNullHalfFail() {
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", () => {
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);
});
// add values to all three input fields
this.__password1.setValue("b");
this.__password2.setValue("c");
this.__manager.validate();
this.wait();
},
// //////////////////////////////
// Async related //////////
testAsyncRelated3NotNullFail() {
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", () => {
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.__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() {
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", () => {
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.__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() {
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", () => {
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.__password1.setValue("a");
this.__password2.setValue("b");
this.__manager.validate();
this.wait();
},
testMixedSelfContained3NotNullSyncFail() {
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", () => {
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.__username.setValue("a");
this.__password2.setValue("b");
this.__manager.validate();
this.wait();
},
testMixedSelfContained3NotNullSync() {
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", () => {
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.__username.setValue("a");
this.__password1.setValue("b");
this.__password2.setValue("c");
this.__manager.validate();
this.wait();
},
testMixedSelfContained2SyncRequired(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", () => {
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.__username.setValue("a");
this.__manager.validate();
this.wait();
},
// //////////////////////////////
// Mixed related //////////
testMixedRelated3NotNull() {
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", () => {
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.__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() {
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", () => {
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.__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() {
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", () => {
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.__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() {
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", () => {
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.__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() {
this.assertException(function () {
this.__manager.add(new qx.core.Object());
});
this.assertException(function () {
this.__manager.add(123);
});
this.assertException(function () {
this.__manager.add({});
});
},
testAddSelectBoxWithValidator() {
var box = new qx.ui.form.SelectBox();
this.assertException(function () {
this.__manager.add(box, function () {});
});
box.dispose();
},
// //////////////////////////////
// remove ///////////////////////
testRemove() {
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() {
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() {
"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();
}
}
});