d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith<html>
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith<head>
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith <title>Widget Test Suite</title>
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai <script src="/build/yui/yui.js"></script>
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai <!--script src="http://yui.yahooapis.com/3.5.0pr2/build/yui/yui.js"></script-->
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith <style type="text/css">
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai #console .yui3-console-entry {
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai padding:2px;
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai margin:0px;
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai min-height:0;
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai #console .yui3-console-entry-fail .yui3-console-entry-cat {
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai background-color:red;
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith }
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai #console .yui3-console-entry-pass .yui3-console-entry-cat {
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai background-color:green;
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith }
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai #console .yui3-console-entry-perf .yui3-console-entry-cat {
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai background-color:blue;
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai #console .yui3-console-entry-content {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai font-family:monospace;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai #console .yui3-console-entry-cat {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai padding:0;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai height:10px;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai width:10px;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai line-height:10px;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai overflow:hidden;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai display:inline-block;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai *display:inline;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai *zoom:1;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai #console {
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai position:static;
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai #automationmsg {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai margin-left:2em;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai .msg-hidden {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai display:none;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai html, body {
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai height:100%;
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai </style>
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai <style class="testcss">
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai /** Extended Core Tests Need This. Custom CSS **/
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai .yui3-mywidget-hidden {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai display:none;
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai /** SingleBox Core Tests Need This. Custom CSS **/
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai .yui3-mysingleboxwidget-hidden {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai display:none;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai /** Custom Widget Tests Need This. Custom CSS **/
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai .yui3-mycustomwidget-hidden {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai visibility:hidden;
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith </style>
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith</head>
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith<body class="yui3-skin-sam">
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai <p><input type="button" value="Run Tests" id="btnRun" disabled="true"><span id="automationmsg" class="msg-hidden">Currently running tests, with logging disabled to speed up automation. Button will be enabled once complete.</span></p>
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai <div id="testbed" class="yui3-skin-foo"></div>
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai <div id="widgetRenderContainer" style="height:300px;width:300px"></div>
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai <div id="customWidgetRenderContainer"></div>
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai <script>
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai YUI({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai useBrowserConsole:false,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai filter: (window.location.search.match(/[?&]filter=([^&]+)/) || [])[1] || 'min'
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }).use('test', 'widget', 'node-event-simulate', 'console', function (Y) {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai var yeti = Y.config.win && Y.config.win.$yetify;
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // Extended Widget
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai function MyWidget() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai MyWidget.superclass.constructor.apply(this, arguments);
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai }
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.extend(MyWidget, Y.Widget);
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai MyWidget.NAME = "myWidget";
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // Single Box Widget
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai function MySingleBoxWidget() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai MySingleBoxWidget.superclass.constructor.apply(this, arguments);
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai };
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai MySingleBoxWidget.NAME = "mySingleBoxWidget";
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.extend(MySingleBoxWidget, Y.Widget, {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai CONTENT_TEMPLATE:null
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai });
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var suite = new Y.Test.Suite("Widget Tests");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var coreTests = {
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai name : "Widget Core Tests",
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai _should : {
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai ignore: {
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai "testFocusOnChildFocus" : yeti && Y.UA.gecko,
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai "testFocusOnBoundingBox" : yeti && Y.UA.gecko,
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai "testMultiWidgetFocus" : yeti && Y.UA.gecko,
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai "testWidgetOnFocus" : yeti && Y.UA.gecko
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai }
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai },
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai createWidget: function(cfg) {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai return new Y.Widget(cfg);
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai },
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testInstantiation" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w instanceof Y.Widget);
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // Basic API
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFunction(w.render);
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFunction(w.renderUI);
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFunction(w.bindUI);
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFunction(w.syncUI);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFunction(w.init);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFunction(w.destroy);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFunction(w.get);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFunction(w.set);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFunction(w.show);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFunction(w.hide);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFunction(w.disable);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFunction(w.enable);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFunction(w.focus);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFunction(w.blur);
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testInitState" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget();
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("div", w.get("boundingBox").get("tagName").toLowerCase());
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("div", w.get("contentBox").get("tagName").toLowerCase());
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("disabled"), "disabled should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("focused"), "focused should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame("", w.get("height"), "height should be empty string");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame("", w.get("width"), "width should be empty string");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isString(w.get("id"), "id should be a string");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("initialized"), "initialized should be true");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("destroyed"), "destroyed should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("rendered"), "rendered should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("visible"), "visible should be true");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(w.get("tabIndex"), "tabIndex should be null");
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testNonRenderedStateUpdate" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // WRITE ONCE
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai id: "foobar",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai boundingBox: Y.Node.create("<span id='bb'></span>"),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai srcNode: Y.Node.create("<span id='cb'></span>")
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("disabled", true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("height", 100);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("width", 200);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("visible", false);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("tabIndex", 5);
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("span", w.get("boundingBox").get("tagName").toLowerCase());
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("span", w.get("contentBox").get("tagName").toLowerCase());
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("bb", w.get("boundingBox").get("id"));
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("cb", w.get("contentBox").get("id"));
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("disabled"), "disabled should be true");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("focused"), "focused should be false"); // focused is READONLY
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("100", w.get("height"), "height should be 100px");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("200", w.get("width"), "width should be 200px");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("foobar", w.get("id"), "id should be foobar");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("visible"), "visible should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(5, w.get("tabIndex"), "tabIndex should be 5");
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testValidationReadonlyWriteonce" : function() {
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget();
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // READONLY
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("focused", true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("rendered", true);
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // WRITE ONCE
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("boundingBox", Y.Node.create("<span id='bb'></span>"));
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("contentBox", Y.Node.create("<span id='cb'></span>"));
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("render", true);
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // INVALID
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("tabIndex", "foo");
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // State should be the same as the initial state
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("div", w.get("boundingBox").get("tagName").toLowerCase());
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("div", w.get("contentBox").get("tagName").toLowerCase());
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("disabled"), "disabled should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("focused"), "focused should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame("", w.get("height"), "height should be empty string");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame("", w.get("width"), "width should be empty string");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isString(w.get("id"), "id should be a string");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("initialized"), "initialized should be true");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("destroyed"), "destroyed should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("rendered"), "rendered should be false");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("visible"), "visible should be true");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(w.get("tabIndex"), "tabIndex should be null");
31689fe47c538a80973e2d32445b844f609fc5b8Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testStaticClassNameGeneration" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("yui3-widget-foo-bar", Y.Widget.getClassName("foo", "bar"));
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testInstanceClassNameGeneration" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = this.createWidget();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("yui3-widget-foo-bar", w.getClassName("foo", "bar"));
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testCssPrefix" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = this.createWidget();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("yui3-widget", w._cssPrefix, "Unexpected Prefix");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testRender" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai id: "widgetRender"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bbFromDom = Y.Node.one("#widgetRender");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bbFromDom), "boundingBox not found in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(bbFromDom.get("firstChild").compareTo(w.get("contentBox")), "contentBox not first child of boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(bbFromDom.compareTo(Y.Node.one("body").get("firstChild")), "widget not inserted to body");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("rendered"), "Rendered flag not set");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testRenderTo" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai id: "widgetRender"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.render("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var bbFromDom = Y.Node.one("#widgetRender");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(bbFromDom.get("parentNode").compareTo(Y.Node.one("#widgetRenderContainer")), "widget not rendered to container passed to render()");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bbFromDom), "boundingBox not found in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(bbFromDom.get("firstChild").compareTo(w.get("contentBox")), "contentBox not first child of boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("rendered"), "Rendered flag not set");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testBaseClassNames" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var cb = w.get("contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(bb.hasClass("yui3-widget"), "bb missing yui3-widget marker");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(cb.hasClass("yui3-widget-content"), "cb missing yui3-widget-content marker");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testHeight" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai height:100,
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai render:"#widgetRenderContainer"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox"),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb = w.get("contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // Default CSS has no border/padding/margin on BB/CB so this should be fine in all browsers
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(100, bb.get("offsetHeight"), "100 height not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(100, cb.get("offsetHeight"), "100 height not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("height", "200px");
d8f2b0dd5ac08b7e9256df9f92b204b33c7f9f69Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(200, bb.get("offsetHeight"), "200px height not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(200, cb.get("offsetHeight"), "200px height not set correctly in DOM");
d8f2b0dd5ac08b7e9256df9f92b204b33c7f9f69Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("height", "50%");
d8f2b0dd5ac08b7e9256df9f92b204b33c7f9f69Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(150, bb.get("offsetHeight"), "% height not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(150, cb.get("offsetHeight"), "% height not set correctly in DOM");
d8f2b0dd5ac08b7e9256df9f92b204b33c7f9f69Satyen Desai
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testWidth" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai width:100,
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai render:"#widgetRenderContainer"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox"),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb = w.get("contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // Default CSS has no border/padding/margin on BB/CB so this should be fine in all browsers
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(100, bb.get("offsetWidth"), "100 width not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(100, cb.get("offsetWidth"), "100 width not set correctly in DOM");
81ed0aaa8456bd5c6a54e7797258b1f182eb1f5bSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("width", "200px");
81ed0aaa8456bd5c6a54e7797258b1f182eb1f5bSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(200, bb.get("offsetWidth"), "200px width not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(200, cb.get("offsetWidth"), "200px width not set correctly in DOM");
81ed0aaa8456bd5c6a54e7797258b1f182eb1f5bSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("width", "50%");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(150, bb.get("offsetWidth"), "% width not set correctly in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual(150, cb.get("offsetWidth"), "% width not set correctly in DOM");
81ed0aaa8456bd5c6a54e7797258b1f182eb1f5bSatyen Desai
81ed0aaa8456bd5c6a54e7797258b1f182eb1f5bSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d8f2b0dd5ac08b7e9256df9f92b204b33c7f9f69Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testDisabled" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({render:true});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox");
d8f2b0dd5ac08b7e9256df9f92b204b33c7f9f69Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var className = w._cssPrefix + "-disabled";
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("disabled"), "disabled should be false by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a disabled marker class");
d8f2b0dd5ac08b7e9256df9f92b204b33c7f9f69Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("disabled", true);
d8f2b0dd5ac08b7e9256df9f92b204b33c7f9f69Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("disabled"), "disabled should be true");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass(className), "bb should have a disabled marker");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("disabled", false);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("disabled"), "disabled should be false");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a disabled marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d8f2b0dd5ac08b7e9256df9f92b204b33c7f9f69Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testDisableEnable" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({render:true});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox");
d8f2b0dd5ac08b7e9256df9f92b204b33c7f9f69Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var className = w._cssPrefix + "-disabled";
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("disabled"), "disabled should be false by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a disabled marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.disable();
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("disabled"), "disabled should be true");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass(className), "bb should have a disabled marker");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.enable();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("disabled"), "disabled should be false");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a disabled marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testFocusBlur" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // The focused attribute is read-only, so we test through the public api
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({render:true});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var className = w._cssPrefix + "-focused";
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // TODO ENH REQUEST: This doesn't seem right. We should focus on render.
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("focused"), "focused should be false by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a disabled marker class");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.focus();
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("focused"), "focused should be true");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass(className), "bb should have a focused marker");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.blur();
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("focused"), "focused should be false");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a focused marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testTabIndex" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({render:true});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(w.get("tabIndex"), "tabIndex should be null by default");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(bb.get("tabIndex") <= 0, "tabIndex should not be set by default"); // default varies across browsers 0 or -1
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("tabIndex", 6);
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(6, w.get("tabIndex"), "tabIndex should be 6");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
0fc5b7844cf15c234263eccb6534440a525fbd7fSatyen Desai Y.Assert.areSame(6, bb.get("tabIndex"), "tabIndex should be 6");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testId" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai id: "testId",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai render:true
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // ID is writeOnce. Cannot reset ID
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("id", "resetTestId");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame("testId", w.get("id"), "id not set");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame("testId", bb.get("id"), "id not reflected in DOM");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testVisible" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({render:true});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = w.get("boundingBox");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var className = w._cssPrefix + "-hidden";
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("visible"), "visible should be true by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a hidden marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areNotEqual("none", bb.getStyle("display"), "widget should not be display:none");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("visible", false);
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(w.get("visible"), "visible should be false");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass(className), "bb should have an hidden marker");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual("none", bb.getStyle("display"), "Default CSS should hide widget using display:none");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.set("visible", true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("visible"), "visible should be true by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a hidden marker class");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areNotEqual("none", bb.getStyle("display"), "widget should not be display:none");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai "testShowHide" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({render:true});
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var bb = w.get("boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var className = w._cssPrefix + "-hidden";
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(w.get("visible"), "visible should be true by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a hidden marker class");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.areNotEqual("none", bb.getStyle("display"), "widget should not be display:none");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai w.hide();
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(w.get("visible"), "visible should be false");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass(className), "bb should have an hidden marker");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.areEqual("none", bb.getStyle("display"), "Default CSS should hide widget using display:none");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai w.show();
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(w.get("visible"), "visible should be true by default");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(bb.hasClass(className), "bb should not have a hidden marker class");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.areNotEqual("none", bb.getStyle("display"), "widget should not be display:none");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai w.destroy();
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai },
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai "testBoundingBox" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai container.append("<div id='bbTest'></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = Y.one("#bbTest");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai boundingBox: "#bbTest",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai render:true
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bb), "bb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(bb.get("firstChild")), "Missing contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "boundingBox moved from it's place in the DOM");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testContentBox" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai container.append("<div id='cbTest'></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var cb = Y.one("#cbTest");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai contentBox: "#cbTest",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai render:true
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(cb), "cb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(cb.get("parentNode")), "Missing boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "contentBox moved from it's place in the DOM");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testBoundingBoxContentBox" : function() {
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai container.append("<div id='bbTest'></div>");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = Y.one("#bbTest");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai bb.append("<div id='cbTest'></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var cb = Y.one("#cbTest");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai boundingBox: "#bbTest",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai contentBox: "#cbTest",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai render:true
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bb), "bb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(cb), "cb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(cb.get("parentNode")), "bb not not cb's parent");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "bb moved from it's place in the DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("firstChild").compareTo(cb), "cb not bb's firstChild");
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testBoundingBoxRenderTo" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // NOTE: PE content sits in body, not container
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.one("body").append("<div id='bbTest'></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = Y.one("#bbTest");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai boundingBox: "#bbTest",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai render:container
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bb), "bb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(bb.get("firstChild")), "Missing contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "boundingBox moved from it's place in the DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testContentBoxRenderTo" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.one("body").append("<div id='cbTest'></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var cb = Y.one("#cbTest");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai contentBox: "#cbTest",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai render:container
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(cb), "cb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(cb.get("parentNode")), "Missing boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "contentBox moved from it's place in the DOM");
cea74478b281e652658d4e498aafc87c9fa90e92Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
cea74478b281e652658d4e498aafc87c9fa90e92Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testBoundingBoxContentBoxRenderTo" : function() {
cea74478b281e652658d4e498aafc87c9fa90e92Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.one("body").append("<div id='bbTest'></div>");
cea74478b281e652658d4e498aafc87c9fa90e92Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = Y.one("#bbTest");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai bb.append("<div id='cbTest'></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var cb = Y.one("#cbTest");
cea74478b281e652658d4e498aafc87c9fa90e92Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai boundingBox: "#bbTest",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai contentBox: "#cbTest",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai render:container
cea74478b281e652658d4e498aafc87c9fa90e92Satyen Desai });
12bdc27e9ac1ba89d9657200cfb22aadad54e7fbSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bb), "bb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(cb), "cb passed to constructor, not used");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(cb.get("parentNode")), "bb not not cb's parent");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "bb moved from it's place in the DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("firstChild").compareTo(cb), "cb not bb's firstChild");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
cea74478b281e652658d4e498aafc87c9fa90e92Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testSrcNode" : function() {
cea74478b281e652658d4e498aafc87c9fa90e92Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var container = Y.one("#widgetRenderContainer");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai container.append("<div id='srcNode'><div id='foo'></div></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var sn = Y.one("#srcNode");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai srcNode: "#srcNode",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai render:true
cea74478b281e652658d4e498aafc87c9fa90e92Satyen Desai });
cea74478b281e652658d4e498aafc87c9fa90e92Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(sn), "srcNode should end up being cb");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("srcNode").compareTo(sn), "srcNode should still be accessible from srcNode attribute");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(sn.get("parentNode")), "Missing boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "srcNode moved from it's place in the DOM");
cea74478b281e652658d4e498aafc87c9fa90e92Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNotNull(w.get("contentBox").one("#foo"), "contents of srcNode not maintained");
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy(true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "testGetByNode" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var o = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai id:"outer"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai o.render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var ocb = o.get("contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai ocb.append("<div><div id='outerContent'>Outer</div></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var i = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai id:"inner"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai i.render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var icb = i.get("contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai icb.append("<div><div id='innerContent'>Inner</div></div>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var outerContent = ocb.one("#outerContent");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var innerContent = icb.one("#innerContent");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(o, Y.Widget.getByNode(outerContent), "Couldn't find outer widget from content");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(i, Y.Widget.getByNode(innerContent), "Couldn't find inner widget from content");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(o, Y.Widget.getByNode(o.get("contentBox")), "Couldn't find outer widget from outer contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(o, Y.Widget.getByNode(o.get("boundingBox")), "Couldn't find outer widget from outer boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(i, Y.Widget.getByNode(i.get("contentBox")), "Couldn't find inner widget from inner contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(i, Y.Widget.getByNode(i.get("boundingBox")), "Couldn't find inner widget from inner boundingBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai i.destroy(true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai o.destroy(true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai "testStrings" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai Y.ObjectAssert.ownsNoKeys(w.get("strings"), "No strings should be available by default");
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai w.set("strings", {
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai stringOne: "one",
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai stringTwo: "two"
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai });
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai // Strings get merged, not overwritten
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai w.set("strings", {
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai stringThree: "three",
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai stringFour: "four"
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai });
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai Y.Assert.areEqual("one", w.get("strings").stringOne);
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai Y.Assert.areEqual("two", w.get("strings").stringTwo);
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai Y.Assert.areEqual("three", w.get("strings").stringThree);
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai Y.Assert.areEqual("four", w.get("strings").stringFour);
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai "testLoadingMarker" : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var n = Y.Node.create('<div id="srcNode" class="yui3-widget-loading">Src Node Content</div>');
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai Y.one("body").append(n);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai srcNode:"#srcNode"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(n.hasClass("yui3-widget-loading"), "yui3-widget-loading should not have been removed");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areSame(n, w.get("contentBox"), "srcNode not used as content box");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isFalse(n.hasClass("yui3-widget-loading"), "yui3-widget-loading should have removed");
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai w.destroy();
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai },
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai "testFocusOnChildFocus" : function() {
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai var w = this.createWidget({
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai tabIndex:3,
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai height:100,
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai width:100
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai });
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai w.render();
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai w.blur();
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai Y.Assert.isFalse(w.get("focused"), "Widget should not be focused here");
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai var n = w.get("contentBox").appendChild('<a href="#" id="clickme">Click Me</a>');
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai n.focus();
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai Y.Assert.isTrue(w.get("focused"), "Widget should be focused here");
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai
1809f37c5e32d3366ee0a26377448d74d5fa7ff5Satyen Desai w.destroy();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai },
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai "testFocusOnBoundingBox" : function() {
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai var w = this.createWidget({
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai tabIndex:3,
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai height:100,
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai width:100
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai });
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w.render();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w.blur();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isFalse(w.get("focused"), "Widget should not be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w.get("boundingBox").focus();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isTrue(w.get("focused"), "Widget should be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w.destroy();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai },
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai "testMultiWidgetFocus" : function() {
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai var w1 = this.createWidget({
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai id:"one",
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai tabIndex:3,
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai height:100,
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai width:100
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai });
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w1.render();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w1.blur();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai var w2 = this.createWidget({
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai id:"two",
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai tabIndex:3,
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai height:100,
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai width:100
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai });
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w2.render();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w2.blur();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai var n1 = w1.get("contentBox").appendChild('<a href="#" id="clickme1">Click Me (widget 1)</a>');
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai var n2 = w2.get("contentBox").appendChild('<a href="#" id="clickme2">Click Me (widget 2)</a>');
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai var n3 = Y.one("body").insertBefore('<a href="#" id="clickme3">Click Me (non widget)</a>', Y.one("body").get("firstChild"));
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isFalse(w1.get("focused"), "Widget 1 should not be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isFalse(w2.get("focused"), "Widget 2 should not be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai n1.focus();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isTrue(w1.get("focused"), "Widget 1 should be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isFalse(w2.get("focused"), "Widget 2 should not be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai n2.focus();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isFalse(w1.get("focused"), "Widget 1 should not be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isTrue(w2.get("focused"), "Widget 2 should be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai n3.focus();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isFalse(w1.get("focused"), "Widget 1 should not be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isFalse(w2.get("focused"), "Widget 2 should not be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w1.focus();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isTrue(w1.get("focused"), "Widget 1 should be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isFalse(w2.get("focused"), "Widget 2 should not be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w2.focus();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isFalse(w1.get("focused"), "Widget 1 should not be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isTrue(w2.get("focused"), "Widget 2 should be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w1.blur();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w2.blur();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isFalse(w1.get("focused"), "Widget 1 should not be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai Y.Assert.isFalse(w2.get("focused"), "Widget 2 should not be focused here");
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w1.destroy();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w2.destroy();
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai n3.remove(true);
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai },
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai "testWidgetOnFocus" : function() {
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai var test = this,
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai gotFocus = false;
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai var widget = this.createWidget({
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai height:100,
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai width:100,
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai tabIndex:0,
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai render:true
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai });
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai widget.on("focus", function() {
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai gotFocus = true;
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai });
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai widget.focus();
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai widget.destroy(true);
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai
5b1bd5cf62150e84e5e6456235479d28c5656317Satyen Desai Y.Assert.isTrue(gotFocus, "widget.on('focus') wasn't invoked");
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai },
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai "testToString" : function() {
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai var w = this.createWidget({
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai id: "foo"
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai });
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai Y.Assert.areEqual("widget[foo]", w.toString());
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai w.destroy();
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai },
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai "testDeprecated" : function() {
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai var w = this.createWidget({
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai strings: {
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai a:"strA",
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai b:"strB"
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai }
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai });
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai Y.Assert.areEqual("strA", w.getString("a"));
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai Y.Assert.areEqual("strB", w.getString("b"));
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai Y.ObjectAssert.areEqual({
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai a:"strA",
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai b:"strB"
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai }, w.getStrings());
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai };
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var extendedCoreTests = Y.Object(coreTests);
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.mix(extendedCoreTests, {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai name: "MyWidget Core Tests",
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai createWidget : function(cfg) {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai return (new MyWidget(cfg));
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai },
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testLoadingMarker" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var n = Y.Node.create('<div id="srcNode" class="yui3-mywidget-loading">Src Node Content</div>');
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.one("body").append(n);
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var w = this.createWidget({
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai srcNode:"#srcNode"
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai });
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(n.hasClass("yui3-mywidget-loading"), "yui3-mywidget-loading should not have been removed");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai w.render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.areSame(n, w.get("contentBox"), "srcNode not used as content box");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(n.hasClass("yui3-mywidget-loading"), "yui3-mywidget-loading should have removed");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai w.destroy();
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai },
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testBaseClassNames" : function() {
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var myWidget = this.createWidget();
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai myWidget.render();
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var bb = myWidget.get("boundingBox");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai var cb = myWidget.get("contentBox");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass("yui3-widget"), "bb missing generic yui3-widget marker");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(bb.hasClass("yui3-mywidget"), "bb missing yui3-mywidget marker");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isTrue(cb.hasClass("yui3-mywidget-content"), "cb missing yui3-mywidget-content marker");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai Y.Assert.isFalse(cb.hasClass("yui3-widget-content"), "cb shouldn't have yui3-widget-content marker");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai myWidget.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testCssPrefix" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = this.createWidget();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("yui3-mywidget", w._cssPrefix, "Unexpected Prefix");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testInstanceClassNameGeneration" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = this.createWidget();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("yui3-mywidget-foo-bar", w.getClassName("foo", "bar"));
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai w.destroy();
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai },
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai "testToString" : function() {
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai var w = this.createWidget({
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai id: "foo"
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai });
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai Y.Assert.areEqual("myWidget[foo]", w.toString());
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai }
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai }, true);
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var singleBoxCoreTests = Y.Object(extendedCoreTests);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.mix(singleBoxCoreTests, {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai name: "MySingleBoxWidget Core Tests",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai createWidget : function(cfg) {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai return (new MySingleBoxWidget(cfg));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testNonRenderedStateUpdate" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget({
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // WRITE ONCE
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai id: "foobar",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai boundingBox: Y.Node.create("<span id='bb'></span>")
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // Doesn't make sense to pass 2 boxes into a single box widget.
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // srcNode: Y.Node.create("<span id='cb'></span>")
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("disabled", true);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("height", 100);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("width", 200);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("visible", false);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("tabIndex", 5);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.areEqual("span", w.get("boundingBox").get("tagName").toLowerCase());
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.areEqual("span", w.get("contentBox").get("tagName").toLowerCase());
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.areEqual("bb", w.get("boundingBox").get("id"));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // Doesn't make sense to pass 2 boxes into a single box widget.
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // Y.Assert.areEqual("cb", w.get("contentBox").get("id"));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("disabled"), "disabled should be true");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isFalse(w.get("focused"), "focused should be false"); // focused is READONLY
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.areEqual("100", w.get("height"), "height should be 100px");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.areEqual("200", w.get("width"), "width should be 200px");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.areEqual("foobar", w.get("id"), "id should be foobar");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isFalse(w.get("visible"), "visible should be false");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.areEqual(5, w.get("tabIndex"), "tabIndex should be 5");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testCssPrefix" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.areEqual("yui3-mysingleboxwidget", w._cssPrefix, "Unexpected Prefix");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testInstanceClassNameGeneration" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.areEqual("yui3-mysingleboxwidget-foo-bar", w.getClassName("foo", "bar"));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testLoadingMarker" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var n = Y.Node.create('<div id="srcNode" class="yui3-mysingleboxwidget-loading">Src Node Content</div>');
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.one("body").append(n);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget({
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai srcNode:"#srcNode"
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(n.hasClass("yui3-mysingleboxwidget-loading"), "yui3-mysingleboxwidget-loading should not have been removed");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.render();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai // FIXME: Include after this is fixed: http://yuilibrary.com/projects/yui3/ticket/2530076, 2530311.
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // Y.Assert.areSame(n, w.get("contentBox"), "srcNode not used as content box");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isFalse(w.get("boundingBox").hasClass("yui3-mysingleboxwidget-loading"), "yui3-mysingleboxwidget-loading should have removed");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testBoundingBoxContentBoxAreTheSame" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget({
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai id:"singleBox"
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue( w.get("boundingBox").compareTo(w.get("contentBox")));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.render();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(w.get("contentBox")));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(Y.one("#singleBox").compareTo(w.get("contentBox")));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testBaseClassNames" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var mySingleBoxWidget = this.createWidget();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai mySingleBoxWidget.render();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var bb = mySingleBoxWidget.get("boundingBox");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(bb.hasClass("yui3-widget"), "bb missing generic yui3-widget marker");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(bb.hasClass("yui3-mysingleboxwidget"), "bb missing yui3-mysingleboxwidget marker");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(bb.hasClass("yui3-mysingleboxwidget-content"), "cb missing yui3-mysingleboxwidget-content marker");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isFalse(bb.hasClass("yui3-widget-content"), "cb shouldn't have yui3-widget-content marker");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai mySingleBoxWidget.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testRender" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget({
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai id: "widgetRender"
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.render();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var bbFromDom = Y.Node.one("#widgetRender");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bbFromDom), "boundingBox not found in DOM");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(bbFromDom.compareTo(Y.Node.one("body").get("firstChild")), "widget not inserted to body");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("rendered"), "Rendered flag not set");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testRenderTo" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget({
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai id: "widgetRender"
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.render("#widgetRenderContainer");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var bbFromDom = Y.Node.one("#widgetRender");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(bbFromDom.get("parentNode").compareTo(Y.Node.one("#widgetRenderContainer")), "widget not rendered to container passed to render()");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bbFromDom), "boundingBox not found in DOM");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("rendered"), "Rendered flag not set");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testBoundingBox" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var container = Y.one("#widgetRenderContainer");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai container.append("<div id='bbTest'></div>");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var bb = Y.one("#bbTest");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget({
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai boundingBox: "#bbTest",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai render:true
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bb), "bb passed to constructor, not used");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(bb), "bb !== cb");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "boundingBox moved from it's place in the DOM");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai // FIXME: Include after this is fixed: http://yuilibrary.com/projects/yui3/ticket/2530076, 2530311.
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testContentBox" : null,
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai /*
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var container = Y.one("#widgetRenderContainer");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai container.append("<div id='cbTest'></div>");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var cb = Y.one("#cbTest");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget({
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai contentBox: "#cbTest",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai render:true
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(cb), "cb passed to constructor, not used");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(w.get("contentBox")), "bb !== cb");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "contentBox moved from it's place in the DOM");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai */
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testBoundingBoxRenderTo" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var container = Y.one("#widgetRenderContainer");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // NOTE: PE content sits in body, not container
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.one("body").append("<div id='bbTest'></div>");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var bb = Y.one("#bbTest");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget({
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai boundingBox: "#bbTest",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai render:container
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bb), "bb passed to constructor, not used");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(bb), "bb !== cb");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "boundingBox moved from it's place in the DOM");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai // FIXME: Include after this is fixed: http://yuilibrary.com/projects/yui3/ticket/2530076, 2530311.
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testContentBoxRenderTo" : null,
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai /*
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var container = Y.one("#widgetRenderContainer");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.one("body").append("<div id='cbTest'></div>");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var cb = Y.one("#cbTest");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget({
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai contentBox: "#cbTest",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai render:container
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(cb), "cb passed to constructor, not used");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(cb), "bb !== cb");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "contentBox moved from it's place in the DOM");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai */
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai // FIXME: Include after this is fixed: http://yuilibrary.com/projects/yui3/ticket/2530076, 2530311.
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testSrcNode" : null,
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai /*
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var container = Y.one("#widgetRenderContainer");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai container.append("<div id='srcNode'><div id='foo'></div></div>");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var sn = Y.one("#srcNode");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget({
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai srcNode: "#srcNode",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai render:true
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("contentBox").compareTo(sn), "srcNode should end up being cb");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("srcNode").compareTo(sn), "srcNode should still be accessible from srcNode attribute");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(sn), "cb !== bb !== sn");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Assert.isTrue(w.get("boundingBox").get("parentNode").compareTo(container), "srcNode moved from it's place in the DOM");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // Y.Assert.isNotNull(w.get("contentBox").one("#foo"), "contents of srcNode not maintained");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy(true);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai */
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // CONSCIOUSLY NOT TESTED - CAN'T PASS 2 BOXES TO A SINGLE BOX WIDGET
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testBoundingBoxContentBox" : null,
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai "testBoundingBoxContentBoxRenderTo" : null,
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai "testToString" : function() {
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai var w = this.createWidget({
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai id: "foo"
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai });
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai Y.Assert.areEqual("mySingleBoxWidget[foo]", w.toString());
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai w.destroy();
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }, true);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai suite.add(new Y.Test.Case(coreTests));
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai suite.add(new Y.Test.Case(extendedCoreTests));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai suite.add(new Y.Test.Case(singleBoxCoreTests));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var coreEventTests = {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai name : "Widget Events",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai createWidget : function(cfg) {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai return (new Y.Widget(cfg));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testLifecycleEvents" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var actual = [],
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai expected = ["onInit", "afterInit", "onRender", "afterRender", "onDestroy", "afterDestroy"];
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget({
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai on: {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai init: function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("onInit");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai after: {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai init: function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("afterInit");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.on("render", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("onRender");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.after("render", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("afterRender");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.on("destroy", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("onDestroy");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.after("destroy", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("afterDestroy");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.render();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.render();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.ArrayAssert.itemsAreEqual(expected, actual, "Unexpected Lifecycle Events");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testLifecycleFireOnceEvents" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var actual = [],
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai expected = ["onInit", "afterInit", "onRender", "afterRender", "onDestroy", "afterDestroy"];
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.render();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.on("init", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("onInit");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.after("init", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("afterInit");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.on("render", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("onRender");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.after("render", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("afterRender");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // Can't really test destroy, after w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.on("destroy", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("onDestroy");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.after("destroy", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("afterDestroy");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.render();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.ArrayAssert.itemsAreEqual(expected, actual, "Unexpected Lifecycle FireOnce Events");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testAttributeChangeEvents" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var attrs = [
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "initialized",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "rendered",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "boundingBox",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "contentBox",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "srcNode",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "id",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "visible",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "disabled",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "height",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "width",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "strings",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "tabIndex",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "focused",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "destroyed"
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai ];
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var expected = [
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "on:initializedChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "after:initializedChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "on:renderedChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "after:renderedChange",
1610a0f21714a139d54cc4c4dcc5a175d965dd4fSatyen Desai
1610a0f21714a139d54cc4c4dcc5a175d965dd4fSatyen Desai "on:focusedChange",
1610a0f21714a139d54cc4c4dcc5a175d965dd4fSatyen Desai "after:focusedChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "on:visibleChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "after:visibleChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "on:disabledChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "after:disabledChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "on:heightChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "after:heightChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "on:widthChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "after:widthChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "on:stringsChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "after:stringsChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "on:tabIndexChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "after:tabIndexChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "on:destroyedChange",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "after:destroyedChange"
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai ];
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var actual = [];
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var listeners = {on:{}, after:{}};
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var onListener = function(e) {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("on:" + e.attrName + "Change");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai };
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var afterListener = function(e) {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("after:" + e.attrName + "Change");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai };
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai for (var i = 0; i < attrs.length; i++) {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai listeners.on[attrs[i] + "Change"] = onListener;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai listeners.after[attrs[i] + "Change"] = afterListener;
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget(listeners);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.render();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // boundingBox, contentBox, srcNode, id, don't fire since they are writeOnce/readOnly
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("boundingBox", Y.Node.one("<span>"));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("contentBox", Y.Node.one("<span>"));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("srcNode", Y.Node.one("<span>"));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("id", Y.Node.one("foo"));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
1610a0f21714a139d54cc4c4dcc5a175d965dd4fSatyen Desai // focused is readOnly, need to go through the focus/blur API
1610a0f21714a139d54cc4c4dcc5a175d965dd4fSatyen Desai w.focus();
1610a0f21714a139d54cc4c4dcc5a175d965dd4fSatyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("visible", false);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("disabled", true);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("height", "100px");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("width", "100px");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("strings", {newStrings: "foo"});
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.set("tabIndex", 7);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.ArrayAssert.itemsAreEqual(expected, actual, "Unexpected attribute change events");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai "testContentUpdateEvent" : function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var w = this.createWidget(),
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai expected = ["onContentUpdate", "afterContentUpdate"],
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual = [];
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.on("contentUpdate", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("onContentUpdate");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.after("contentUpdate", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai actual.push("afterContentUpdate");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.fire("contentUpdate");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.ArrayAssert.itemsAreEqual(expected, actual, "Unexpected content update events");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai w.destroy();
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai },
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai "testHomogenousBubble" : function() {
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai var w1 = this.createWidget({
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai height:100,
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai render:"#widgetRenderContainer"
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai });
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai var w2 = this.createWidget({
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai height:200,
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai render: "#widgetRenderContainer"
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai });
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai // w1 bubbled to w2
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai w1.addTarget(w2);
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai var bb1 = w1.get("boundingBox"),
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai bb2 = w2.get("boundingBox");
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai // Default CSS has no border/padding/margin on BB/CB so this should be fine in all browsers
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai Y.Assert.areEqual(100, bb1.get("offsetHeight"), "100 height not set correctly in DOM");
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai Y.Assert.areEqual(200, bb2.get("offsetHeight"), "200 height not set correctly in DOM");
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai w2.set("height", "300px");
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai Y.Assert.areEqual(100, bb1.get("offsetHeight"), "100px height not set correctly on bb1");
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai Y.Assert.areEqual(300, bb2.get("offsetHeight"), "300px height not set correctly on bb2");
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai w1.set("height", "400px");
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai Y.Assert.areEqual(400, bb1.get("offsetHeight"), "400px height not set correctly in bb1");
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai Y.Assert.areEqual(300, bb2.get("offsetHeight"), "300px height not set correctly in bb2");
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai w1.destroy(true);
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai w2.destroy(true);
ae03b489c1ce3defbcd9db6c72c68f0dc3a14b37Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
8590f7a396daf54f3440f970f550bbc9f59bc7b7Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai };
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var extendedEventTests = Y.Object(coreEventTests);
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.mix(extendedEventTests, {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai name: "MyWidget Event Tests",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai createWidget : function(cfg) {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai return (new MyWidget(cfg));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }, true);
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai suite.add(new Y.Test.Case(coreEventTests));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai suite.add(new Y.Test.Case(extendedEventTests));
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai // Lifecycle Monitoring Widget
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai function MyLifecycleWidget(cfg) {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test = cfg.__test;
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("preconstructor");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai MyLifecycleWidget.superclass.constructor.apply(this, arguments);
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("postconstructor");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.extend(MyLifecycleWidget, Y.Widget, {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai renderUI: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("renderUI");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(this.get("boundingBox").inDoc());
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(this.get("contentBox").inDoc());
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(this.get("contentBox").compareTo(this.get("boundingBox").get("firstChild")));
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai bindUI: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("bindUI");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai syncUI : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("syncUI");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai initializer: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("initializer");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // To trigger lazyAdd of attribute
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var attr = this.get("lazyAttr");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai destructor: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("destructor");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }, {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai ATTRS : {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "lazyAttr" : {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai value: "lazyAttrValue",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai setter: function(value) {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("lazySetter");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai return value;
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "nonLazyAttr" : {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai value: "nonLazyAttrValue",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai setter: function(value) {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("nonLazySetter");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai return value;
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai lazyAdd: false
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai });
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai MyLifecycleWidget.NAME = "myLifecycleWidget";
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai suite.add(new Y.Test.Case({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai name : "Widget Lifecycle",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testNonRenderPhases" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var expected = [
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "preconstructor",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "onInit",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "nonLazySetter",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "initializer",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "lazySetter",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "afterInit",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "postconstructor",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "onDestroy",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "destructor",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "afterDestroy"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai ];
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w = new MyLifecycleWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai on: {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai init: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("onInit");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai destroy: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("onDestroy");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai render: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("onRender");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai after: {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai init: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("afterInit");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai destroy: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("afterDestroy");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai render: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("afterRender");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai __test:[]
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai });
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.ArrayAssert.itemsAreEqual(expected, w.__test, "Unexpected phase order");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testAllPhases" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var expected = [
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "preconstructor",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "onInit",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "nonLazySetter",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "initializer",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "lazySetter",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "afterInit",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "postconstructor",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "onRender",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "renderUI",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "bindUI",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "syncUI",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "afterRender",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "onDestroy",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "destructor",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "afterDestroy"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai ];
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w = new MyLifecycleWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai on: {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai init: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("onInit");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai destroy: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("onDestroy");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai render: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("onRender");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai after: {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai init: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("afterInit");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai destroy: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("afterDestroy");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai render: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai this.__test.push("afterRender");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai __test:[]
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai });
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.render();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.render(); // Only once
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.ArrayAssert.itemsAreEqual(expected, w.__test, "Unexpected phase order");
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }));
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // Custom Widget Tests
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai function MyCustomWidget() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai MyCustomWidget.superclass.constructor.apply(this, arguments);
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.extend(MyCustomWidget, Y.Widget, {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai DEF_PARENT_NODE: "#customWidgetRenderContainer",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai BOUNDING_TEMPLATE: "<p>",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai CONTENT_TEMPLATE: "<ul>"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }, {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai ATTRS: {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // New attr
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai custAttr: {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai value:"custAttrValue"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // Modify attr
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai visible: {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai value:false
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // Modify attr
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai strings: {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai valueFn: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai return {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai custStringOne:"one",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai custStringTwo:"two"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai label : {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai value:"Default Label"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai listNodes : {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai value: null
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai titleNode: {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai valueFn: function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai return Y.Node.create("<span>");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai HTML_PARSER : {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai label : function(srcNode) {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // FIXME: Ideally we should be able to do a this.get("titleNode") here. However,
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // HTML_PARSER is called during widget initializer, when sub-class attrs aren't yet configured
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // Moving all attribute set up to before all initializers, should allow us to do this.
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var labelHolder = srcNode.one("> h1");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai if (labelHolder) {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai return labelHolder.get("text");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai listNodes: ["> ul > li"],
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai titleNode: "> h1"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai });
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai MyCustomWidget.NAME = "myCustomWidget";
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai suite.add(new Y.Test.Case({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai name : "Custom Widget",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testDefaultParentNode" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai id: "customWidget"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai });
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.render();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var bbFromDom = Y.Node.one("#customWidget");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(bbFromDom.get("parentNode").compareTo(Y.Node.one("#customWidgetRenderContainer")), "Custom widget not rendered to container passed to render()");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bbFromDom), "boundingBox not found in DOM");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(bbFromDom.get("firstChild").compareTo(w.get("contentBox")), "contentBox not first child of boundingBox");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(w.get("rendered"), "Rendered flag not set");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testDefaultParentNodeUsingRenderAttr" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai id: "customWidget",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai render: true
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai });
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var bbFromDom = Y.Node.one("#customWidget");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(bbFromDom.get("parentNode").compareTo(Y.Node.one("#customWidgetRenderContainer")), "Custom widget not rendered to container passed to render()");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(w.get("boundingBox").compareTo(bbFromDom), "boundingBox not found in DOM");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(bbFromDom.get("firstChild").compareTo(w.get("contentBox")), "contentBox not first child of boundingBox");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(w.get("rendered"), "Rendered flag not set");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testBoundingBoxTemplate" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai render:true
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai });
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var bb = w.get("boundingBox");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("p", bb.get("tagName").toLowerCase());
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testContentBoxTemplate" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai render:true
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai });
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var bb = w.get("contentBox");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("ul", bb.get("tagName").toLowerCase());
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testModifyAttr-Visible" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isFalse(w.get("visible"), "Custom widget should be hidden by default");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.render();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var bb = w.get("boundingBox");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.isTrue(bb.hasClass("yui3-mycustomwidget-hidden"), "custom bb should have a hidden marker class");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("hidden", bb.getStyle("visibility"), "custom widget should not be visibility:hidden");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testModifyAttr-Strings" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.render();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var expected = {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai custStringOne:"one",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai custStringTwo:"two"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var actual = w.get("strings");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.ObjectAssert.areEqual(expected, actual, "Unexpected strings");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.ObjectAssert.areEqual(actual, expected, "Unexpected strings");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testNewAttr" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("custAttrValue", w.get("custAttr"), "New attribute not added");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai "testHTMLParser" : function() {
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai // HTML to Parse
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var markup = Y.Node.create('<div id="customWidgetContent"><h1>My Label</h1><ul><li>Item1</li><li>Item2</li></ul></div>');
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Node.one("body").append(markup);
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MyCustomWidget({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai srcNode: "#customWidgetContent"
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai });
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("My Label", w.get("label"), "label not picked up from markup");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual("h1", w.get("titleNode").get("tagName").toLowerCase(), "titleNode not picked up from markup");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areEqual(2, w.get("listNodes").size(), "listNodes count does not match markup");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areSame("li", w.get("listNodes").item(0).get("tagName").toLowerCase(), "listNode 0 not picked up from markup");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areSame("li", w.get("listNodes").item(1).get("tagName").toLowerCase(), "listNode 1 not picked up from markup");
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai Y.Assert.areSame("Item1", w.get("listNodes").item(0).get("text"), "listNode 0 not picked up from markup");
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai Y.Assert.areSame("Item2", w.get("listNodes").item(1).get("text"), "listNode 1 not picked up from markup");
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai w.destroy();
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai },
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai "testHTMLParserWithEmptyConfig" : function() {
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai // See http://yuilibrary.com/projects/yui3/ticket/2531501
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai // User wanted to have a Widget with a statically defined srcNode (a rare use case),
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai // which meant there was no need to pass a config object to the widget constructor,
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai // bringing out a logic issue, when using html parser and no config
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai var markup = Y.Node.create('<div id="staticSrcNode"><h1>My Label</h1><ul><li>Item1</li><li>Item2</li></ul></div>');
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai Y.Node.one("body").append(markup);
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai function StaticSrcNodeWidget() {
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai StaticSrcNodeWidget.superclass.constructor.apply(this, arguments);
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai }
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai Y.extend(StaticSrcNodeWidget, MyCustomWidget, null, {
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai ATTRS : {
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai srcNode : {
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai value: "#staticSrcNode"
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai }
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai },
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai NAME : "staticSrcNodeWidget"
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai })
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai var w = new StaticSrcNodeWidget();
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai Y.Assert.areEqual("My Label", w.get("label"), "label not picked up from markup");
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai Y.Assert.areEqual("h1", w.get("titleNode").get("tagName").toLowerCase(), "titleNode not picked up from markup");
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai Y.Assert.areEqual(2, w.get("listNodes").size(), "listNodes count does not match markup");
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai Y.Assert.areSame("li", w.get("listNodes").item(0).get("tagName").toLowerCase(), "listNode 0 not picked up from markup");
6b7baaa39136d411805ffeac06cc81f3af043085Satyen Desai Y.Assert.areSame("li", w.get("listNodes").item(1).get("tagName").toLowerCase(), "listNode 1 not picked up from markup");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areSame("Item1", w.get("listNodes").item(0).get("text"), "listNode 0 not picked up from markup");
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai Y.Assert.areSame("Item2", w.get("listNodes").item(1).get("text"), "listNode 1 not picked up from markup");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai w.destroy();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai }));
3deb14ef5289f666e316e224e72e532226c41be5Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai suite.add(new Y.Test.Case({
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai name : "getSkinName",
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "getSkinName should return null if not rendered" : function () {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull( w.getSkinName() );
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "getSkinName should return name from BB if available": function () {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var bb = Y.Node.create( '<div class="yui3-skin-foo"><div></div></div>' ),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb = bb.one( 'div' ),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w = new Y.Widget( {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai boundingBox: bb,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai contentBox: cb
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai } );
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual( "foo", w.getSkinName() );
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "getSkinName should return name from body or null": function () {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w = new Y.Widget().render(),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai body = Y.one( 'body' );
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual( "sam", w.getSkinName() );
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai body.removeClass( "yui3-skin-sam" );
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull( w.getSkinName() );
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai body.addClass( "yui3-skin-sam" );
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "getSkinName should return name from ancestor if both ancestor and body are classed": function () {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w = new Y.Widget().render( '#testbed' ),
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai body = Y.one( 'body' );
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai body.addClass( "yui3-skin-sam" );
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.areEqual( "foo", w.getSkinName() );
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai
f8255676f21f65c5a8114dd9246b3d5b4604b359Satyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }));
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai suite.add(new Y.Test.Case({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai name:"destroy",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testRenderedDestroy: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w = new Y.Widget({id:"foo"}).render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai try {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.one("#foo"), "Bounding box still in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai } catch(e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.fail("w.destroy() on a rendered widget threw an exception" + e);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testRenderedDeepDestroy: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w = new Y.Widget({id:"foo"}).render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var nref = Y.Node.create('<div id="deep">Foo</div>');
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.get("contentBox").appendChild(nref);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai try {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy(true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.one("#foo"), "Bounding box still in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.one("#deep"), "Deep content box still in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.getDOMNode(nref), "Deep content still in Node cache");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai } catch(e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.fail("w.destroy(true) on a rendered widget threw an exception" + e);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testUnrenderedDestroy: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai try {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai } catch(e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.fail("w.destroy() on an unrendered widget threw an exception" + e);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testSingleBoxDestroy: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MySingleBoxWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai id:"foo"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai try {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.one("#foo"), "Bounding box still in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai } catch(e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.fail("w.destroy() on a single box widget threw an exception" + e);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testSingleBoxDeepDestroy: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai var w = new MySingleBoxWidget({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai id:"foo"
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var nref = Y.Node.create('<div id="deep_single">Foo</div>');
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.get("contentBox").appendChild(nref);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai try {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy(true);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.one("#foo"), "Bounding box still in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.one("#deep_single"), "Deep content box still in DOM");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isNull(Y.Node.getDOMNode(nref), "Deep content still in Node cache");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai } catch(e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.fail("w.destroy(true) on a single box widget threw an exception" + e);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }));
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai suite.add(new Y.Test.Case({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai name:"UI Events",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testSingleSimple: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w, h, cb,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai actualEvents = [],
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai expectedEvents = ["widget:click"];
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb = w.get("contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb.append("<p class='et'>Some Content For My Widget</p>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai h = function(e) { actualEvents.push(e.type); };
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.on("click", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb.one(".et").simulate("click");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.ArrayAssert.itemsAreEqual(expectedEvents, actualEvents);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testSingleComplex: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var w, h, cb
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai actualEvents = [],
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai expectedEvents = ["widget:render",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:renderedChange",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:render",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mousedown",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mouseup",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mouseup",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mouseup",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mouseup",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mouseup",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:mouseup",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "widget:click"];
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb = w.get("contentBox");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb.append("<p class='et'>Some Content For My Widget</p>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai h = function(e) { actualEvents.push(e.type); };
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.on({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "click": h,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "render": h,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "renderedChange": h
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.on("widget:mouseup", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.on("foo|widget:mouseup", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.on("mouseup", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.after("widget:mouseup", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.after("foo|widget:mouseup", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.after("mouseup", h);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.after({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "mousedown" : h,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai "render" : h
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb.one(".et").simulate("mousedown");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb.one(".et").simulate("mouseup");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai cb.one(".et").simulate("click");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.ArrayAssert.itemsAreEqual(expectedEvents, actualEvents);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testNested: function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var outer = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var inner = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var ocb = outer.get('contentBox');
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var icb = inner.get('contentBox');
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var expectedEvents = ["outerClick", "innerClick", "outerClick"];
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var actualEvents = [];
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai outer.render();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai ocb.setContent("<span class='oet'>Outer Content</span>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai inner.render(ocb);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai icb.setContent("<span class='iet'>Inner Content</span>");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai inner.after('click', function() {actualEvents.push("innerClick");});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai outer.after('click', function() {actualEvents.push("outerClick");});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // Only outer
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai ocb.one(".oet").simulate("click");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // One Inner, One Outer
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai ocb.one(".iet").simulate("click");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.ArrayAssert.itemsAreEqual(expectedEvents, actualEvents);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai outer.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai inner.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testMultipleInstances : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var actualEvents = [],
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai expectedEvents = ["clickOuter", "clickInner", "clickOuter"],
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w1,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w2;
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai YUI().use('widget', function (Y) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w1 = new Y.Widget({render:true});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w1.get('contentBox').append('<div class="w2-container"></div><span class="miouter">Outer</span>');
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w1.on('click', function (e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai actualEvents.push("clickOuter");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai YUI().use('widget', function (Y1) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w2 = new Y1.Widget({render:".w2-container"});
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w2.get('contentBox').append('<span class="miinner">Inner</span>');
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w2.on('click', function (e) {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai actualEvents.push("clickInner");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Node.one(".miouter").simulate("click"); // only outer, once.
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Node.one(".miinner").simulate("click"); // inner, bubbled to outer (once each, without JS errors)
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.ArrayAssert.itemsAreEqual(expectedEvents, actualEvents);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w1.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai w2.destroy();
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai },
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai testPublishDefaultFn : function() {
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai var w = new Y.Widget({
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai render:true
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai }),
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai called = false;
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai w.publish("click", {
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai defaultFn : function(e) {
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai called = true;
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai Y.Assert.areEqual("click", e.domEvent.type);
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai }
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai });
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai w.get("contentBox").simulate("click");
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai //this.wait(function() {
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai Y.Assert.isTrue(called);
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai //}, 0);
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai
9bdfc363ef897a298b7596475f598c1c4fd427b6Satyen Desai w.destroy();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }));
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai suite.add(new Y.Test.Case({
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai name:"clone",
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testWidgetClone : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a1 = Y.clone(a);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a2 = Y.clone(a1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a3 = Y.clone(a2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(a instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(a1 instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(a2 instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(a3 instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b1 = Y.clone(b);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b2 = Y.clone(b1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b3 = Y.clone(b2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(b instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(b1 instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(b2 instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(b3 instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c1 = Y.clone(c);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c2 = Y.clone(c1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c3 = Y.clone(c2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(c instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(c1 instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(c2 instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(c3 instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testWidgetHashClone : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // When Widget's are properties of an object it seems to break apart
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // something not passed to the recursive call maybe?
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c = new Y.Widget();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var o = {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai a : a,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai b : b,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai c : c
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai };
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var o1 = Y.clone(o);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var o2 = Y.clone(o1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var o3 = Y.clone(o2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(o3.a instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(o3.b instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(o3.c instanceof Y.Widget);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testBaseClone : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a = new Y.Base();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b = new Y.Base();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c = new Y.Base();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai // Base works fine
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a1 = Y.clone(a);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a2 = Y.clone(a1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a3 = Y.clone(a2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(a instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(a1 instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(a2 instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(a3 instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b1 = Y.clone(b);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b2 = Y.clone(b1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b3 = Y.clone(b2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(b instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(b1 instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(b2 instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(b3 instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c1 = Y.clone(c);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c2 = Y.clone(c1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c3 = Y.clone(c2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(c instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(c1 instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(c2 instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(c3 instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai },
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai testBaseHashClone : function() {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var a = new Y.Base();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var b = new Y.Base();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var c = new Y.Base();
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var o = {
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai a : a,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai b : b,
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai c : c
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai };
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var o1 = Y.clone(o);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var o2 = Y.clone(o1);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai var o3 = Y.clone(o2);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(o3.a instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(o3.b instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Assert.isTrue(o3.c instanceof Y.Base);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai }));
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Test.Runner.setName("Widget Tests");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Test.Runner.add(suite);
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai Y.Test.Runner.disableLogging();
4de1c70b905d1ec094efa1406a5264e29ea112c9Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Test.Runner.once("begin", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.one("#automationmsg").removeClass("msg-hidden");
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Test.Runner.once("complete", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.one("#automationmsg").addClass("msg-hidden");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai var console, runButton = Y.one("#btnRun");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai runButton.set("value", "Run Tests");
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai runButton.set("disabled", false).on("click", function() {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai if (!console) {
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai console = new Y.Console({
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai id:"console",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai width:"100%",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai height:"90%",
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai verbose : false,
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai printTimeout: 0,
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai newestOnTop : false,
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai entryTemplate: '<div class="{entry_class} {cat_class} {src_class}">'+
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai '<span class="{entry_cat_class}">&nbsp;</span>'+
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai '<span class="{entry_content_class}">{message}</span>'+
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai '</div>'
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }).render();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai }
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Test.Runner.enableLogging();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Test.Runner.run();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai });
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai Y.Test.Runner.run();
2cde0d56e1a4bc15add8f9cdcab3e87ff5a5b733Satyen Desai
d3c5729464159cab52ada7ff4b6c26b91bd4dcb4Satyen Desai });
d4a90de3308f343c5d935b5f9b6bcc9f5bc4d05fSatyen Desai </script>
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith</body>
00cf03a1ca1624dac1fecc85f43fc34f8806aff9Luke Smith</html>