@qooxdoo/framework
Version:
The JS Framework for Coders
356 lines (270 loc) • 10.8 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2004-2008 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.Form",
{
extend : qx.test.ui.LayoutTestCase,
include : qx.dev.unit.MMock,
members :
{
__testRequired: function(widget) {
// check if the interface is implemented
this.assert(qx.Class.hasInterface(widget.constructor, qx.ui.form.IForm), "Interface not implemented.");
// test for the default (false)
this.assertFalse(widget.getRequired(), "Default required state is wrong.");
// check for the event
var self = this;
widget.setRequired(false);
this.assertEventFired(widget, "changeRequired", function () {
widget.setRequired(true);
}, function(e) {
self.assertTrue(e.getData(), "Wrong data in the event!");
self.assertFalse(e.getOldData(), "Wrong old data in the event!");
}, "Change event not fired!");
// check if the state is set
this.assertTrue(widget.getRequired(), "Setting of the required flag did not work.");
widget.dispose();
},
__testValid: function(widget, where) {
// check if the interface is implemented
this.assert(qx.Class.hasInterface(widget.constructor, qx.ui.form.IForm), "Interface not implemented.");
this.getRoot().add(widget);
// test for the default (true)
this.assertTrue(widget.getValid(), "Default valid state is wrong.");
this.assertFalse(!!widget.hasState("invalid"), "Should not have the invalid state.");
widget.setValid(false);
// check if the state is set
this.assertFalse(widget.getValid(), "Setting of the valid flag did not work.");
this.assertTrue(widget.hasState("invalid"), "Should have the invalid state.");
// check for the event
var self = this;
this.assertEventFired(widget, "changeValid", function () {
widget.setValid(true);
}, function(e) {
self.assertTrue(e.getData(), "Wrong data in the event.");
self.assertFalse(e.getOldData(), "Wrong old data in the event.");
}, "Change event not fired!");
// check for the event
this.assertEventFired(widget, "changeInvalidMessage", function () {
widget.setInvalidMessage("affe");
}, function(e) {
self.assertEquals("affe", e.getData(), "Wrong data in the event.");
self.assertEquals("", e.getOldData(), "Wrong old data in the event.");
}, "Change event not fired!");
// set the widget to invalid
widget.setValid(false);
if (where !== "dont") {
// needs to be tests async because of a strange behavior in opera 9
var self = this;
window.setTimeout(function() {
self.resume(function() {
this.__testInvalidBorder(widget);
widget.destroy();
}, self);
}, 100);
this.wait();
}
widget.destroy();
},
__testInvalidBorder: function(widget) {
this.flush();
// check for the invalid decorator
this.assertNotEquals(-1, widget.getDecorator().indexOf("invalid"), "Decorator not set!");
// check the focus
widget.focus();
this.flush();
this.assertNotEquals(-1, widget.getDecorator().indexOf("invalid"), "Decorator not set!");
},
testRequiredSpinner: function() {
this.__testRequired(new qx.ui.form.Spinner());
},
testValidSpinner: function() {
this.__testValid(new qx.ui.form.Spinner());
},
testRequiredSlider: function() {
this.__testRequired(new qx.ui.form.Slider());
},
testValidSlider: function() {
this.__testValid(new qx.ui.form.Slider());
},
testRequiredTextField: function() {
this.__testRequired(new qx.ui.form.TextField());
},
testValidTextField: function() {
this.__testValid(new qx.ui.form.TextField());
},
testRequiredTextArea: function() {
this.__testRequired(new qx.ui.form.TextArea());
},
testValidTextArea: function() {
this.__testValid(new qx.ui.form.TextArea());
},
testRequiredPasswordField: function() {
this.__testRequired(new qx.ui.form.PasswordField());
},
testValidPasswordField: function() {
this.__testValid(new qx.ui.form.PasswordField());
},
testRequiredComboBox: function() {
this.__testRequired(new qx.ui.form.ComboBox());
},
testValidComboBox: function() {
this.__testValid(new qx.ui.form.ComboBox());
},
testRequiredSelectBox: function() {
this.__testRequired(new qx.ui.form.SelectBox());
},
testValidSelectBox: function() {
this.__testValid(new qx.ui.form.SelectBox());
},
testRequiredCheckBox: function() {
this.__testRequired(new qx.ui.form.CheckBox());
},
testValidCheckBox: function() {
this.__testValid(new qx.ui.form.CheckBox(), "dont");
},
testValidRadioButton: function() {
this.__testValid(new qx.ui.form.RadioButton(), "dont");
},
testRequiredRadioButton: function() {
this.__testRequired(new qx.ui.form.RadioButton());
},
testValidGroupBox: function() {
this.__testValid(new qx.ui.groupbox.GroupBox(), "dont");
},
testRequiredGroupBox: function() {
this.__testRequired(new qx.ui.groupbox.GroupBox());
},
testValidRadioGroupBox: function() {
this.__testValid(new qx.ui.groupbox.RadioGroupBox(), "dont");
},
testRequiredRadioGroupBox: function() {
this.__testRequired(new qx.ui.groupbox.RadioGroupBox());
},
testValidCheckGroupBox: function() {
this.__testValid(new qx.ui.groupbox.CheckGroupBox(), "dont");
},
testRequiredCheckGroupBox: function() {
this.__testRequired(new qx.ui.groupbox.CheckGroupBox());
},
testValidList: function() {
this.__testValid(new qx.ui.form.List());
},
testRequiredList: function() {
this.__testRequired(new qx.ui.form.List());
},
testValidTree: function() {
this.__testValid(new qx.ui.tree.Tree());
},
testRequiredTree: function() {
this.__testRequired(new qx.ui.tree.Tree());
},
testRequiredDateField: function() {
this.__testRequired(new qx.ui.form.DateField());
},
testValidDateField: function() {
this.__testValid(new qx.ui.form.DateField());
},
testRequiredDateChooser: function() {
this.__testRequired(new qx.ui.form.DateField());
},
testValidDateChooser: function() {
this.__testValid(new qx.ui.form.DateField());
},
testValidRadioGroup : function() {
var group = new qx.ui.form.RadioGroup();
var rb = new qx.ui.form.RadioButton();
group.add(rb);
// check if the interface is implemented
this.assert(qx.Class.hasInterface(group.constructor, qx.ui.form.IForm), "Interface not implemented.");
// test for the default (true)
this.assertTrue(group.getValid(), "Default valid state is wrong.");
group.setValid(false);
// check if the state is set
this.assertFalse(group.getValid(), "Setting of the valid flag did not work.");
// check for the event
var self = this;
this.assertEventFired(group, "changeValid", function () {
group.setValid(true);
}, function(e) {
self.assertTrue(e.getData(), "Wrong data in the event.");
self.assertFalse(e.getOldData(), "Wrong old data in the event.");
}, "Change event not fired!");
// check for the event
this.assertEventFired(group, "changeInvalidMessage", function () {
group.setInvalidMessage("affe");
}, function(e) {
self.assertEquals("affe", e.getData(), "Wrong data in the event.");
self.assertEquals("", e.getOldData(), "Wrong old data in the event.");
}, "Change event not fired!");
// set the widget to invalid
group.setValid(false);
// check if the child is invalid
this.assertFalse(rb.getValid(), "Child is valid!");
// check the invalid message of the child
this.assertEquals("affe", rb.getInvalidMessage(), "Invalid messages not set on child.");
group.dispose();
rb.destroy();
},
testRequiredRadioGroup : function() {
this.__testRequired(new qx.ui.form.RadioGroup());
},
testRequiredRadioButtonGroup: function() {
this.__testRequired(new qx.ui.form.RadioButtonGroup());
},
testValidRadioButtonGroup: function() {
var cont = new qx.ui.form.RadioButtonGroup();
var rb = new qx.ui.form.RadioButton();
cont.add(rb);
// check if the interface is implemented
this.assert(qx.Class.hasInterface(cont.constructor, qx.ui.form.IForm), "Interface not implemented.");
// test for the default (true)
this.assertTrue(cont.getValid(), "Default valid state is wrong.");
cont.setValid(false);
// check if the state is set
this.assertFalse(cont.getValid(), "Setting of the valid flag did not work.");
// check for the event
var self = this;
this.assertEventFired(cont, "changeValid", function () {
cont.setValid(true);
}, function(e) {
self.assertTrue(e.getData(), "Wrong data in the event.");
self.assertFalse(e.getOldData(), "Wrong old data in the event.");
}, "Change event not fired!");
// check for the event
this.assertEventFired(cont, "changeInvalidMessage", function () {
cont.setInvalidMessage("affe");
}, function(e) {
self.assertEquals("affe", e.getData(), "Wrong data in the event.");
self.assertEquals("", e.getOldData(), "Wrong old data in the event.");
}, "Change event not fired!");
// set the widget to invalid
cont.setValid(false);
// check if the child is invalid
this.assertFalse(rb.getValid(), "Child is valid!");
// check the invalid message of the child
this.assertEquals("affe", rb.getInvalidMessage(), "Invalid messages not set on child.");
cont.dispose();
rb.destroy();
},
testRedefineItem : function() {
var form = new qx.ui.form.Form();
var resetter = form._resetter;
resetter.redefineItem = this.spy(resetter.redefineItem);
var item = new qx.ui.form.TextField();
form.add(item, "xyz");
form.redefineResetterItem(item);
this.assertCalledOnce(resetter.redefineItem);
item.dispose();
form.dispose();
}
}
});