UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

212 lines (155 loc) 6.38 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2014 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: * Mustafa Sak (msak) ************************************************************************ */ /** * @ignore(qx.test.theme.manager.MockAll) * @ignore(qx.test.theme.manager.MockAppearance) * @ignore(qx.test.theme.manager.MockDecoration) * @ignore(qx.test.theme.manager.MockColor) */ qx.Class.define("qx.test.theme.manager.Meta", { extend : qx.test.ui.LayoutTestCase, construct : function() { this.base(arguments); qx.Theme.define("qx.test.theme.manager.MockAll", { title : "Mock all theme manager", meta : { color : qx.test.theme.manager.mock.Color, decoration : qx.test.theme.manager.mock.Decoration, font : qx.test.theme.manager.mock.Font, appearance : qx.test.theme.manager.mock.Appearance, icon : qx.theme.icon.Tango } }); qx.Theme.define("qx.test.theme.manager.MockAppearance", { title : "Mock only appearance manager", meta : { appearance : qx.test.theme.manager.mock.Appearance, decoration : qx.theme.manager.Decoration.getInstance().getTheme(), color : qx.theme.manager.Color.getInstance().getTheme(), font : qx.theme.manager.Font.getInstance().getTheme(), icon : qx.theme.icon.Tango } }); qx.Theme.define("qx.test.theme.manager.MockDecoration", { title : "Mock only decorator manager", meta : { decoration : qx.test.theme.manager.mock.Decoration, color : qx.theme.manager.Color.getInstance().getTheme(), font : qx.theme.manager.Font.getInstance().getTheme(), appearance : qx.theme.manager.Appearance.getInstance().getTheme(), icon : qx.theme.icon.Tango } }); qx.Theme.define("qx.test.theme.manager.MockColor", { title : "Mock only color manager", meta : { color : qx.test.theme.manager.mock.Color, decoration : qx.theme.manager.Decoration.getInstance().getTheme(), font : qx.theme.manager.Font.getInstance().getTheme(), appearance : qx.theme.manager.Appearance.getInstance().getTheme(), icon : qx.theme.icon.Tango } }); }, members : { __formerTheme : null, __linerGradientRegExp: /(orange.*yellow|rgb\(255, 165, 0\).*rgb\(255, 255, 0\)|data:image\/png;base64,iVBORw0K)/, setUp : function() { if (qx.core.Environment.get("engine.name") == "mshtml" && qx.core.Environment.get("browser.documentmode") < 9) { this.skip("Skipped in IE 8."); } this.manager = qx.theme.manager.Meta.getInstance(); this.__formerTheme = this.manager.getTheme(); // add a theme able widget this.__button = new qx.ui.form.Button("Foo"); this.getRoot().add(this.__button); qx.ui.core.queue.Manager.flush(); }, tearDown : function() { this.__button.destroy(); this.manager.setTheme(this.__formerTheme); this.__formerTheme = null; }, testAllThemeManagerChanged : function() { qx.theme.manager.Meta.getInstance().setTheme(qx.test.theme.manager.MockAll); qx.ui.core.queue.Manager.flush(); // button element var elem = this.__button.getContentElement().getDomElement(); // mocked appearance theme defines a padding with 30px 80px this.assertEquals(qx.bom.element.Style.get(elem, "padding"), "30px 80px"); // mocked color theme defines a gradient with 'orange' and 'yellow'; // also check for corresponding rgb values (need for FireFox) this.assertNotNull(qx.bom.element.Style.get(elem, "backgroundImage") .match(this.__linerGradientRegExp)); // mocked decoration theme defines a border radius of 10 pixel this.assertEquals(qx.bom.element.Style.get(elem, "borderTopLeftRadius"), "10px"); // button label element elem = this.__button.getChildControl("label").getContentElement().getDomElement(); // mocked color theme defines red text color for button labels this.assertEquals(qx.bom.element.Style.get(elem, "color"), "rgb(255, 0, 0)"); }, testColorThemeManagerChanged : function() { qx.theme.manager.Meta.getInstance().setTheme(qx.test.theme.manager.MockColor); qx.ui.core.queue.Manager.flush(); var elem = this.__button.getContentElement().getDomElement(); // mocked color theme defines a gradient with 'orange' and 'yellow'; // also check for corresponding rgb values (need for FireFox) this.assertNotNull(qx.bom.element.Style.get(elem, "backgroundImage") .match(this.__linerGradientRegExp)); }, testDecoratorThemeManagerChanged : function() { qx.theme.manager.Meta.getInstance().setTheme(qx.test.theme.manager.MockDecoration); qx.ui.core.queue.Manager.flush(); // mocked decoration theme defines a border radius of 10 pixel var elem = this.__button.getContentElement().getDomElement(); this.assertEquals(qx.bom.element.Style.get(elem, "borderTopLeftRadius"), "10px"); }, testAppearanceThemeManagerChanged : function() { qx.theme.manager.Meta.getInstance().setTheme(qx.test.theme.manager.MockAppearance); qx.ui.core.queue.Manager.flush(); // mocked appearance theme defines a padding with 30px 80px var elem = this.__button.getContentElement().getDomElement(); this.assertEquals(qx.bom.element.Style.get(elem, "padding"), "30px 80px"); }, testColorThemeChanged : function() { qx.theme.manager.Color.getInstance().setTheme(qx.test.theme.manager.mock.Color); qx.ui.core.queue.Manager.flush(); var elem = this.__button.getContentElement().getDomElement(); // mocked color theme defines a gradient with 'orange' and 'yellow'; // also check for corresponding rgb values (need for FireFox) this.assertNotNull(qx.bom.element.Style.get(elem, "backgroundImage") .match(this.__linerGradientRegExp)); } }, destruct : function() { } });