@qooxdoo/framework
Version:
The JS Framework for Coders
338 lines (257 loc) • 8.81 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2011 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)
************************************************************************ */
qx.Class.define("qx.test.mobile.core.Widget", {
extend: qx.test.mobile.MobileTestCase,
members: {
testCreate() {
var widget = new qx.ui.mobile.core.Widget().set({ id: "affe" });
this.getRoot().add(widget);
var element = document.getElementById("affe");
this.assertElement(element);
widget.destroy();
},
testNameProperty() {
var widget = new qx.ui.mobile.core.Widget().set({ name: "affe" });
this.getRoot().add(widget);
var element = document.getElementsByName("affe")[0];
this.assertElement(element);
var name = widget.getName();
this.assertEquals(name, "affe");
widget.destroy();
},
testSetCssClass() {
var widget = new qx.ui.mobile.core.Widget();
this.getRoot().add(widget);
var element = widget.getContainerElement();
var className = qx.bom.element.Class.get(element);
this.assertEquals(className, "");
widget.setDefaultCssClass("affe");
var className = qx.bom.element.Class.get(element);
this.assertEquals(className, "affe");
/*
widget.setDefaultCssClass("foo bar");
var className = qx.bom.element.Class.get(element);
this.assertEquals(className, "foo bar");
*/
widget.setDefaultCssClass("bar");
var className = qx.bom.element.Class.get(element);
this.assertEquals(className, "bar");
widget.destroy();
},
testAddRemoveCssClass() {
var widget = new qx.ui.mobile.core.Widget();
this.getRoot().add(widget);
var element = widget.getContainerElement();
var className = qx.bom.element.Class.get(element);
this.assertEquals(className, "");
widget.addCssClass("affe");
this.assertTrue(widget.hasCssClass("affe"));
widget.removeCssClass("affe");
this.assertFalse(widget.hasCssClass("affe"));
widget.destroy();
},
testAutoId() {
var widget = new qx.ui.mobile.core.Widget();
this.getRoot().add(widget);
var clazz = qx.ui.mobile.core.Widget;
// decrement is 2 when qx.core.Environment.get("qx.debug.dispose") because the _root is recreated on every test,
// and it is a widget too
var decrement = qx.core.Environment.get("qx.debug.dispose") ? 2 : 1;
var id = clazz.ID_PREFIX + (clazz.getCurrentId() - decrement);
var element = document.getElementById(id);
this.assertElement(element);
var widgetId = widget.getId();
this.assertEquals(widgetId, id);
widget.destroy();
},
testWidgetRegistration() {
var widget = new qx.ui.mobile.core.Widget();
var id = widget.getId();
widget = qx.ui.mobile.core.Widget.getWidgetById(id);
this.assertQxMobileWidget(widget);
widget.destroy();
},
testWidgetRegistrationSameId() {
var widget = new qx.ui.mobile.core.Widget().set({ id: "affe" });
if (qx.core.Environment.get("qx.debug")) {
this.assertException(function () {
var widget2 = new qx.ui.mobile.core.Widget().set({ id: "affe" });
});
}
widget.destroy();
},
testTranslationAvailable() {
var widget = new qx.ui.mobile.core.Widget();
this.assertTrue(
qx.Class.hasMixin(qx.ui.mobile.core.Widget, qx.locale.MTranslation),
"No translation mixin found"
);
this.assertFunction(widget.tr);
widget.destroy();
},
testDestroy() {
var widget = new qx.ui.mobile.core.Widget();
var id = widget.getId();
widget.destroy();
widget = qx.ui.mobile.core.Widget.getWidgetById(id);
this.assertUndefined(widget);
var element = document.getElementById(id);
this.assertNull(element);
},
testDomUpdatedFired() {
var widget = new qx.ui.mobile.core.Widget();
this.assertEventNotFired(
widget,
"domupdated",
qx.ui.mobile.core.Widget.domUpdated
);
this.getRoot().add(widget);
this.assertEventFired(
widget,
"domupdated",
qx.ui.mobile.core.Widget.domUpdated
);
widget.destroy();
},
testVisibility() {
var widget = new qx.ui.mobile.core.Widget();
this.getRoot().add(widget);
this.__assertShow(widget);
widget.exclude();
this.assertFalse(
widget.isVisible(),
"Exclude: Widget should not be visible"
);
this.assertTrue(
widget.isExcluded(),
"Exclude: Widget should be excluded"
);
this.assertTrue(widget.isHidden(), "Exclude: Widget should be hidden");
this.assertTrue(
widget.hasCssClass("exclude"),
"Exclude: No exclude class set"
);
this.assertEquals(
"visible",
widget._getStyle("visibility"),
"Exclude: Visibility style should be null"
);
widget.show();
this.__assertShow(widget);
widget.hide();
this.assertFalse(
widget.isVisible(),
"Hide: Widget should not be visible"
);
this.assertFalse(
widget.isExcluded(),
"Hide: Widget should not be excluded"
);
this.assertTrue(widget.isHidden(), "Hide: Widget should be hidden");
this.assertTrue(widget.isSeeable(), "Hide: Widget should be seeable");
this.assertEquals(
"block",
widget._getStyle("display"),
"Hide: Display style should be block"
);
this.assertFalse(
widget.hasCssClass("exclude"),
"Hide: Exclude class set"
);
this.assertEquals(
"hidden",
widget._getStyle("visibility"),
"Hide: Visibility style should be hidden"
);
widget.show();
this.__assertShow(widget);
widget.destroy();
},
__assertShow(widget) {
this.assertTrue(widget.isVisible(), "Show: Widget should be visible");
this.assertFalse(
widget.isExcluded(),
"Show: Widget should not be excluded"
);
this.assertFalse(widget.isHidden(), "Show: Widget should not be hidden");
this.assertTrue(widget.isSeeable(), "Show: Widget should be seeable");
this.assertEquals(
"block",
widget._getStyle("display"),
"Show: Display style should be block"
);
this.assertFalse(
widget.hasCssClass("exclude"),
"Hide: Exclude class set"
);
this.assertEquals(
"visible",
widget._getStyle("visibility"),
"Show: Visibility style should be visible"
);
},
testEnabled() {
var widget = new qx.ui.mobile.core.Widget();
this.getRoot().add(widget);
this.assertEquals(true, widget.getEnabled());
this.assertFalse(
qx.bom.element.Class.has(widget.getContainerElement(), "disabled")
);
widget.setEnabled(false);
this.assertEquals(false, widget.getEnabled());
this.assertEquals(
true,
qx.bom.element.Class.has(widget.getContainerElement(), "disabled")
);
this.assertEquals(
"none",
qx.bom.element.Style.get(widget.getContainerElement(), "pointerEvents")
);
widget.destroy();
widget = new qx.ui.mobile.core.Widget();
this.getRoot().add(widget);
widget.setEnabled(true);
widget.setAnonymous(true);
this.assertFalse(
qx.bom.element.Class.has(widget.getContainerElement(), "disabled")
);
this.assertEquals(
"none",
qx.bom.element.Style.get(widget.getContainerElement(), "pointerEvents")
);
widget.setEnabled(false);
this.assertEquals(
true,
qx.bom.element.Class.has(widget.getContainerElement(), "disabled")
);
this.assertEquals(
"none",
qx.bom.element.Style.get(widget.getContainerElement(), "pointerEvents")
);
widget.setEnabled(true);
this.assertEquals(
"none",
qx.bom.element.Style.get(widget.getContainerElement(), "pointerEvents")
);
widget.destroy();
},
testToggleCss() {
var widget = new qx.ui.mobile.core.Widget();
this.getRoot().add(widget);
widget.toggleCssClass("test");
this.assertTrue(widget.hasCssClass("test"));
widget.toggleCssClass("test");
this.assertFalse(widget.hasCssClass("test"));
widget.destroy();
}
}
});