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