@qooxdoo/framework
Version:
The JS Framework for Coders
361 lines (261 loc) • 7.72 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:
* Fabian Jakobs (fjakobs)
************************************************************************ */
qx.Class.define("qx.test.ui.Focus",
{
extend : qx.test.ui.LayoutTestCase,
members :
{
getContainer : function()
{
if (!this._container)
{
var grid = new qx.ui.layout.Grid(10, 10);
this._container = new qx.ui.container.Composite(grid).set({
padding: 20
});
this.getRoot().add(this._container);
}
return this._container;
},
setUp : function()
{
this.flush();
this.ref = new qx.ui.form.TextField();
this.addReferenceInput();
this.ref.focus();
this.flush();
this.ref.addListener("blur", this.onRefBlur, this);
this.ref_blur_called = false;
this.target_focus_called = false;
this.target_blur_called = false;
this.flush();
this.input = new qx.ui.form.TextField();
this.input.addListener("focus", this.onInputFocus, this);
this.input.addListener("blur", this.onInputBlur, this);
},
tearDown : function()
{
this.base(arguments);
if (this.input) {
this.input.destroy();
}
if (this.ref) {
this.ref.destroy();
}
if (this._container)
{
this._container.destroy();
this._container = null;
}
this.flush();
},
addInput : function() {
this.getContainer().add(this.input, {row: 2, column: 0});
},
addReferenceInput : function() {
this.getContainer().add(this.ref, {row: 1, column: 0, colSpan: 2});
},
onRefBlur : function()
{
this.ref_blur_called = true;
},
onInputFocus : function()
{
this.target_focus_called = true;
},
onInputBlur : function()
{
this.target_blur_called = true;
},
testNotInsertedBeforeFlush : function()
{
this.input.focus();
this.flush();
this.assertFalse(this.ref_blur_called);
this.assertFalse(this.target_focus_called);
this.assertFalse(this.target_blur_called);
this.addInput();
},
testExcludedBeforeFlush : function()
{
this.addInput();
this.input.exclude();
this.input.focus();
this.flush();
this.assertFalse(this.ref_blur_called);
this.assertFalse(this.target_focus_called);
this.assertFalse(this.target_blur_called);
this.input.show();
},
testHiddenBeforeFlush : function()
{
this.addInput();
this.input.hide();
this.input.focus();
this.flush();
this.assertFalse(this.ref_blur_called);
this.assertFalse(this.target_focus_called);
this.assertFalse(this.target_blur_called);
this.input.show();
},
testNotInsertedAfterFlush : function()
{
this.addInput();
this.flush();
this.input.getLayoutParent().remove(this.input);
this.flush();
this.input.focus();
this.flush();
this.assertFalse(this.ref_blur_called);
this.assertFalse(this.target_focus_called);
this.assertFalse(this.target_blur_called);
this.addInput();
},
testExcludedAfterFlush : function()
{
this.addInput();
this.flush();
this.input.getLayoutParent().remove(this.input);
this.flush();
this.addInput();
this.input.exclude();
this.input.focus();
this.flush();
this.assertFalse(this.ref_blur_called);
this.assertFalse(this.target_focus_called);
this.assertFalse(this.target_blur_called);
this.input.show();
},
testHiddenAfterFlush : function()
{
this.addInput();
this.flush();
this.input.getLayoutParent().remove(this.input);
this.flush();
this.addInput();
this.input.hide();
this.input.focus();
this.flush();
this.assertFalse(this.ref_blur_called);
this.assertFalse(this.target_focus_called);
this.assertFalse(this.target_blur_called);
this.input.show();
},
testInsertedBeforeFlush : function()
{
this.addInput();
this.input.focus();
this.flush();
this.assertTrue(this.ref_blur_called, "reference must be blurred");
this.assertTrue(this.target_focus_called, "target must be focused");
this.assertFalse(this.target_blur_called, "target must not be blurred");
},
testFocusRemoveBeforeFlush : function()
{
this.addInput();
this.input.focus();
this.flush();
this.input.getLayoutParent().remove(this.input);
this.flush();
this.assertTrue(this.ref_blur_called);
this.assertTrue(this.target_focus_called);
this.assertTrue(this.target_blur_called);
this.addInput();
},
testFocusExcludeBeforeFlush : function()
{
this.addInput();
this.input.focus();
this.flush();
this.input.exclude();
this.flush();
this.assertTrue(this.ref_blur_called);
this.assertTrue(this.target_focus_called);
this.assertTrue(this.target_blur_called);
this.input.show();
},
testFocusHideBeforeFlush : function()
{
this.addInput();
this.input.focus();
this.flush();
this.input.hide();
this.flush();
this.assertTrue(this.ref_blur_called);
this.assertTrue(this.target_focus_called);
this.assertTrue(this.target_blur_called);
this.input.show();
},
testInsertedAfterFlush : function()
{
this.addInput();
this.flush();
this.input.focus();
this.flush();
this.assertTrue(this.ref_blur_called);
this.assertTrue(this.target_focus_called);
this.assertFalse(this.target_blur_called);
},
testFocusRemoveAfterFlush : function()
{
this.addInput();
this.input.focus();
this.flush();
this.input.getLayoutParent().remove(this.input);
this.flush();
this.assertTrue(this.ref_blur_called);
this.assertTrue(this.target_focus_called);
this.assertTrue(this.target_blur_called);
this.addInput();
},
testFocusExcludeAfterFlush : function()
{
this.addInput();
this.flush();
this.input.focus();
this.flush();
this.input.exclude();
this.flush();
this.assertTrue(this.ref_blur_called);
this.assertTrue(this.target_focus_called);
this.assertTrue(this.target_blur_called);
this.input.show();
},
testFocusHideAfterFlush : function()
{
this.addInput();
this.flush();
this.input.focus();
this.flush();
this.input.hide();
this.flush();
this.assertTrue(this.ref_blur_called, "reference must be blurred");
this.assertTrue(this.target_focus_called, "target must be focused");
this.assertTrue(this.target_blur_called, "target must be blurred");
this.input.show();
},
testFocusComboBox : function() {
var comboBox = new qx.ui.form.ComboBox();
this.getRoot().add(comboBox);
comboBox.focus();
this.flush();
this.assertEquals(
comboBox.getChildControl("textfield"),
qx.ui.core.FocusHandler.getInstance().getActiveWidget()
);
comboBox.destroy();
}
},
destruct : function() {
this.ref = this.input = null;
}
});