@qooxdoo/framework
Version:
The JS Framework for Coders
184 lines (142 loc) • 5.93 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2011-2012 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:
* Tino Butz (tbtz)
* Christopher Zuendorf (czuendorf)
************************************************************************ */
qx.Class.define("qx.test.mobile.form.SelectBox",
{
extend : qx.test.mobile.MobileTestCase,
members :
{
testValue : function()
{
var dd = new qx.data.Array(["Item 1", "Item 2", "Item 3"]);
var selectBox = new qx.ui.mobile.form.SelectBox();
selectBox.setModel(dd);
// Initial value '''
this.assertEquals('',selectBox.getValue());
// Attempt to set value to "Item 3"
selectBox.setValue("Item 3");
this.assertEquals(2, selectBox.getSelection());
this.assertEquals("Item 3",selectBox.getValue());
// Attempt to set invalid value occurs validation error.
this.assertException(qx.lang.Function.bind(selectBox.setValue, selectBox, "Item 4"),
qx.core.ValidationError,
"Validation Error: Input value is out of model range",
"An validation error is expected, because this value does not exists in model."
);
this.assertEquals("Item 3",selectBox.getValue(), "Nothing should be changed by input setValue('Item 4') because input value is not in model.");
selectBox.destroy();
dd.dispose();
dd = null;
},
testNullable : function() {
var model = new qx.data.Array(["Item 1", "Item 2", "Item 3"]);
var selectBox = new qx.ui.mobile.form.SelectBox();
selectBox.setModel(model);
// Default case: nullable is true, selection is null.
this.assertEquals(null, selectBox.getSelection(), "Default selection of SelectBox should be null.");
// Switch to nullable true...
selectBox.setNullable(false);
// Attempt to set null value occurs validation error.
this.assertException(qx.lang.Function.bind(selectBox.setSelection, selectBox, null),
qx.core.ValidationError,
"Validation Error: SelectBox is not nullable",
"Value should not be accepted when SelectBox is not nullable."
);
// Switch to nullable true... try to set selection to null..
selectBox.setNullable(true);
selectBox.setSelection(null);
this.assertEquals(null, selectBox.getSelection(), "Value should be null.");
// After
selectBox.destroy();
model.dispose();
model = null;
},
testSelectionNoModel : function() {
var selectBox = new qx.ui.mobile.form.SelectBox();
this.assertException(qx.lang.Function.bind(selectBox.setSelection, selectBox, 4),
qx.core.ValidationError,
"Validation Error: Please apply model before selection",
"A selection needs a model."
);
selectBox.destroy();
},
testResetValue : function() {
var model = new qx.data.Array(["Item 1", "Item 2", "Item 3"]);
var selectBox = new qx.ui.mobile.form.SelectBox();
selectBox.setModel(model);
selectBox.setNullable(true);
selectBox.setValue("Item 3");
this.assertEquals(2, selectBox.getSelection());
selectBox.resetValue();
this.assertEquals(null, selectBox.getSelection());
// After
selectBox.destroy();
model.dispose();
model = null;
},
testResetValueNotNullable : function() {
var model = new qx.data.Array(["Item 1", "Item 2", "Item 3"]);
var selectBox = new qx.ui.mobile.form.SelectBox();
selectBox.setModel(model);
selectBox.setNullable(false);
selectBox.setValue("Item 3");
this.assertEquals(2, selectBox.getSelection());
selectBox.resetValue();
this.assertEquals(0, selectBox.getSelection());
// After
selectBox.destroy();
model.dispose();
model = null;
},
testSelection : function()
{
var model = new qx.data.Array(["Item 1", "Item 2", "Item 3"]);
var selectBox = new qx.ui.mobile.form.SelectBox();
selectBox.setModel(model);
// Default value of selectedIndex after setting model is 0.
this.assertEquals(null, selectBox.getSelection());
// Set selection success
selectBox.setSelection(2);
this.assertEquals(2, selectBox.getSelection());
this.assertEquals("Item 3", selectBox.getValue());
// Set selection failure
// Nothing is changed because invalid selectedIndex value.
this.assertException(qx.lang.Function.bind(selectBox.setSelection, selectBox, 4),
qx.core.ValidationError,
"Validation Error: Input value is out of model range",
"Exception assertion failed."
);
this.assertEquals(2, selectBox.getSelection());
this.assertEquals("Item 3", selectBox.getValue());
// Negative values are not allowed. Nothing is changed.
this.assertException(qx.lang.Function.bind(selectBox.setSelection, selectBox, -1),
qx.core.ValidationError,
"Validation Error: Input value is out of model range",
"Exception assertion failed."
);
this.assertEquals(2, selectBox.getSelection());
this.assertEquals("Item 3", selectBox.getValue());
// Only type Number is allowed. Nothing is changed.
this.assertException(qx.lang.Function.bind(selectBox.setSelection, selectBox, "foo"),
qx.core.ValidationError,
"Validation Error: Input value is not a number",
"Exception assertion failed."
);
this.assertEquals(2, selectBox.getSelection());
this.assertEquals("Item 3", selectBox.getValue());
// After
selectBox.destroy();
model.dispose();
model = null;
}
}
});