corrade-http-templates – Blame information for rev 62

Subversion Repositories:
Rev:
Rev Author Line No. Line
62 office 1 define( [
2 "qunit",
3 "jquery",
4 "./helper",
5 "ui/widgets/accordion"
6 ], function( QUnit, $, testHelper ) {
7  
8 var equalHeight = testHelper.equalHeight,
9 setupTeardown = testHelper.setupTeardown,
10 state = testHelper.state;
11  
12 QUnit.module( "accordion: options", setupTeardown() );
13  
14 QUnit.test( "{ active: default }", function( assert ) {
15 assert.expect( 2 );
16 var element = $( "#list1" ).accordion();
17 assert.equal( element.accordion( "option", "active" ), 0 );
18 state( assert, element, 1, 0, 0 );
19 } );
20  
21 QUnit.test( "{ active: null }", function( assert ) {
22 assert.expect( 2 );
23 var element = $( "#list1" ).accordion( {
24 active: null
25 } );
26 assert.equal( element.accordion( "option", "active" ), 0 );
27 state( assert, element, 1, 0, 0 );
28 } );
29  
30 QUnit.test( "{ active: false }", function( assert ) {
31 assert.expect( 7 );
32 var element = $( "#list1" ).accordion( {
33 active: false,
34 collapsible: true
35 } );
36 state( assert, element, 0, 0, 0 );
37 assert.equal( element.find( ".ui-accordion-header.ui-state-active" ).length, 0, "no headers selected" );
38 assert.equal( element.accordion( "option", "active" ), false );
39  
40 element.accordion( "option", "collapsible", false );
41 state( assert, element, 1, 0, 0 );
42 assert.equal( element.accordion( "option", "active" ), 0 );
43  
44 element.accordion( "destroy" );
45 element.accordion( {
46 active: false
47 } );
48 state( assert, element, 1, 0, 0 );
49 assert.strictEqual( element.accordion( "option", "active" ), 0 );
50 } );
51  
52 // http://bugs.jqueryui.com/ticket/11938
53 QUnit.test( "{ active: false, collapsible: true }", function( assert ) {
54 assert.expect( 1 );
55 var element = $( "#collapsible" ).accordion(),
56 height = element.outerHeight();
57  
58 element
59 .accordion( "destroy" )
60 .accordion( {
61 active: false,
62 collapsible: true
63 } )
64 .accordion( "option", "active", 0 );
65 assert.equal( element.outerHeight(), height );
66 } );
67  
68 QUnit.test( "{ active: Number }", function( assert ) {
69 assert.expect( 8 );
70 var element = $( "#list1" ).accordion( {
71 active: 2
72 } );
73 assert.equal( element.accordion( "option", "active" ), 2 );
74 state( assert, element, 0, 0, 1 );
75  
76 element.accordion( "option", "active", 0 );
77 assert.equal( element.accordion( "option", "active" ), 0 );
78 state( assert, element, 1, 0, 0 );
79  
80 element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "click" );
81 assert.equal( element.accordion( "option", "active" ), 1 );
82 state( assert, element, 0, 1, 0 );
83  
84 element.accordion( "option", "active", 10 );
85 assert.equal( element.accordion( "option", "active" ), 1 );
86 state( assert, element, 0, 1, 0 );
87 } );
88  
89 QUnit.test( "{ active: -Number }", function( assert ) {
90 assert.expect( 8 );
91 var element = $( "#list1" ).accordion( {
92 active: -1
93 } );
94 assert.equal( element.accordion( "option", "active" ), 2 );
95 state( assert, element, 0, 0, 1 );
96  
97 element.accordion( "option", "active", -2 );
98 assert.equal( element.accordion( "option", "active" ), 1 );
99 state( assert, element, 0, 1, 0 );
100  
101 element.accordion( "option", "active", -10 );
102 assert.equal( element.accordion( "option", "active" ), 1 );
103 state( assert, element, 0, 1, 0 );
104  
105 element.accordion( "option", "active", -3 );
106 assert.equal( element.accordion( "option", "active" ), 0 );
107 state( assert, element, 1, 0, 0 );
108 } );
109  
110 QUnit.test( "{ animate: false }", function( assert ) {
111 assert.expect( 3 );
112 var element = $( "#list1" ).accordion( {
113 animate: false
114 } ),
115 panels = element.find( ".ui-accordion-content" ),
116 animate = $.fn.animate;
117 $.fn.animate = function() {
118 assert.ok( false, ".animate() called" );
119 };
120  
121 assert.ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" );
122 element.accordion( "option", "active", 1 );
123 assert.ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" );
124 assert.ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" );
125 $.fn.animate = animate;
126 } );
127  
128 QUnit.test( "{ animate: Number }", function( assert ) {
129 var ready = assert.async();
130 assert.expect( 7 );
131 var element = $( "#list1" ).accordion( {
132 animate: 100
133 } ),
134 panels = element.find( ".ui-accordion-content" ),
135 animate = $.fn.animate;
136  
137 // Called twice (both panels)
138 $.fn.animate = function( props, options ) {
139 assert.equal( options.duration, 100, "correct duration" );
140 assert.equal( options.easing, undefined, "default easing" );
141 animate.apply( this, arguments );
142 };
143  
144 assert.ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" );
145 element.accordion( "option", "active", 1 );
146 panels.promise().done( function() {
147 assert.ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" );
148 assert.ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" );
149 $.fn.animate = animate;
150 ready();
151 } );
152 } );
153  
154 QUnit.test( "{ animate: String }", function( assert ) {
155 var ready = assert.async();
156 assert.expect( 7 );
157 var element = $( "#list1" ).accordion( {
158 animate: "linear"
159 } ),
160 panels = element.find( ".ui-accordion-content" ),
161 animate = $.fn.animate;
162  
163 // Called twice (both panels)
164 $.fn.animate = function( props, options ) {
165 assert.equal( options.duration, undefined, "default duration" );
166 assert.equal( options.easing, "linear", "correct easing" );
167 animate.apply( this, arguments );
168 };
169  
170 assert.ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" );
171 element.accordion( "option", "active", 1 );
172 panels.promise().done( function() {
173 assert.ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" );
174 assert.ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" );
175 $.fn.animate = animate;
176 ready();
177 } );
178 } );
179  
180 QUnit.test( "{ animate: {} }", function( assert ) {
181 var ready = assert.async();
182 assert.expect( 7 );
183 var element = $( "#list1" ).accordion( {
184 animate: {}
185 } ),
186 panels = element.find( ".ui-accordion-content" ),
187 animate = $.fn.animate;
188  
189 // Called twice (both panels)
190 $.fn.animate = function( props, options ) {
191 assert.equal( options.duration, undefined, "default duration" );
192 assert.equal( options.easing, undefined, "default easing" );
193 animate.apply( this, arguments );
194 };
195  
196 assert.ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" );
197 element.accordion( "option", "active", 1 );
198 panels.promise().done( function() {
199 assert.ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" );
200 assert.ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" );
201 $.fn.animate = animate;
202 ready();
203 } );
204 } );
205  
206 QUnit.test( "{ animate: { duration, easing } }", function( assert ) {
207 var ready = assert.async();
208 assert.expect( 7 );
209 var element = $( "#list1" ).accordion( {
210 animate: { duration: 100, easing: "linear" }
211 } ),
212 panels = element.find( ".ui-accordion-content" ),
213 animate = $.fn.animate;
214  
215 // Called twice (both panels)
216 $.fn.animate = function( props, options ) {
217 assert.equal( options.duration, 100, "correct duration" );
218 assert.equal( options.easing, "linear", "correct easing" );
219 animate.apply( this, arguments );
220 };
221  
222 assert.ok( panels.eq( 0 ).is( ":visible" ), "first panel visible" );
223 element.accordion( "option", "active", 1 );
224 panels.promise().done( function() {
225 assert.ok( panels.eq( 0 ).is( ":hidden" ), "first panel hidden" );
226 assert.ok( panels.eq( 1 ).is( ":visible" ), "second panel visible" );
227 $.fn.animate = animate;
228 ready();
229 } );
230 } );
231  
232 QUnit.test( "{ animate: { duration, easing } }, animate down", function( assert ) {
233 var ready = assert.async();
234 assert.expect( 7 );
235 var element = $( "#list1" ).accordion( {
236 active: 1,
237 animate: { duration: 100, easing: "linear" }
238 } ),
239 panels = element.find( ".ui-accordion-content" ),
240 animate = $.fn.animate;
241  
242 // Called twice (both panels)
243 $.fn.animate = function( props, options ) {
244 assert.equal( options.duration, 100, "correct duration" );
245 assert.equal( options.easing, "linear", "correct easing" );
246 animate.apply( this, arguments );
247 };
248  
249 assert.ok( panels.eq( 1 ).is( ":visible" ), "first panel visible" );
250 element.accordion( "option", "active", 0 );
251 panels.promise().done( function() {
252 assert.ok( panels.eq( 1 ).is( ":hidden" ), "first panel hidden" );
253 assert.ok( panels.eq( 0 ).is( ":visible" ), "second panel visible" );
254 $.fn.animate = animate;
255 ready();
256 } );
257 } );
258  
259 QUnit.test( "{ animate: { duration, easing, down } }, animate down", function( assert ) {
260 var ready = assert.async();
261 assert.expect( 7 );
262 var element = $( "#list1" ).accordion( {
263 active: 1,
264 animate: {
265 duration: 100,
266 easing: "linear",
267 down: {
268 easing: "swing"
269 }
270 }
271 } ),
272 panels = element.find( ".ui-accordion-content" ),
273 animate = $.fn.animate;
274  
275 // Called twice (both panels)
276 $.fn.animate = function( props, options ) {
277 assert.equal( options.duration, 100, "correct duration" );
278 assert.equal( options.easing, "swing", "correct easing" );
279 animate.apply( this, arguments );
280 };
281  
282 assert.ok( panels.eq( 1 ).is( ":visible" ), "first panel visible" );
283 element.accordion( "option", "active", 0 );
284 panels.promise().done( function() {
285 assert.ok( panels.eq( 1 ).is( ":hidden" ), "first panel hidden" );
286 assert.ok( panels.eq( 0 ).is( ":visible" ), "second panel visible" );
287 $.fn.animate = animate;
288 ready();
289 } );
290 } );
291  
292 QUnit.test( "{ collapsible: false }", function( assert ) {
293 assert.expect( 4 );
294 var element = $( "#list1" ).accordion( {
295 active: 1
296 } );
297 element.accordion( "option", "active", false );
298 assert.equal( element.accordion( "option", "active" ), 1 );
299 state( assert, element, 0, 1, 0 );
300  
301 element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "click" );
302 assert.equal( element.accordion( "option", "active" ), 1 );
303 state( assert, element, 0, 1, 0 );
304 } );
305  
306 QUnit.test( "{ collapsible: true }", function( assert ) {
307 assert.expect( 6 );
308 var element = $( "#list1" ).accordion( {
309 active: 1,
310 collapsible: true
311 } );
312  
313 element.accordion( "option", "active", false );
314 assert.equal( element.accordion( "option", "active" ), false );
315 state( assert, element, 0, 0, 0 );
316  
317 element.accordion( "option", "active", 1 );
318 assert.equal( element.accordion( "option", "active" ), 1 );
319 state( assert, element, 0, 1, 0 );
320  
321 element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "click" );
322 assert.equal( element.accordion( "option", "active" ), false );
323 state( assert, element, 0, 0, 0 );
324 } );
325  
326 QUnit.test( "{ event: null }", function( assert ) {
327 assert.expect( 5 );
328 var element = $( "#list1" ).accordion( {
329 event: null
330 } );
331 state( assert, element, 1, 0, 0 );
332  
333 element.accordion( "option", "active", 1 );
334 assert.equal( element.accordion( "option", "active" ), 1 );
335 state( assert, element, 0, 1, 0 );
336  
337 // Ensure default click handler isn't bound
338 element.find( ".ui-accordion-header" ).eq( 2 ).trigger( "click" );
339 assert.equal( element.accordion( "option", "active" ), 1 );
340 state( assert, element, 0, 1, 0 );
341 } );
342  
343 QUnit.test( "{ event: custom }", function( assert ) {
344 assert.expect( 11 );
345 var element = $( "#list1" ).accordion( {
346 event: "custom1 custom2"
347 } );
348 state( assert, element, 1, 0, 0 );
349  
350 element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom1" );
351 assert.equal( element.accordion( "option", "active" ), 1 );
352 state( assert, element, 0, 1, 0 );
353  
354 // Ensure default click handler isn't bound
355 element.find( ".ui-accordion-header" ).eq( 2 ).trigger( "click" );
356 assert.equal( element.accordion( "option", "active" ), 1 );
357 state( assert, element, 0, 1, 0 );
358  
359 element.find( ".ui-accordion-header" ).eq( 2 ).trigger( "custom2" );
360 assert.equal( element.accordion( "option", "active" ), 2 );
361 state( assert, element, 0, 0, 1 );
362  
363 element.accordion( "option", "event", "custom3" );
364  
365 // Ensure old event handlers are unbound
366 element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom1" );
367 element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom2" );
368 assert.equal( element.accordion( "option", "active" ), 2 );
369 state( assert, element, 0, 0, 1 );
370  
371 element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom3" );
372 assert.equal( element.accordion( "option", "active" ), 1 );
373 state( assert, element, 0, 1, 0 );
374 } );
375  
376 QUnit.test( "{ header: default }", function( assert ) {
377 assert.expect( 2 );
378  
379 // Default: > li > :first-child,> :not(li):even
380 // > :not(li):even
381 state( assert, $( "#list1" ).accordion(), 1, 0, 0 );
382  
383 // > li > :first-child
384 state( assert, $( "#navigation" ).accordion(), 1, 0, 0 );
385 } );
386  
387 QUnit.test( "{ header: custom }", function( assert ) {
388 assert.expect( 6 );
389 var element = $( "#navigationWrapper" ).accordion( {
390 header: "h2"
391 } );
392 element.find( "h2" ).each( function() {
393 assert.hasClasses( this, "ui-accordion-header" );
394 } );
395 assert.equal( element.find( ".ui-accordion-header" ).length, 3 );
396 state( assert, element, 1, 0, 0 );
397 element.accordion( "option", "active", 2 );
398 state( assert, element, 0, 0, 1 );
399 } );
400  
401 QUnit.test( "{ heightStyle: 'auto' }", function( assert ) {
402 assert.expect( 3 );
403 var element = $( "#navigation" ).accordion( { heightStyle: "auto" } );
404 equalHeight( assert, element, 105 );
405 } );
406  
407 QUnit.test( "{ heightStyle: 'content' }", function( assert ) {
408 assert.expect( 3 );
409 var element = $( "#navigation" ).accordion( { heightStyle: "content" } ),
410 sizes = element.find( ".ui-accordion-content" ).map( function() {
411 return $( this ).height();
412 } ).get();
413 assert.equal( sizes[ 0 ], 75 );
414 assert.equal( sizes[ 1 ], 105 );
415 assert.equal( sizes[ 2 ], 45 );
416 } );
417  
418 QUnit.test( "{ heightStyle: 'fill' }", function( assert ) {
419 assert.expect( 3 );
420 $( "#navigationWrapper" ).height( 500 );
421 var element = $( "#navigation" ).accordion( { heightStyle: "fill" } );
422 equalHeight( assert, element, 455 );
423 } );
424  
425 QUnit.test( "{ heightStyle: 'fill' } with sibling", function( assert ) {
426 assert.expect( 3 );
427 $( "#navigationWrapper" ).height( 500 );
428 $( "<p>Lorem Ipsum</p>" )
429 .css( {
430 height: 50,
431 marginTop: 20,
432 marginBottom: 30
433 } )
434 .prependTo( "#navigationWrapper" );
435 var element = $( "#navigation" ).accordion( { heightStyle: "fill" } );
436 equalHeight( assert, element, 355 );
437 } );
438  
439 QUnit.test( "{ heightStyle: 'fill' } with multiple siblings", function( assert ) {
440 assert.expect( 3 );
441 $( "#navigationWrapper" ).height( 500 );
442 $( "<p>Lorem Ipsum</p>" )
443 .css( {
444 height: 50,
445 marginTop: 20,
446 marginBottom: 30
447 } )
448 .prependTo( "#navigationWrapper" );
449 $( "<p>Lorem Ipsum</p>" )
450 .css( {
451 height: 50,
452 marginTop: 20,
453 marginBottom: 30,
454 position: "absolute"
455 } )
456 .prependTo( "#navigationWrapper" );
457 $( "<p>Lorem Ipsum</p>" )
458 .css( {
459 height: 25,
460 marginTop: 10,
461 marginBottom: 15
462 } )
463 .prependTo( "#navigationWrapper" );
464 var element = $( "#navigation" ).accordion( { heightStyle: "fill" } );
465 equalHeight( assert, element, 305 );
466 } );
467  
468 QUnit.test( "{ icons: false }", function( assert ) {
469 assert.expect( 8 );
470 var element = $( "#list1" );
471 function icons( on ) {
472 assert.deepEqual( element.find( "span.ui-icon" ).length, on ? 3 : 0 );
473 assert.deepEqual( element.find( ".ui-accordion-header.ui-accordion-icons" ).length, on ? 3 : 0 );
474 }
475 element.accordion();
476 icons( true );
477 element.accordion( "destroy" ).accordion( {
478 icons: false
479 } );
480 icons( false );
481 element.accordion( "option", "icons", { header: "foo", activeHeader: "bar" } );
482 icons( true );
483 element.accordion( "option", "icons", false );
484 icons( false );
485 } );
486  
487 QUnit.test( "{ icons: hash }", function( assert ) {
488 assert.expect( 3 );
489 var element = $( "#list1" ).accordion( {
490 icons: { activeHeader: "a1", header: "h1" }
491 } );
492 assert.hasClasses( element.find( ".ui-accordion-header.ui-state-active span.ui-icon" ), "a1" );
493 element.accordion( "option", "icons", { activeHeader: "a2", header: "h2" } );
494 assert.lacksClasses( element.find( ".ui-accordion-header.ui-state-active span.ui-icon" ), "a1" );
495 assert.hasClasses( element.find( ".ui-accordion-header.ui-state-active span.ui-icon" ), "a2" );
496 } );
497  
498 } );