r3573 committed - Widget factory: split unit tests out from core unit tests. Started add...

r3573 committed - Widget factory: split unit tests out from core unit tests. Started add...

Revision: 3573
Author: scott.gonzalez
Date: Thu Dec 31 20:24:48 2009
Log: Widget factory: split unit tests out from core unit tests. Started
adding new tests.
http://code.google.com/p/jquery-ui/source/detail?r=3573
Added:
/branches/dev/tests/unit/widget
/branches/dev/tests/unit/widget/widget.html
/branches/dev/tests/unit/widget/widget.js
Modified:
/branches/dev/tests/unit/core/core.html
/branches/dev/tests/unit/core/core.js
=======================================
--- /dev/null
+++ /branches/dev/tests/unit/widget/widget.html    Thu Dec 31 20:24:48 2009
@@ -0,0 +1,24 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <title>jQuery UI Widget Test Suite</title>
+
+    <script type="text/javascript" src="../../../jquery-1.3.2.js"></script>
+    <script type="text/javascript"
src="../../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../../ui/jquery.ui.widget.js"></script>
+
+    <link type="text/css" href="../testsuite.css" rel="stylesheet" />
+    <script type="text/javascript"
src="../../../external/testrunner-r6588.js"></script>
+    <script type="text/javascript" src="../../jquery.simulate.js"></script>
+    <script type="text/javascript" src="../testsuite.js"></script>
+
+    <script type="text/javascript" src="widget.js"></script>
+</head>
+<body>
+
+<div id="main">
+
+</div>
+
+</body>
+</html>
=======================================
--- /dev/null
+++ /branches/dev/tests/unit/widget/widget.js    Thu Dec 31 20:24:48 2009
@@ -0,0 +1,168 @@
+/*
+ * widget unit tests
+ */
+(function($) {
+
+module('widget factory', {
+    teardown: function() {
+        delete $.ui.testWidget;
+    }
+});
+
+test('widget creation', function() {
+    var myPrototype = {
+        _init: function() {},
+        creationTest: function() {}
+    };
+
+    $.widget('ui.testWidget', myPrototype);
+    ok($.isFunction($.ui.testWidget), 'constructor was created');
+    equals('object', typeof $.ui.testWidget.prototype, 'prototype was
created');
+    equals($.ui.testWidget.prototype._init, myPrototype._init, 'init function
is copied over');
+    equals($.ui.testWidget.prototype.creationTest,
myPrototype.creationTest, 'random function is copied over');
+    equals($.ui.testWidget.prototype.option,
$.Widget.prototype.option, 'option method copied over from base widget');
+});
+
+test('jQuery usage', function() {
+    expect(10);
+
+    var shouldInit = false;
+
+    $.widget('ui.testWidget', {
+        getterSetterVal: 5,
+        _init: function() {
+            ok(shouldInit, 'init called on instantiation');
+        },
+        methodWithParams: function(param1, param2) {
+            ok(true, 'method called via .pluginName(methodName)');
+            equals(param1, 'value1', 'parameter passed via .pluginName(methodName,
param)');
+            equals(param2, 'value2', 'multiple parameter passed
via .pluginName(methodName, param, param)');
+
+            return this;
+        },
+        getterSetterMethod: function(val) {
+            if (val) {
+                this.getterSetterVal = val;
+            } else {
+                return this.getterSetterVal;
+            }
+        }
+    });
+
+    shouldInit = true;
+    var elem = $('<div></div>').testWidget();
+    shouldInit = false;
+
+    var instance = elem.data('testWidget');
+    equals(typeof instance, 'object', 'instance stored in .data(pluginName)');
+    equals(instance.element[0], elem[0], 'element stored on widget');
+    var ret = elem.testWidget('methodWithParams', 'value1', 'value2');
+    equals(ret, elem, 'jQuery object returned from method call');
+
+    ret = elem.testWidget('getterSetterMethod');
+    equals(ret, 5, 'getter/setter can act as getter');
+    ret = elem.testWidget('getterSetterMethod', 30);
+    equals(ret, elem, 'getter/setter method can be chainable');
+    equals(instance.getterSetterVal, 30, 'getter/setter can act as setter');
+});
+
+test('direct usage', function() {
+    expect(9);
+
+    var shouldInit = false;
+
+    $.widget('ui.testWidget', {
+        getterSetterVal: 5,
+        _init: function() {
+            ok(shouldInit, 'init called on instantiation');
+        },
+        methodWithParams: function(param1, param2) {
+            ok(true, 'method called via .pluginName(methodName)');
+            equals(param1, 'value1', 'parameter passed via .pluginName(methodName,
param)');
+            equals(param2, 'value2', 'multiple parameter passed
via .pluginName(methodName, param, param)');
+
+            return this;
+        },
+        getterSetterMethod: function(val) {
+            if (val) {
+                this.getterSetterVal = val;
+            } else {
+                return this.getterSetterVal;
+            }
+        }
+    });
+
+    var elem = $('<div></div>')[0];
+
+    shouldInit = true;
+    var instance = new $.ui.testWidget({}, elem);
+    shouldInit = false;
+
+    equals($(elem).data('testWidget'), instance, 'instance stored
in .data(pluginName)');
+    equals(instance.element[0], elem, 'element stored on widget');
+
+    var ret = instance.methodWithParams('value1', 'value2');
+    equals(ret, instance, 'plugin returned from method call');
+
+    ret = instance.getterSetterMethod();
+    equals(ret, 5, 'getter/setter can act as getter');
+    instance.getterSetterMethod(30);
+    equals(instance.getterSetterVal, 30, 'getter/setter can act as setter');
+});
+
+test('merge multiple option arguments', function() {
+    expect(1);
+    $.widget("ui.testWidget", {
+        _init: function() {
+            same(this.options, {
+                disabled: false,
+                option1: "value1",
+                option2: "value2",
+                option3: "value3",
+                option4: {
+                    option4a: "valuea",
+                    option4b: "valueb"
+                }
+            });
+        }
+    });
+    $("<div></div>").testWidget({
+        option1: "valuex",
+        option2: "valuex",
+        option3: "value3",
+        option4: {
+            option4a: "valuex"
+        }
+    }, {
+        option1: "value1",
+        option2: "value2",
+        option4: {
+            option4b: "valueb"
+        }
+    }, {
+        option4: {
+            option4a: "valuea"
+        }
+    });
+});
+
+test(".widget() - base", function() {
+    $.widget("ui.testWidget", {
+        _init: function() {}
+    });
+    var div = $("<div></div>").testWidget()
+    same(div[0], div.testWidget("widget")[0]);
+});
+
+test(".widget() - overriden", function() {
+    var wrapper = $("<div></div>");
+    $.widget("ui.testWidget", {
+        _init: function() {},
+        widget: function() {
+            return wrapper;
+        }
+    });
+    same(wrapper[0], $("<div></div>").testWidget().testWidget("widget")[0]);
+});
+
+})(jQuery);
=======================================
--- /branches/dev/tests/unit/core/core.html    Wed Dec 16 17:36:20 2009
+++ /branches/dev/tests/unit/core/core.html    Thu Dec 31 20:24:48 2009
@@ -5,7 +5,6 @@
    <script type="text/javascript" src="../../../jquery-1.3.2.js"></script>
    <script type="text/javascript"
src="../../../ui/jquery.ui.core.js"></script>
-    <script type="text/javascript"
src="../../../ui/jquery.ui.widget.js"></script>
    <link type="text/css" href="../testsuite.css" rel="stylesheet" />
    <script type="text/javascript"
src="../../../external/testrunner-r6588.js"></script>
=======================================
--- /branches/dev/tests/unit/core/core.js    Thu Oct 15 03:18:46 2009
+++ /branches/dev/tests/unit/core/core.js    Thu Dec 31 20:24:48 2009
@@ -57,59 +57,4 @@
    equals($('#zIndexAutoNoParent').zIndex(), 0, 'zIndex never explicitly set
in hierarchy');
});
-test('widget factory, merge multiple option arguments', function() {
-    expect(1);
-    $.widget("ui.widgetTest", {
-        _init: function() {
-            same(this.options, {
-                disabled: false,
-                option1: "value1",
-                option2: "value2",
-                option3: "value3",
-                option4: {
-                    option4a: "valuea",
-                    option4b: "valueb"
-                }
-            });
-        }
-    });
-    $("#main > :first").widgetTest({
-        option1: "valuex",
-        option2: "valuex",
-        option3: "value3",
-        option4: {
-            option4a: "valuex"
-        }
-    }, {
-        option1: "value1",
-        option2: "value2",
-        option4: {
-            option4b: "valueb"
-        }
-    }, {
-        option4: {
-            option4a: "valuea"
-        }
-    });
-});
-
-test("widget factory, base widget method", function() {
-    $.widget("test.testwidget", {
-        _init: function() {}
-    });
-    var div = $("<div></div>").testwidget()
-    same(div[0], div.testwidget("widget")[0]);
-});
-
-test("widget factory, overriden widget method", function() {
-    var wrapper = $("<div></div>");
-    $.widget("test.testwidget2", {
-        _init: function() {},
-        widget: function() {
-            return wrapper;
-        }
-    });
-    same(wrapper[0], $("<div></div>").testwidget2().testwidget2("widget")[0]);
-});
-
})(jQuery);
--