collapse.js 5.13 KB
Newer Older
1
2
$(function () {

XhmikosR's avatar
XhmikosR committed
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  module('collapse')

  test('should provide no conflict', function () {
    var collapse = $.fn.collapse.noConflict()
    ok(!$.fn.collapse, 'collapse was set back to undefined (org value)')
    $.fn.collapse = collapse
  })

  test('should be defined on jquery object', function () {
    ok($(document.body).collapse, 'collapse method is defined')
  })

  test('should return element', function () {
    ok($(document.body).collapse()[0] == document.body, 'document.body returned')
  })

  test('should show a collapsed element', function () {
    var el = $('<div class="collapse"></div>').collapse('show')
    ok(el.hasClass('in'), 'has class in')
22
    ok(!/height/.test(el.attr('style')), 'has height reset')
XhmikosR's avatar
XhmikosR committed
23
24
25
26
27
28
29
30
31
32
33
34
35
  })

  test('should hide a collapsed element', function () {
    var el = $('<div class="collapse"></div>').collapse('hide')
    ok(!el.hasClass('in'), 'does not have class in')
    ok(/height/.test(el.attr('style')), 'has height set')
  })

  test('should not fire shown when show is prevented', function () {
    $.support.transition = false
    stop()
    $('<div class="collapse"/>')
      .on('show.bs.collapse', function (e) {
36
37
38
        e.preventDefault()
        ok(true)
        start()
39
      })
XhmikosR's avatar
XhmikosR committed
40
      .on('shown.bs.collapse', function () {
41
        ok(false)
42
      })
XhmikosR's avatar
XhmikosR committed
43
44
45
46
47
48
49
50
51
      .collapse('show')
  })

  test('should reset style to auto after finishing opening collapse', function () {
    $.support.transition = false
    stop()
    $('<div class="collapse" style="height: 0px"/>')
      .on('show.bs.collapse', function () {
        ok(this.style.height == '0px')
52
      })
XhmikosR's avatar
XhmikosR committed
53
      .on('shown.bs.collapse', function () {
54
        ok(this.style.height === '')
XhmikosR's avatar
XhmikosR committed
55
        start()
56
      })
XhmikosR's avatar
XhmikosR committed
57
58
      .collapse('show')
  })
59

XhmikosR's avatar
XhmikosR committed
60
61
62
  test('should add active class to target when collapse shown', function () {
    $.support.transition = false
    stop()
63

XhmikosR's avatar
XhmikosR committed
64
65
    var target = $('<a data-toggle="collapse" href="#test1"></a>')
      .appendTo($('#qunit-fixture'))
66

XhmikosR's avatar
XhmikosR committed
67
    $('<div id="test1"></div>')
XhmikosR's avatar
XhmikosR committed
68
69
70
71
      .appendTo($('#qunit-fixture'))
      .on('show.bs.collapse', function () {
        ok(!target.hasClass('collapsed'))
        start()
72
73
      })

XhmikosR's avatar
XhmikosR committed
74
75
    target.click()
  })
76

XhmikosR's avatar
XhmikosR committed
77
78
79
  test('should remove active class to target when collapse hidden', function () {
    $.support.transition = false
    stop()
80

XhmikosR's avatar
XhmikosR committed
81
82
    var target = $('<a data-toggle="collapse" href="#test1"></a>')
      .appendTo($('#qunit-fixture'))
83

XhmikosR's avatar
XhmikosR committed
84
    $('<div id="test1" class="in"></div>')
XhmikosR's avatar
XhmikosR committed
85
86
87
88
      .appendTo($('#qunit-fixture'))
      .on('hide.bs.collapse', function () {
        ok(target.hasClass('collapsed'))
        start()
89
90
      })

XhmikosR's avatar
XhmikosR committed
91
92
    target.click()
  })
93

XhmikosR's avatar
XhmikosR committed
94
95
96
  test('should remove active class from inactive accordion targets', function () {
    $.support.transition = false
    stop()
97

XhmikosR's avatar
XhmikosR committed
98
99
    var accordion = $('<div id="accordion"><div class="accordion-group"></div><div class="accordion-group"></div><div class="accordion-group"></div></div>')
      .appendTo($('#qunit-fixture'))
100

XhmikosR's avatar
XhmikosR committed
101
102
    var target1 = $('<a data-toggle="collapse" href="#body1" data-parent="#accordion"></a>')
      .appendTo(accordion.find('.accordion-group').eq(0))
103

XhmikosR's avatar
XhmikosR committed
104
    $('<div id="body1" class="in"></div>')
XhmikosR's avatar
XhmikosR committed
105
      .appendTo(accordion.find('.accordion-group').eq(0))
106

XhmikosR's avatar
XhmikosR committed
107
108
    var target2 = $('<a class="collapsed" data-toggle="collapse" href="#body2" data-parent="#accordion"></a>')
      .appendTo(accordion.find('.accordion-group').eq(1))
109

XhmikosR's avatar
XhmikosR committed
110
    $('<div id="body2"></div>')
XhmikosR's avatar
XhmikosR committed
111
      .appendTo(accordion.find('.accordion-group').eq(1))
112

XhmikosR's avatar
XhmikosR committed
113
114
    var target3 = $('<a class="collapsed" data-toggle="collapse" href="#body3" data-parent="#accordion"></a>')
      .appendTo(accordion.find('.accordion-group').eq(2))
115

XhmikosR's avatar
XhmikosR committed
116
    $('<div id="body3"></div>')
XhmikosR's avatar
XhmikosR committed
117
118
119
120
121
      .appendTo(accordion.find('.accordion-group').eq(2))
      .on('show.bs.collapse', function () {
        ok(target1.hasClass('collapsed'))
        ok(target2.hasClass('collapsed'))
        ok(!target3.hasClass('collapsed'))
122

XhmikosR's avatar
XhmikosR committed
123
        start()
124
125
      })

XhmikosR's avatar
XhmikosR committed
126
127
    target3.click()
  })
128

XhmikosR's avatar
XhmikosR committed
129
130
131
  test('should allow dots in data-parent', function () {
    $.support.transition = false
    stop()
132

XhmikosR's avatar
XhmikosR committed
133
134
    var accordion = $('<div class="accordion"><div class="accordion-group"></div><div class="accordion-group"></div><div class="accordion-group"></div></div>')
      .appendTo($('#qunit-fixture'))
135

XhmikosR's avatar
XhmikosR committed
136
137
    var target1 = $('<a data-toggle="collapse" href="#body1" data-parent=".accordion"></a>')
      .appendTo(accordion.find('.accordion-group').eq(0))
138

XhmikosR's avatar
XhmikosR committed
139
    $('<div id="body1" class="in"></div>')
XhmikosR's avatar
XhmikosR committed
140
      .appendTo(accordion.find('.accordion-group').eq(0))
141

XhmikosR's avatar
XhmikosR committed
142
143
    var target2 = $('<a class="collapsed" data-toggle="collapse" href="#body2" data-parent=".accordion"></a>')
      .appendTo(accordion.find('.accordion-group').eq(1))
144

XhmikosR's avatar
XhmikosR committed
145
    $('<div id="body2"></div>')
XhmikosR's avatar
XhmikosR committed
146
      .appendTo(accordion.find('.accordion-group').eq(1))
147

XhmikosR's avatar
XhmikosR committed
148
149
    var target3 = $('<a class="collapsed" data-toggle="collapse" href="#body3" data-parent=".accordion"></a>')
      .appendTo(accordion.find('.accordion-group').eq(2))
150

XhmikosR's avatar
XhmikosR committed
151
    $('<div id="body3"></div>')
XhmikosR's avatar
XhmikosR committed
152
153
154
155
156
      .appendTo(accordion.find('.accordion-group').eq(2))
      .on('show.bs.collapse', function () {
        ok(target1.hasClass('collapsed'))
        ok(target2.hasClass('collapsed'))
        ok(!target3.hasClass('collapsed'))
157

XhmikosR's avatar
XhmikosR committed
158
        start()
159
160
      })

XhmikosR's avatar
XhmikosR committed
161
162
163
    target3.click()
  })

164
})