]> git.proxmox.com Git - extjs.git/blame - extjs/modern/modern/test/specs/field/Radio.js
add extjs 6.0.1 sources
[extjs.git] / extjs / modern / modern / test / specs / field / Radio.js
CommitLineData
6527f429
DM
1describe('Ext.field.Radio', function() {\r
2 var field, fieldset;\r
3\r
4 function makeField(cfg) {\r
5 field = new Ext.field.Radio(cfg);\r
6 }\r
7\r
8 function makeGroup(fields) {\r
9 fields.forEach(function(f) {\r
10 f.name = 'group';\r
11 });\r
12\r
13 fieldset = new Ext.form.FieldSet({\r
14 defaultType: 'radiofield',\r
15 items: fields\r
16 });\r
17\r
18 fieldset.renderTo(Ext.getBody());\r
19 }\r
20\r
21 afterEach(function() {\r
22 fieldset = field = Ext.destroy(field, fieldset);\r
23 });\r
24\r
25 describe("getGroupValue", function() {\r
26 it("should return the value of the radio configured with checked: true", function() {\r
27 makeGroup([{\r
28 value: 'red'\r
29 }, {\r
30 checked: true,\r
31 value: 'blue'\r
32 }]);\r
33\r
34 var fields = fieldset.query('radiofield');\r
35 fields.forEach(function(f) {\r
36 expect(f.getGroupValue()).toBe('blue');\r
37 });\r
38 });\r
39\r
40 it("should return the value of the checked radio when selection changes", function() {\r
41 makeGroup([{\r
42 value: 'red'\r
43 }, {\r
44 checked: true,\r
45 value: 'blue'\r
46 }]);\r
47\r
48 fieldset.items.first().check();\r
49\r
50 var fields = fieldset.query('radiofield');\r
51 fields.forEach(function(f) {\r
52 expect(f.getGroupValue()).toBe('red');\r
53 });\r
54 });\r
55\r
56 it("should return null if no item is checked", function() {\r
57 makeGroup([{\r
58 value: 'red'\r
59 }, {\r
60 value: 'blue'\r
61 }]);\r
62\r
63 var fields = fieldset.query('radiofield');\r
64 fields.forEach(function(f) {\r
65 expect(f.getGroupValue()).toBeNull();\r
66 });\r
67 });\r
68 });\r
69\r
70 describe("checked state", function() {\r
71 function expectChecked(states) {\r
72 var len = states.length,\r
73 i;\r
74\r
75 for (i = 0; i < len; ++i) {\r
76 expect(fieldset.getAt(i).getChecked()).toBe(states[i]);\r
77 }\r
78 }\r
79\r
80 it("should be able to have no item checked initially", function() {\r
81 makeGroup([{\r
82 value: 'red'\r
83 }, {\r
84 value: 'blue'\r
85 }, {\r
86 value: 'green'\r
87 }]);\r
88\r
89 expectChecked([false, false, false]);\r
90 });\r
91\r
92 it("should have the checked item checked, other items unchecked", function() {\r
93 makeGroup([{\r
94 value: 'red'\r
95 }, {\r
96 value: 'blue',\r
97 checked: true\r
98 }, {\r
99 value: 'green'\r
100 }]);\r
101\r
102 expectChecked([false, true, false]);\r
103 });\r
104\r
105 it("should uncheck the checked item when checking a new item", function() {\r
106 makeGroup([{\r
107 value: 'red'\r
108 }, {\r
109 value: 'blue'\r
110 }, {\r
111 value: 'green'\r
112 }]);\r
113\r
114 fieldset.getAt(0).check();\r
115 expectChecked([true, false, false]);\r
116\r
117 fieldset.getAt(1).check();\r
118 expectChecked([false, true, false]);\r
119\r
120 fieldset.getAt(2).check();\r
121 expectChecked([false, false, true]);\r
122 });\r
123\r
124 it("should allow the checked item to be unchecked", function() {\r
125 makeGroup([{\r
126 value: 'red',\r
127 checked: true\r
128 }, {\r
129 value: 'blue'\r
130 }, {\r
131 value: 'green'\r
132 }]);\r
133\r
134 fieldset.getAt(0).uncheck();\r
135 expectChecked([false, false, false]);\r
136 });\r
137 });\r
138\r
139 // Currently this fails on Tablets, because it's not translating\r
140 // the click to tap.\r
141 xdescribe("change via the UI", function() {\r
142 it("should set checked when clicking", function() {\r
143 makeGroup([{\r
144 value: 'red',\r
145 checked: true\r
146 }, {\r
147 value: 'blue'\r
148 }]);\r
149\r
150 var f = fieldset.getAt(1);\r
151\r
152 jasmine.fireMouseEvent(f.getComponent().mask.dom, 'click');\r
153\r
154 expect(fieldset.getAt(0).getChecked()).toBe(false);\r
155 expect(f.getChecked()).toBe(true);\r
156 });\r
157 });\r
158\r
159 describe("state methods", function() {\r
160 var changeSpy, checkSpy, uncheckSpy;\r
161\r
162 beforeEach(function() {\r
163 changeSpy = jasmine.createSpy();\r
164 checkSpy = jasmine.createSpy();\r
165 uncheckSpy = jasmine.createSpy();\r
166 });\r
167\r
168 afterEach(function() {\r
169 changeSpy = checkSpy = uncheckSpy = null;\r
170 });\r
171\r
172 function attachSpies(f) {\r
173 f.on({\r
174 change: changeSpy,\r
175 check: checkSpy,\r
176 uncheck: uncheckSpy\r
177 });\r
178 }\r
179\r
180 describe("setChecked", function() {\r
181 describe("setChecked(true)", function() {\r
182 describe("when not checked", function() {\r
183 beforeEach(function() {\r
184 makeGroup([{\r
185 value: 'red'\r
186 }, {\r
187 value: 'blue'\r
188 }])\r
189 });\r
190\r
191 it("should set the checked state", function() {\r
192 var f = fieldset.getAt(0);\r
193 f.setChecked(true);\r
194 expect(f.getChecked()).toBe(true);\r
195 expect(f.isChecked()).toBe(true);\r
196 });\r
197\r
198 it("should fire change, check, not fire uncheck", function() {\r
199 var f = fieldset.getAt(0);\r
200 attachSpies(f);\r
201\r
202 f.setChecked(true);\r
203 expect(changeSpy.callCount).toBe(1);\r
204 expect(changeSpy.mostRecentCall.args[0]).toBe(f);\r
205 expect(changeSpy.mostRecentCall.args[1]).toBe(true);\r
206 expect(changeSpy.mostRecentCall.args[2]).toBe(false);\r
207\r
208 expect(checkSpy.callCount).toBe(1);\r
209 expect(checkSpy.mostRecentCall.args[0]).toBe(f);\r
210\r
211 expect(uncheckSpy).not.toHaveBeenCalled();\r
212 });\r
213 });\r
214\r
215 describe("when checked", function() {\r
216 beforeEach(function() {\r
217 makeGroup([{\r
218 value: 'red',\r
219 checked: true\r
220 }, {\r
221 value: 'blue'\r
222 }])\r
223 });\r
224\r
225 it("should set the checked state", function() {\r
226 var f = fieldset.getAt(0);\r
227 f.setChecked(true);\r
228 expect(f.getChecked()).toBe(true);\r
229 expect(f.isChecked()).toBe(true);\r
230 });\r
231\r
232 it("should not fire any events", function() {\r
233 var f = fieldset.getAt(0);\r
234 attachSpies(f);\r
235\r
236 f.setChecked(true);\r
237 \r
238 expect(changeSpy).not.toHaveBeenCalled();\r
239 expect(checkSpy).not.toHaveBeenCalled();\r
240 expect(uncheckSpy).not.toHaveBeenCalled();\r
241 });\r
242 });\r
243 });\r
244\r
245 describe("setChecked(false)", function() {\r
246 describe("when not checked", function() {\r
247 beforeEach(function() {\r
248 makeGroup([{\r
249 value: 'red'\r
250 }, {\r
251 value: 'blue'\r
252 }])\r
253 });\r
254\r
255 it("should set the checked state", function() {\r
256 var f = fieldset.getAt(0);\r
257 f.setChecked(false);\r
258 expect(f.getChecked()).toBe(false);\r
259 expect(f.isChecked()).toBe(false);\r
260 });\r
261\r
262 it("should not fire any events", function() {\r
263 var f = fieldset.getAt(0);\r
264 attachSpies(f);\r
265\r
266 f.setChecked(false);\r
267 \r
268 expect(changeSpy).not.toHaveBeenCalled();\r
269 expect(checkSpy).not.toHaveBeenCalled();\r
270 expect(uncheckSpy).not.toHaveBeenCalled();\r
271 });\r
272 });\r
273\r
274 describe("when checked", function() {\r
275 beforeEach(function() {\r
276 makeGroup([{\r
277 value: 'red',\r
278 checked: true\r
279 }, {\r
280 value: 'blue'\r
281 }])\r
282 });\r
283\r
284 it("should set the checked state", function() {\r
285 var f = fieldset.getAt(0);\r
286 f.setChecked(false);\r
287 expect(f.getChecked()).toBe(false);\r
288 expect(f.isChecked()).toBe(false);\r
289 });\r
290\r
291 it("should fire change, check, not fire uncheck", function() {\r
292 var f = fieldset.getAt(0);\r
293 attachSpies(f);\r
294\r
295 f.setChecked(false);\r
296 expect(changeSpy.callCount).toBe(1);\r
297 expect(changeSpy.mostRecentCall.args[0]).toBe(f);\r
298 expect(changeSpy.mostRecentCall.args[1]).toBe(false);\r
299 expect(changeSpy.mostRecentCall.args[2]).toBe(true);\r
300\r
301 expect(uncheckSpy.callCount).toBe(1);\r
302 expect(uncheckSpy.mostRecentCall.args[0]).toBe(f);\r
303\r
304 expect(checkSpy).not.toHaveBeenCalled();\r
305 });\r
306 });\r
307 });\r
308 });\r
309\r
310 describe("check", function() {\r
311 describe("when not checked", function() {\r
312 beforeEach(function() {\r
313 makeGroup([{\r
314 value: 'red'\r
315 }, {\r
316 value: 'blue'\r
317 }])\r
318 });\r
319\r
320 it("should set the checked state", function() {\r
321 var f = fieldset.getAt(0);\r
322 f.check();\r
323 expect(f.getChecked()).toBe(true);\r
324 expect(f.isChecked()).toBe(true);\r
325 });\r
326\r
327 it("should fire change, check, not fire uncheck", function() {\r
328 var f = fieldset.getAt(0);\r
329 attachSpies(f);\r
330\r
331 f.check();\r
332 expect(changeSpy.callCount).toBe(1);\r
333 expect(changeSpy.mostRecentCall.args[0]).toBe(f);\r
334 expect(changeSpy.mostRecentCall.args[1]).toBe(true);\r
335 expect(changeSpy.mostRecentCall.args[2]).toBe(false);\r
336\r
337 expect(checkSpy.callCount).toBe(1);\r
338 expect(checkSpy.mostRecentCall.args[0]).toBe(f);\r
339\r
340 expect(uncheckSpy).not.toHaveBeenCalled();\r
341 });\r
342 });\r
343\r
344 describe("when checked", function() {\r
345 beforeEach(function() {\r
346 makeGroup([{\r
347 value: 'red',\r
348 checked: true\r
349 }, {\r
350 value: 'blue'\r
351 }])\r
352 });\r
353\r
354 it("should set the checked state", function() {\r
355 var f = fieldset.getAt(0);\r
356 f.check();\r
357 expect(f.getChecked()).toBe(true);\r
358 expect(f.isChecked()).toBe(true);\r
359 });\r
360\r
361 it("should not fire any events", function() {\r
362 var f = fieldset.getAt(0);\r
363 attachSpies(f);\r
364\r
365 f.check();\r
366 \r
367 expect(changeSpy).not.toHaveBeenCalled();\r
368 expect(checkSpy).not.toHaveBeenCalled();\r
369 expect(uncheckSpy).not.toHaveBeenCalled();\r
370 });\r
371 });\r
372 });\r
373\r
374 describe("uncheck", function() {\r
375 describe("when not checked", function() {\r
376 beforeEach(function() {\r
377 makeGroup([{\r
378 value: 'red'\r
379 }, {\r
380 value: 'blue'\r
381 }])\r
382 });\r
383\r
384 it("should set the checked state", function() {\r
385 var f = fieldset.getAt(0);\r
386 f.uncheck();\r
387 expect(f.getChecked()).toBe(false);\r
388 expect(f.isChecked()).toBe(false);\r
389 });\r
390\r
391 it("should not fire any events", function() {\r
392 var f = fieldset.getAt(0);\r
393 attachSpies(f);\r
394\r
395 f.uncheck();\r
396 \r
397 expect(changeSpy).not.toHaveBeenCalled();\r
398 expect(checkSpy).not.toHaveBeenCalled();\r
399 expect(uncheckSpy).not.toHaveBeenCalled();\r
400 });\r
401 });\r
402\r
403 describe("when checked", function() {\r
404 beforeEach(function() {\r
405 makeGroup([{\r
406 value: 'red',\r
407 checked: true\r
408 }, {\r
409 value: 'blue'\r
410 }])\r
411 });\r
412\r
413 it("should set the checked state", function() {\r
414 var f = fieldset.getAt(0);\r
415 f.uncheck();\r
416 expect(f.getChecked()).toBe(false);\r
417 expect(f.isChecked()).toBe(false);\r
418 });\r
419\r
420 it("should fire change, check, not fire uncheck", function() {\r
421 var f = fieldset.getAt(0);\r
422 attachSpies(f);\r
423\r
424 f.uncheck();\r
425 expect(changeSpy.callCount).toBe(1);\r
426 expect(changeSpy.mostRecentCall.args[0]).toBe(f);\r
427 expect(changeSpy.mostRecentCall.args[1]).toBe(false);\r
428 expect(changeSpy.mostRecentCall.args[2]).toBe(true);\r
429\r
430 expect(uncheckSpy.callCount).toBe(1);\r
431 expect(uncheckSpy.mostRecentCall.args[0]).toBe(f);\r
432\r
433 expect(checkSpy).not.toHaveBeenCalled();\r
434 });\r
435 });\r
436 });\r
437 });\r
438});\r