// ========================================================================== // Project: SproutCore
// Copyright: @2012 7x7 Software, Inc. // License: Licensed under MIT license (see license.js) // ========================================================================== /*globals CoreTest, module, test, equals, same*/
var pane1, pane2;
module(“SC.RootResponder Design Mode Support”, {
setup: function() { pane1 = SC.Pane.create({ updateDesignMode: CoreTest.stub('updateDesignMode', SC.Pane.prototype.updateDesignMode) }).append(); pane2 = SC.Pane.create({ updateDesignMode: CoreTest.stub('updateDesignMode', SC.Pane.prototype.updateDesignMode) }).append(); }, teardown: function() { pane1.remove(); pane2.remove(); pane1 = pane2 = null; }
});
test(“When you set designModes on the root responder, it preps internal arrays.”, function () {
var windowSize, designModes, responder = SC.RootResponder.responder; windowSize = responder.get('currentWindowSize'); equals(responder._designModeNames, undefined, "If no designModes value is set, there should not be any _designModeNames internal array."); equals(responder._designModeThresholds, undefined, "If no designModes value is set, there should not be any _designModeNames internal array."); designModes = { small: ((windowSize.width - 10) * (windowSize.height - 10)) / window.devicePixelRatio, large: Infinity }; responder.set('designModes', designModes); same(responder._designModeNames, ['small', 'large'], "If designModes value is set, there should be an ordered _designModeNames internal array."); same(responder._designModeThresholds, [((windowSize.width - 10) * (windowSize.height - 10)) / window.devicePixelRatio, Infinity], "If designModes value is set, there should be an ordered_designModeNames internal array."); designModes = { small: ((windowSize.width - 10) * (windowSize.height - 10)) / window.devicePixelRatio, medium: ((windowSize.width + 10) * (windowSize.height + 10)) / window.devicePixelRatio, large: Infinity }; responder.set('designModes', designModes); same(responder._designModeNames, ['small', 'medium', 'large'], "If designModes value is set, there should be an ordered _designModeNames internal array."); same(responder._designModeThresholds, [((windowSize.width - 10) * (windowSize.height - 10)) / window.devicePixelRatio, ((windowSize.width + 10) * (windowSize.height + 10)) / window.devicePixelRatio, Infinity], "If designModes value is set, there should be an ordered_designModeNames internal array."); responder.set('designModes', null); equals(responder._designModeNames, undefined, "If no designModes value is set, there should not be any _designModeNames internal array."); equals(responder._designModeThresholds, undefined, "If no designModes value is set, there should not be any _designModeNames internal array.");
});
test(“When you set designModes on the root responder, it calls updateDesignMode on all its panes.”, function () {
var windowSize, designModes, responder = SC.RootResponder.responder; windowSize = responder.get('currentWindowSize'); pane1.updateDesignMode.expect(1); pane2.updateDesignMode.expect(1); designModes = { small: ((windowSize.width - 10) * (windowSize.height - 10)) / window.devicePixelRatio, large: Infinity }; responder.set('designModes', designModes); pane1.updateDesignMode.expect(2); pane2.updateDesignMode.expect(2); designModes = { small: ((windowSize.width - 10) * (windowSize.height - 10)) / window.devicePixelRatio, medium: ((windowSize.width + 10) * (windowSize.height + 10)) / window.devicePixelRatio, large: Infinity }; responder.set('designModes', designModes); pane1.updateDesignMode.expect(3); pane2.updateDesignMode.expect(3); responder.set('designModes', null); pane1.updateDesignMode.expect(4); pane2.updateDesignMode.expect(4);
});