@qooxdoo/framework
Version:
The JS Framework for Coders
250 lines (211 loc) • 6.19 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
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)
************************************************************************ */
/**
* @ignore(qx.theme.Foo)
*/
qx.Class.define("qx.test.Theme", {
extend: qx.dev.unit.TestCase,
members: {
setUp() {
this.__formerTheme = qx.theme.manager.Decoration.getInstance().getTheme();
},
tearDown() {
qx.test.Theme.themes = null;
qx.theme.manager.Decoration.getInstance().setTheme(this.__formerTheme);
this.__formerTheme = null;
},
testExtendTheme() {
qx.Theme.define("qx.test.Theme.themes.A", {
decorations: {
main: {
style: {}
}
}
});
qx.Theme.define("qx.test.Theme.themes.B", {
extend: qx.test.Theme.themes.A,
decorations: {}
});
var decorationManager = qx.theme.manager.Decoration.getInstance();
decorationManager.setTheme(qx.test.Theme.themes.B);
this.assertInstance(
decorationManager.resolve("main"),
qx.ui.decoration.Decorator
);
},
testIncludeTheme() {
qx.Theme.define("qx.test.Theme.themes.A", {
decorations: {
main: {
style: {}
}
}
});
qx.Theme.define("qx.test.Theme.themes.B", {
include: qx.test.Theme.themes.A,
decorations: {}
});
var decorationManager = qx.theme.manager.Decoration.getInstance();
decorationManager.setTheme(qx.test.Theme.themes.B);
this.assertInstance(
decorationManager.resolve("main"),
qx.ui.decoration.Decorator
);
},
testIncludeInvalidTheme() {
qx.Theme.define("qx.test.Theme.themes.A", {
decorations: {
main: {
style: {}
}
}
});
var decorationManager = qx.theme.manager.Decoration.getInstance();
decorationManager.setTheme(qx.test.Theme.themes.A);
this.assertException(
function () {
var invalidTheme = qx.theme.Foo;
qx.Theme.include(qx.test.Theme.themes.A, invalidTheme);
},
Error,
"Mixin theme is not a valid theme!"
);
this.assertException(
function () {
var invalidTheme = null;
qx.Theme.include(qx.test.Theme.themes.A, invalidTheme);
},
Error,
"Mixin theme is not a valid theme!"
);
},
testPatchTheme() {
qx.Theme.define("qx.test.Theme.themes.A", {
decorations: {
main: {
style: {}
}
}
});
qx.Theme.define("qx.test.Theme.themes.B", {
patch: qx.test.Theme.themes.A,
decorations: {
main: {
style: {}
}
}
});
var decorationManager = qx.theme.manager.Decoration.getInstance();
decorationManager.setTheme(qx.test.Theme.themes.B);
this.assertInstance(
decorationManager.resolve("main"),
qx.ui.decoration.Decorator
);
},
testPatchInvalidTheme() {
qx.Theme.define("qx.test.Theme.themes.A", {
decorations: {
main: {
style: {}
}
}
});
var decorationManager = qx.theme.manager.Decoration.getInstance();
decorationManager.setTheme(qx.test.Theme.themes.A);
this.assertException(
function () {
var invalidTheme = qx.theme.Foo;
qx.Theme.patch(qx.test.Theme.themes.A, invalidTheme);
},
Error,
"Mixin theme is not a valid theme!"
);
this.assertException(
function () {
var invalidTheme = null;
qx.Theme.patch(qx.test.Theme.themes.A, invalidTheme);
},
Error,
"Mixin theme is not a valid theme!"
);
},
testIncludeThemeWithIncludes() {
qx.Theme.define("qx.test.Theme.themes.A", {
decorations: {
main: {
style: {}
}
}
});
qx.Theme.define("qx.test.Theme.themes.B", {
include: [qx.test.Theme.themes.A],
decorations: {}
});
qx.Theme.define("qx.test.Theme.themes.C", {
include: [qx.test.Theme.themes.B],
decorations: {}
});
var decorationManager = qx.theme.manager.Decoration.getInstance();
decorationManager.setTheme(qx.test.Theme.themes.C);
this.assertInstance(
decorationManager.resolve("main"),
qx.ui.decoration.Decorator
);
},
testDoubleExtend() {
qx.Theme.define("qx.test.Theme.themes.A", {
decorations: {
main: {
style: {}
}
}
});
qx.Theme.define("qx.test.Theme.themes.B", {
extend: qx.test.Theme.themes.A,
decorations: {}
});
qx.Theme.define("qx.test.Theme.themes.C", {
extend: qx.test.Theme.themes.B,
decorations: {}
});
var decorationManager = qx.theme.manager.Decoration.getInstance();
decorationManager.setTheme(qx.test.Theme.themes.C);
this.assertInstance(
decorationManager.resolve("main"),
qx.ui.decoration.Decorator
);
},
testExtendThemeWithIncludes() {
qx.Theme.define("qx.test.Theme.themes.A", {
decorations: {
main: {
style: {}
}
}
});
qx.Theme.define("qx.test.Theme.themes.B", {
include: [qx.test.Theme.themes.A],
decorations: {}
});
qx.Theme.define("qx.test.Theme.themes.C", {
extend: qx.test.Theme.themes.B,
decorations: {}
});
var decorationManager = qx.theme.manager.Decoration.getInstance();
decorationManager.setTheme(qx.test.Theme.themes.C);
this.assertInstance(
decorationManager.resolve("main"),
qx.ui.decoration.Decorator
);
}
}
});