// ========================================================================== // Project: SproutCore - JavaScript Application Framework // Copyright: ©2006-2011 Strobe Inc. and contributors. // Portions ©2008-2009 Apple Inc. All rights reserved. // License: Licensed under MIT license (see license.js) // ========================================================================== /*global module test equals context ok */ var Ace, Dark, Capsule, DarkCapsule, AceOnly; module("SC.Theme", { setup: function() { // make and register Ace Ace = SC.Theme.create({ name: 'ace', "classNames": ["ace"] }); SC.Theme.addTheme(Ace); // Dark Dark = Ace.subtheme("dark"); // Capsule Capsule = Ace.subtheme("capsule"); }, teardown: function() { } }); // use this utility to check themes function themeIs(themeInstance, shouldBe, classNames) { ok(themeInstance === shouldBe, "Correct theme"); if (!themeInstance) return; var isOk = same(themeInstance.classNames, SC.Set.create(classNames), "Correct class names."); } test("Calling SC.Theme.find finds proper theme.", function(){ var ace = SC.Theme.find("ace"); themeIs(ace, Ace, ["ace"]); }); test("There is no proliferation of theme registration (that is, subthemes are not registered globally)", function(){ var dark = SC.Theme.find("dark"); ok(!dark, "Theme should not be found."); }); test("Calling find on a subtheme class finds proper theme.", function(){ var dark = Ace.find("dark"); // child themes are specialized themeIs(dark.baseTheme, Dark, ["ace", "dark"]); }); test("Calling find on a theme instance finds proper theme.", function(){ var ace = SC.Theme.find("ace"); var dark = ace.find("dark"); // child themes are specialized (that means derived by the parent theme) themeIs(dark.baseTheme, Dark, ["ace", "dark"]); }); test("Calling find on a subtheme instance finds the proper theme.", function(){ var dark = Ace.find("dark"); var capsule = dark.find("capsule"); // child themes are specialized (that is, derived by the parent) themeIs(capsule.baseTheme, Capsule, ["ace", "capsule"]); // and now we are testing said specialization themeIs(capsule, capsule, ["ace", "dark", "capsule"]); });