source: main/trunk/greenstone3/web/interfaces/oran/js/jquery-ui-1.8rc1/tests/unit/widget/widget.js@ 24245

Last change on this file since 24245 was 24245, checked in by sjb48, 13 years ago

Oran code for supporting format changes to document.

  • Property svn:executable set to *
File size: 4.5 KB
Line 
1/*
2 * widget unit tests
3 */
4(function($) {
5
6module('widget factory', {
7 teardown: function() {
8 delete $.ui.testWidget;
9 }
10});
11
12test('widget creation', function() {
13 var myPrototype = {
14 _create: function() {},
15 creationTest: function() {}
16 };
17
18 $.widget('ui.testWidget', myPrototype);
19 ok($.isFunction($.ui.testWidget), 'constructor was created');
20 equals('object', typeof $.ui.testWidget.prototype, 'prototype was created');
21 equals($.ui.testWidget.prototype._create, myPrototype._create, 'create function is copied over');
22 equals($.ui.testWidget.prototype.creationTest, myPrototype.creationTest, 'random function is copied over');
23 equals($.ui.testWidget.prototype.option, $.Widget.prototype.option, 'option method copied over from base widget');
24});
25
26test('jQuery usage', function() {
27 expect(10);
28
29 var shouldInit = false;
30
31 $.widget('ui.testWidget', {
32 getterSetterVal: 5,
33 _create: function() {
34 ok(shouldInit, 'init called on instantiation');
35 },
36 methodWithParams: function(param1, param2) {
37 ok(true, 'method called via .pluginName(methodName)');
38 equals(param1, 'value1', 'parameter passed via .pluginName(methodName, param)');
39 equals(param2, 'value2', 'multiple parameter passed via .pluginName(methodName, param, param)');
40
41 return this;
42 },
43 getterSetterMethod: function(val) {
44 if (val) {
45 this.getterSetterVal = val;
46 } else {
47 return this.getterSetterVal;
48 }
49 }
50 });
51
52 shouldInit = true;
53 var elem = $('<div></div>').testWidget();
54 shouldInit = false;
55
56 var instance = elem.data('testWidget');
57 equals(typeof instance, 'object', 'instance stored in .data(pluginName)');
58 equals(instance.element[0], elem[0], 'element stored on widget');
59 var ret = elem.testWidget('methodWithParams', 'value1', 'value2');
60 equals(ret, elem, 'jQuery object returned from method call');
61
62 ret = elem.testWidget('getterSetterMethod');
63 equals(ret, 5, 'getter/setter can act as getter');
64 ret = elem.testWidget('getterSetterMethod', 30);
65 equals(ret, elem, 'getter/setter method can be chainable');
66 equals(instance.getterSetterVal, 30, 'getter/setter can act as setter');
67});
68
69test('direct usage', function() {
70 expect(9);
71
72 var shouldInit = false;
73
74 $.widget('ui.testWidget', {
75 getterSetterVal: 5,
76 _create: function() {
77 ok(shouldInit, 'init called on instantiation');
78 },
79 methodWithParams: function(param1, param2) {
80 ok(true, 'method called via .pluginName(methodName)');
81 equals(param1, 'value1', 'parameter passed via .pluginName(methodName, param)');
82 equals(param2, 'value2', 'multiple parameter passed via .pluginName(methodName, param, param)');
83
84 return this;
85 },
86 getterSetterMethod: function(val) {
87 if (val) {
88 this.getterSetterVal = val;
89 } else {
90 return this.getterSetterVal;
91 }
92 }
93 });
94
95 var elem = $('<div></div>')[0];
96
97 shouldInit = true;
98 var instance = new $.ui.testWidget({}, elem);
99 shouldInit = false;
100
101 equals($(elem).data('testWidget'), instance, 'instance stored in .data(pluginName)');
102 equals(instance.element[0], elem, 'element stored on widget');
103
104 var ret = instance.methodWithParams('value1', 'value2');
105 equals(ret, instance, 'plugin returned from method call');
106
107 ret = instance.getterSetterMethod();
108 equals(ret, 5, 'getter/setter can act as getter');
109 instance.getterSetterMethod(30);
110 equals(instance.getterSetterVal, 30, 'getter/setter can act as setter');
111});
112
113test('merge multiple option arguments', function() {
114 expect(1);
115 $.widget("ui.testWidget", {
116 _create: function() {
117 same(this.options, {
118 disabled: false,
119 option1: "value1",
120 option2: "value2",
121 option3: "value3",
122 option4: {
123 option4a: "valuea",
124 option4b: "valueb"
125 }
126 });
127 }
128 });
129 $("<div></div>").testWidget({
130 option1: "valuex",
131 option2: "valuex",
132 option3: "value3",
133 option4: {
134 option4a: "valuex"
135 }
136 }, {
137 option1: "value1",
138 option2: "value2",
139 option4: {
140 option4b: "valueb"
141 }
142 }, {
143 option4: {
144 option4a: "valuea"
145 }
146 });
147});
148
149test(".widget() - base", function() {
150 $.widget("ui.testWidget", {
151 _create: function() {}
152 });
153 var div = $("<div></div>").testWidget()
154 same(div[0], div.testWidget("widget")[0]);
155});
156
157test(".widget() - overriden", function() {
158 var wrapper = $("<div></div>");
159 $.widget("ui.testWidget", {
160 _create: function() {},
161 widget: function() {
162 return wrapper;
163 }
164 });
165 same(wrapper[0], $("<div></div>").testWidget().testWidget("widget")[0]);
166});
167
168})(jQuery);
Note: See TracBrowser for help on using the repository browser.