collapse.js 19 KB
Newer Older
1
$(function () {
2
  'use strict'
3

4
  QUnit.module('collapse plugin')
XhmikosR's avatar
XhmikosR committed
5

6
  QUnit.test('should be defined on jquery object', function (assert) {
7
    assert.expect(1)
8
    assert.ok($(document.body).collapse, 'collapse method is defined')
XhmikosR's avatar
XhmikosR committed
9
10
  })

11
  QUnit.module('collapse', {
12
    beforeEach: function () {
13
14
15
      // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
      $.fn.bootstrapCollapse = $.fn.collapse.noConflict()
    },
16
    afterEach: function () {
17
18
19
20
21
      $.fn.collapse = $.fn.bootstrapCollapse
      delete $.fn.bootstrapCollapse
    }
  })

22
  QUnit.test('should provide no conflict', function (assert) {
23
    assert.expect(1)
24
    assert.strictEqual($.fn.collapse, undefined, 'collapse was set back to undefined (org value)')
25
26
  })

27
28
29
30
31
32
33
34
35
36
37
38
  QUnit.test('should throw explicit error on undefined method', function (assert) {
    assert.expect(1)
    var $el = $('<div/>')
    $el.bootstrapCollapse()
    try {
      $el.bootstrapCollapse('noMethod')
    }
    catch (err) {
      assert.strictEqual(err.message, 'No method named "noMethod"')
    }
  })

39
  QUnit.test('should return jquery collection containing the element', function (assert) {
40
    assert.expect(2)
41
42
    var $el = $('<div/>')
    var $collapse = $el.bootstrapCollapse()
43
44
    assert.ok($collapse instanceof $, 'returns jquery collection')
    assert.strictEqual($collapse[0], $el[0], 'collection contains element')
XhmikosR's avatar
XhmikosR committed
45
46
  })

47
  QUnit.test('should show a collapsed element', function (assert) {
48
    assert.expect(2)
49
50
    var $el = $('<div class="collapse"/>').bootstrapCollapse('show')

Starsam80's avatar
Starsam80 committed
51
    assert.ok($el.hasClass('show'), 'has class "show"')
52
    assert.ok(!/height/i.test($el.attr('style')), 'has height reset')
XhmikosR's avatar
XhmikosR committed
53
54
  })

55
56
57
58
  QUnit.test('should collapse only the first collapse', function (assert) {
    assert.expect(2)
    var html = [
      '<div class="panel-group" id="accordion1">',
59
60
61
      '<div class="panel">',
      '<div id="collapse1" class="collapse"/>',
      '</div>',
62
63
      '</div>',
      '<div class="panel-group" id="accordion2">',
64
      '<div class="panel">',
Starsam80's avatar
Starsam80 committed
65
      '<div id="collapse2" class="collapse show"/>',
66
      '</div>',
67
68
69
70
71
72
73
      '</div>'
    ].join('')
    $(html).appendTo('#qunit-fixture')
    var $el1 = $('#collapse1')
    var $el2 = $('#collapse2')
    $el1.bootstrapCollapse('show')

Starsam80's avatar
Starsam80 committed
74
75
    assert.ok($el1.hasClass('show'))
    assert.ok($el2.hasClass('show'))
76
77
  })

78
  QUnit.test('should hide a collapsed element', function (assert) {
79
    assert.expect(1)
80
81
    var $el = $('<div class="collapse"/>').bootstrapCollapse('hide')

Starsam80's avatar
Starsam80 committed
82
    assert.ok(!$el.hasClass('show'), 'does not have class "show"')
XhmikosR's avatar
XhmikosR committed
83
84
  })

85
  QUnit.test('should not fire shown when show is prevented', function (assert) {
86
    assert.expect(1)
87
    var done = assert.async()
88

XhmikosR's avatar
XhmikosR committed
89
90
    $('<div class="collapse"/>')
      .on('show.bs.collapse', function (e) {
91
        e.preventDefault()
92
        assert.ok(true, 'show event fired')
93
        done()
94
      })
XhmikosR's avatar
XhmikosR committed
95
      .on('shown.bs.collapse', function () {
96
        assert.ok(false, 'shown event fired')
97
      })
98
      .bootstrapCollapse('show')
XhmikosR's avatar
XhmikosR committed
99
100
  })

101
  QUnit.test('should reset style to auto after finishing opening collapse', function (assert) {
102
    assert.expect(2)
103
    var done = assert.async()
104

XhmikosR's avatar
XhmikosR committed
105
106
    $('<div class="collapse" style="height: 0px"/>')
      .on('show.bs.collapse', function () {
107
        assert.strictEqual(this.style.height, '0px', 'height is 0px')
108
      })
XhmikosR's avatar
XhmikosR committed
109
      .on('shown.bs.collapse', function () {
110
        assert.strictEqual(this.style.height, '', 'height is auto')
111
        done()
112
      })
113
      .bootstrapCollapse('show')
XhmikosR's avatar
XhmikosR committed
114
  })
115

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
  QUnit.test('should reset style to auto after finishing closing collapse', function (assert) {
    assert.expect(1)
    var done = assert.async()

    $('<div class="collapse"/>')
      .on('shown.bs.collapse', function () {
        $(this).bootstrapCollapse('hide')
      })
      .on('hidden.bs.collapse', function () {
        assert.strictEqual(this.style.height, '', 'height is auto')
        done()
      })
      .bootstrapCollapse('show')
  })

131
  QUnit.test('should remove "collapsed" class from target when collapse is shown', function (assert) {
132
    assert.expect(1)
133
    var done = assert.async()
134

135
    var $target = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
136

137
138
    $('<div id="test1"/>')
      .appendTo('#qunit-fixture')
139
      .on('shown.bs.collapse', function () {
140
        assert.ok(!$target.hasClass('collapsed'), 'target does not have collapsed class')
141
        done()
142
143
      })

144
    $target.trigger('click')
XhmikosR's avatar
XhmikosR committed
145
  })
146

147
  QUnit.test('should add "collapsed" class to target when collapse is hidden', function (assert) {
148
    assert.expect(1)
149
    var done = assert.async()
150

151
    var $target = $('<a role="button" data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
152

Starsam80's avatar
Starsam80 committed
153
    $('<div id="test1" class="show"/>')
154
      .appendTo('#qunit-fixture')
155
      .on('hidden.bs.collapse', function () {
156
        assert.ok($target.hasClass('collapsed'), 'target has collapsed class')
157
        done()
158
159
      })

160
    $target.trigger('click')
XhmikosR's avatar
XhmikosR committed
161
  })
162

163
  QUnit.test('should remove "collapsed" class from all triggers targeting the collapse when the collapse is shown', function (assert) {
164
    assert.expect(2)
165
    var done = assert.async()
166

167
168
    var $target = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
    var $alt = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
169
170
171
172
173
174
175
176
177

    $('<div id="test1"/>')
      .appendTo('#qunit-fixture')
      .on('shown.bs.collapse', function () {
        assert.ok(!$target.hasClass('collapsed'), 'target trigger does not have collapsed class')
        assert.ok(!$alt.hasClass('collapsed'), 'alt trigger does not have collapsed class')
        done()
      })

178
    $target.trigger('click')
179
180
181
  })

  QUnit.test('should add "collapsed" class to all triggers targeting the collapse when the collapse is hidden', function (assert) {
182
    assert.expect(2)
183
184
    var done = assert.async()

185
186
    var $target = $('<a role="button" data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
    var $alt = $('<a role="button" data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
187

Starsam80's avatar
Starsam80 committed
188
    $('<div id="test1" class="show"/>')
189
190
191
192
      .appendTo('#qunit-fixture')
      .on('hidden.bs.collapse', function () {
        assert.ok($target.hasClass('collapsed'), 'target has collapsed class')
        assert.ok($alt.hasClass('collapsed'), 'alt trigger has collapsed class')
193
        done()
194
195
      })

196
    $target.trigger('click')
XhmikosR's avatar
XhmikosR committed
197
  })
198

199
  QUnit.test('should not close a collapse when initialized with "show" option if already shown', function (assert) {
200
    assert.expect(0)
201
    var done = assert.async()
202

Starsam80's avatar
Starsam80 committed
203
    var $test = $('<div id="test1" class="show"/>')
204
205
      .appendTo('#qunit-fixture')
      .on('hide.bs.collapse', function () {
206
        assert.ok(false)
207
208
209
210
      })

    $test.bootstrapCollapse('show')

211
    setTimeout(done, 0)
212
213
  })

214
  QUnit.test('should open a collapse when initialized with "show" option if not already shown', function (assert) {
215
    assert.expect(1)
216
    var done = assert.async()
217
218
219
220

    var $test = $('<div id="test1" />')
      .appendTo('#qunit-fixture')
      .on('show.bs.collapse', function () {
221
        assert.ok(true)
222
223
224
225
      })

    $test.bootstrapCollapse('show')

226
    setTimeout(done, 0)
227
228
  })

229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
  QUnit.test('should not show a collapse when initialized with "hide" option if already hidden', function (assert) {
    assert.expect(0)
    var done = assert.async()

    $('<div class="collapse"></div>')
      .appendTo('#qunit-fixture')
      .on('show.bs.collapse', function () {
        assert.ok(false, 'showing a previously-uninitialized hidden collapse when the "hide" method is called')
      })
      .bootstrapCollapse('hide')

    setTimeout(done, 0)
  })

  QUnit.test('should hide a collapse when initialized with "hide" option if not already hidden', function (assert) {
    assert.expect(1)
    var done = assert.async()

Starsam80's avatar
Starsam80 committed
247
    $('<div class="collapse show"></div>')
248
249
250
251
252
253
254
255
256
      .appendTo('#qunit-fixture')
      .on('hide.bs.collapse', function () {
        assert.ok(true, 'hiding a previously-uninitialized shown collapse when the "hide" method is called')
      })
      .bootstrapCollapse('hide')

    setTimeout(done, 0)
  })

257
  QUnit.test('should remove "collapsed" class from active accordion target', function (assert) {
258
    assert.expect(3)
259
    var done = assert.async()
260

Johann-S's avatar
Johann-S committed
261
262
263
264
    var accordionHTML = '<div id="accordion">'
        + '<div class="card"/>'
        + '<div class="card"/>'
        + '<div class="card"/>'
Heinrich Fenkart's avatar
Heinrich Fenkart committed
265
        + '</div>'
Johann-S's avatar
Johann-S committed
266
    var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.card')
267

268
    var $target1 = $('<a role="button" data-toggle="collapse" href="#body1" />').appendTo($groups.eq(0))
269

270
    $('<div id="body1" class="show" data-parent="#accordion"/>').appendTo($groups.eq(0))
271

272
    var $target2 = $('<a class="collapsed" data-toggle="collapse" role="button" href="#body2" />').appendTo($groups.eq(1))
273

274
    $('<div id="body2" data-parent="#accordion"/>').appendTo($groups.eq(1))
275

276
    var $target3 = $('<a class="collapsed" data-toggle="collapse" role="button" href="#body3" />').appendTo($groups.eq(2))
277

278
    $('<div id="body3" data-parent="#accordion"/>')
279
      .appendTo($groups.eq(2))
280
      .on('shown.bs.collapse', function () {
281
282
283
        assert.ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"')
        assert.ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"')
        assert.ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"')
284

285
        done()
286
287
      })

288
    $target3.trigger('click')
XhmikosR's avatar
XhmikosR committed
289
  })
290

291
  QUnit.test('should allow dots in data-parent', function (assert) {
292
    assert.expect(3)
293
    var done = assert.async()
294

Johann-S's avatar
Johann-S committed
295
296
297
298
    var accordionHTML = '<div class="accordion">'
        + '<div class="card"/>'
        + '<div class="card"/>'
        + '<div class="card"/>'
Heinrich Fenkart's avatar
Heinrich Fenkart committed
299
        + '</div>'
Johann-S's avatar
Johann-S committed
300
    var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.card')
301

302
    var $target1 = $('<a role="button" data-toggle="collapse" href="#body1"/>').appendTo($groups.eq(0))
303

304
    $('<div id="body1" class="show" data-parent=".accordion"/>').appendTo($groups.eq(0))
305

306
    var $target2 = $('<a class="collapsed" data-toggle="collapse" role="button" href="#body2"/>').appendTo($groups.eq(1))
307

308
    $('<div id="body2" data-parent=".accordion"/>').appendTo($groups.eq(1))
309

310
    var $target3 = $('<a class="collapsed" data-toggle="collapse" role="button" href="#body3"/>').appendTo($groups.eq(2))
311

312
    $('<div id="body3" data-parent=".accordion"/>')
313
      .appendTo($groups.eq(2))
314
      .on('shown.bs.collapse', function () {
315
316
317
        assert.ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"')
        assert.ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"')
        assert.ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"')
318

319
        done()
320
321
      })

322
    $target3.trigger('click')
XhmikosR's avatar
XhmikosR committed
323
324
  })

325
  QUnit.test('should set aria-expanded="true" on target when collapse is shown', function (assert) {
326
    assert.expect(1)
327
    var done = assert.async()
Patrick H. Lauke's avatar
Patrick H. Lauke committed
328

329
    var $target = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1" aria-expanded="false"/>').appendTo('#qunit-fixture')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
330
331
332

    $('<div id="test1"/>')
      .appendTo('#qunit-fixture')
333
      .on('shown.bs.collapse', function () {
334
        assert.strictEqual($target.attr('aria-expanded'), 'true', 'aria-expanded on target is "true"')
335
        done()
Patrick H. Lauke's avatar
Patrick H. Lauke committed
336
337
      })

338
    $target.trigger('click')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
339
340
  })

341
  QUnit.test('should set aria-expanded="false" on target when collapse is hidden', function (assert) {
342
    assert.expect(1)
343
    var done = assert.async()
Patrick H. Lauke's avatar
Patrick H. Lauke committed
344

345
    var $target = $('<a role="button" data-toggle="collapse" href="#test1" aria-expanded="true"/>').appendTo('#qunit-fixture')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
346

Starsam80's avatar
Starsam80 committed
347
    $('<div id="test1" class="show"/>')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
348
      .appendTo('#qunit-fixture')
349
      .on('hidden.bs.collapse', function () {
350
        assert.strictEqual($target.attr('aria-expanded'), 'false', 'aria-expanded on target is "false"')
351
        done()
Patrick H. Lauke's avatar
Patrick H. Lauke committed
352
353
      })

354
    $target.trigger('click')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
355
356
  })

357
  QUnit.test('should set aria-expanded="true" on all triggers targeting the collapse when the collapse is shown', function (assert) {
358
    assert.expect(2)
359
    var done = assert.async()
Patrick H. Lauke's avatar
Patrick H. Lauke committed
360

361
362
    var $target = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1" aria-expanded="false"/>').appendTo('#qunit-fixture')
    var $alt = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1" aria-expanded="false"/>').appendTo('#qunit-fixture')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
363
364
365

    $('<div id="test1"/>')
      .appendTo('#qunit-fixture')
366
      .on('shown.bs.collapse', function () {
367
368
        assert.strictEqual($target.attr('aria-expanded'), 'true', 'aria-expanded on target is "true"')
        assert.strictEqual($alt.attr('aria-expanded'), 'true', 'aria-expanded on alt is "true"')
369
        done()
Patrick H. Lauke's avatar
Patrick H. Lauke committed
370
371
      })

372
    $target.trigger('click')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
373
374
  })

375
  QUnit.test('should set aria-expanded="false" on all triggers targeting the collapse when the collapse is hidden', function (assert) {
376
    assert.expect(2)
377
    var done = assert.async()
Patrick H. Lauke's avatar
Patrick H. Lauke committed
378

379
380
    var $target = $('<a role="button" data-toggle="collapse" href="#test1" aria-expanded="true"/>').appendTo('#qunit-fixture')
    var $alt = $('<a role="button" data-toggle="collapse" href="#test1" aria-expanded="true"/>').appendTo('#qunit-fixture')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
381

Starsam80's avatar
Starsam80 committed
382
    $('<div id="test1" class="show"/>')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
383
      .appendTo('#qunit-fixture')
384
      .on('hidden.bs.collapse', function () {
385
386
        assert.strictEqual($target.attr('aria-expanded'), 'false', 'aria-expanded on target is "false"')
        assert.strictEqual($alt.attr('aria-expanded'), 'false', 'aria-expanded on alt is "false"')
387
        done()
Patrick H. Lauke's avatar
Patrick H. Lauke committed
388
389
      })

390
    $target.trigger('click')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
391
392
  })

393
  QUnit.test('should change aria-expanded from active accordion target to "false" and set the newly active one to "true"', function (assert) {
394
    assert.expect(3)
395
    var done = assert.async()
Patrick H. Lauke's avatar
Patrick H. Lauke committed
396

Johann-S's avatar
Johann-S committed
397
398
399
400
    var accordionHTML = '<div id="accordion">'
        + '<div class="card"/>'
        + '<div class="card"/>'
        + '<div class="card"/>'
Patrick H. Lauke's avatar
Patrick H. Lauke committed
401
        + '</div>'
Johann-S's avatar
Johann-S committed
402
    var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.card')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
403

404
    var $target1 = $('<a role="button" data-toggle="collapse" href="#body1"/>').appendTo($groups.eq(0))
Patrick H. Lauke's avatar
Patrick H. Lauke committed
405

406
    $('<div id="body1" aria-expanded="true" class="show" data-parent="#accordion"/>').appendTo($groups.eq(0))
Patrick H. Lauke's avatar
Patrick H. Lauke committed
407

408
    var $target2 = $('<a role="button" data-toggle="collapse" href="#body2" class="collapsed" aria-expanded="false" />').appendTo($groups.eq(1))
Patrick H. Lauke's avatar
Patrick H. Lauke committed
409

410
    $('<div id="body2" aria-expanded="false" data-parent="#accordion"/>').appendTo($groups.eq(1))
Patrick H. Lauke's avatar
Patrick H. Lauke committed
411

412
    var $target3 = $('<a class="collapsed" data-toggle="collapse" role="button" href="#body3"/>').appendTo($groups.eq(2))
Patrick H. Lauke's avatar
Patrick H. Lauke committed
413

414
    $('<div id="body3" aria-expanded="false" data-parent="#accordion"/>')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
415
      .appendTo($groups.eq(2))
416
      .on('shown.bs.collapse', function () {
417
418
419
        assert.strictEqual($target1.attr('aria-expanded'), 'false', 'inactive target 1 has aria-expanded="false"')
        assert.strictEqual($target2.attr('aria-expanded'), 'false', 'inactive target 2 has aria-expanded="false"')
        assert.strictEqual($target3.attr('aria-expanded'), 'true', 'active target 3 has aria-expanded="false"')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
420

421
        done()
Patrick H. Lauke's avatar
Patrick H. Lauke committed
422
423
      })

424
    $target3.trigger('click')
Patrick H. Lauke's avatar
Patrick H. Lauke committed
425
426
  })

427
  QUnit.test('should not fire show event if show is prevented because other element is still transitioning', function (assert) {
428
    assert.expect(1)
429
    var done = assert.async()
430
431

    var accordionHTML = '<div id="accordion">'
Johann-S's avatar
Johann-S committed
432
433
        + '<div class="card"/>'
        + '<div class="card"/>'
434
435
        + '</div>'
    var showFired = false
Johann-S's avatar
Johann-S committed
436
    var $groups   = $(accordionHTML).appendTo('#qunit-fixture').find('.card')
437

438
    var $target1 = $('<a role="button" data-toggle="collapse" href="#body1"/>').appendTo($groups.eq(0))
439

440
    $('<div id="body1" class="collapse" data-parent="#accordion"/>')
441
442
443
444
445
      .appendTo($groups.eq(0))
      .on('show.bs.collapse', function () {
        showFired = true
      })

446
447
    var $target2 = $('<a role="button" data-toggle="collapse" href="#body2"/>').appendTo($groups.eq(1))
    var $body2   = $('<div id="body2" class="collapse" data-parent="#accordion"/>').appendTo($groups.eq(1))
448

449
    $target2.trigger('click')
450
451

    $body2
Starsam80's avatar
Starsam80 committed
452
      .toggleClass('show collapsing')
fat's avatar
fat committed
453
      .data('bs.collapse')._isTransitioning = 1
454

455
    $target1.trigger('click')
456
457

    setTimeout(function () {
458
      assert.ok(!showFired, 'show event did not fire')
459
      done()
460
461
462
    }, 1)
  })

463
  QUnit.test('should add "collapsed" class to target when collapse is hidden via manual invocation', function (assert) {
464
    assert.expect(1)
465
    var done = assert.async()
466

467
    var $target = $('<a role="button" data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
468

Starsam80's avatar
Starsam80 committed
469
    $('<div id="test1" class="show"/>')
470
471
      .appendTo('#qunit-fixture')
      .on('hidden.bs.collapse', function () {
472
        assert.ok($target.hasClass('collapsed'))
473
        done()
474
475
476
477
      })
      .bootstrapCollapse('hide')
  })

478
  QUnit.test('should remove "collapsed" class from target when collapse is shown via manual invocation', function (assert) {
479
    assert.expect(1)
480
    var done = assert.async()
481

482
    var $target = $('<a role="button" data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
483
484
485
486

    $('<div id="test1"/>')
      .appendTo('#qunit-fixture')
      .on('shown.bs.collapse', function () {
487
        assert.ok(!$target.hasClass('collapsed'))
488
        done()
489
490
491
492
      })
      .bootstrapCollapse('show')
  })

Johann-S's avatar
Johann-S committed
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
  QUnit.test('should allow accordion to use children other than card', function (assert) {
    assert.expect(2)
    var done = assert.async()
    var accordionHTML = '<div id="accordion" data-children=".item">'
        + '<div class="item">'
        + '<a id="linkTrigger" data-parent="#accordion" data-toggle="collapse" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne"></a>'
        + '<div id="collapseOne" class="collapse" role="tabpanel" aria-labelledby="headingThree"></div>'
        + '</div>'
        + '<div class="item">'
        + '<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo"></a>'
        + '<div id="collapseTwo" class="collapse show" role="tabpanel" aria-labelledby="headingTwo"></div>'
        + '</div>'
        + '</div>'

    $(accordionHTML).appendTo('#qunit-fixture')
    var $target = $('#linkTrigger')
    $('#collapseOne').on('shown.bs.collapse', function () {
      assert.ok($(this).hasClass('show'))
      assert.ok(!$('#collapseTwo').hasClass('show'))
      done()
    })
    $target.trigger($.Event('click'))
  })
516
517

  QUnit.test('should not prevent event for input', function (assert) {
518
    assert.expect(3)
519
520
521
522
523
524
    var done = assert.async()
    var $target = $('<input type="checkbox" data-toggle="collapse" data-target="#collapsediv1" />').appendTo('#qunit-fixture')

    $('<div id="collapsediv1"/>')
      .appendTo('#qunit-fixture')
      .on('shown.bs.collapse', function () {
525
        assert.ok($(this).hasClass('show'))
526
527
528
529
530
531
532
        assert.ok($target.attr('aria-expanded') === 'true')
        assert.ok($target.prop('checked'))
        done()
      })

    $target.trigger($.Event('click'))
  })
Heinrich Fenkart's avatar
Heinrich Fenkart committed
533
})