1 | /*
|
---|
2 | * widget unit tests
|
---|
3 | */
|
---|
4 | (function($) {
|
---|
5 |
|
---|
6 | module('widget factory', {
|
---|
7 | teardown: function() {
|
---|
8 | delete $.ui.testWidget;
|
---|
9 | }
|
---|
10 | });
|
---|
11 |
|
---|
12 | test('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 |
|
---|
26 | test('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 |
|
---|
69 | test('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 |
|
---|
113 | test('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 |
|
---|
149 | test(".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 |
|
---|
157 | test(".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);
|
---|