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

XhmikosR's avatar
XhmikosR committed
3
    module('collapse')
4

XhmikosR's avatar
XhmikosR committed
5
      test('should provide no conflict', function () {
6
7
8
9
10
        var collapse = $.fn.collapse.noConflict()
        ok(!$.fn.collapse, 'collapse was set back to undefined (org value)')
        $.fn.collapse = collapse
      })

XhmikosR's avatar
XhmikosR committed
11
      test('should be defined on jquery object', function () {
12
13
14
        ok($(document.body).collapse, 'collapse method is defined')
      })

XhmikosR's avatar
XhmikosR committed
15
      test('should return element', function () {
16
17
18
        ok($(document.body).collapse()[0] == document.body, 'document.body returned')
      })

XhmikosR's avatar
XhmikosR committed
19
      test('should show a collapsed element', function () {
20
21
22
23
24
        var el = $('<div class="collapse"></div>').collapse('show')
        ok(el.hasClass('in'), 'has class in')
        ok(/height/.test(el.attr('style')), 'has height set')
      })

XhmikosR's avatar
XhmikosR committed
25
      test('should hide a collapsed element', function () {
26
27
28
29
30
        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')
      })

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

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

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

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

        var collapsible = $('<div id="test1"></div>')
          .appendTo($('#qunit-fixture'))
69
          .on('show.bs.collapse', function () {
70
71
72
73
74
75
76
            ok(!target.hasClass('collapsed'))
            start()
          })

        target.click()
      })

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

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

        var collapsible = $('<div id="test1" class="in"></div>')
          .appendTo($('#qunit-fixture'))
86
          .on('hide.bs.collapse', function () {
87
88
89
90
91
92
93
            ok(target.hasClass('collapsed'))
            start()
          })

        target.click()
      })

XhmikosR's avatar
XhmikosR committed
94
      test('should remove active class from inactive accordion targets', function () {
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
        $.support.transition = false
        stop()

        var accordion = $('<div id="accordion"><div class="accordion-group"></div><div class="accordion-group"></div><div class="accordion-group"></div></div>')
          .appendTo($('#qunit-fixture'))

        var target1 = $('<a data-toggle="collapse" href="#body1" data-parent="#accordion"></a>')
          .appendTo(accordion.find('.accordion-group').eq(0))

        var collapsible1 = $('<div id="body1" class="in"></div>')
          .appendTo(accordion.find('.accordion-group').eq(0))

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

        var collapsible2 = $('<div id="body2"></div>')
          .appendTo(accordion.find('.accordion-group').eq(1))

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

        var collapsible3 = $('<div id="body3"></div>')
          .appendTo(accordion.find('.accordion-group').eq(2))
118
          .on('show.bs.collapse', function () {
119
120
121
122
123
124
125
126
127
128
            ok(target1.hasClass('collapsed'))
            ok(target2.hasClass('collapsed'))
            ok(!target3.hasClass('collapsed'))

            start()
          })

        target3.click()
      })

XhmikosR's avatar
XhmikosR committed
129
      test('should allow dots in data-parent', function () {
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
        $.support.transition = false
        stop()

        var accordion = $('<div class="accordion"><div class="accordion-group"></div><div class="accordion-group"></div><div class="accordion-group"></div></div>')
          .appendTo($('#qunit-fixture'))

        var target1 = $('<a data-toggle="collapse" href="#body1" data-parent=".accordion"></a>')
          .appendTo(accordion.find('.accordion-group').eq(0))

        var collapsible1 = $('<div id="body1" class="in"></div>')
          .appendTo(accordion.find('.accordion-group').eq(0))

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

        var collapsible2 = $('<div id="body2"></div>')
          .appendTo(accordion.find('.accordion-group').eq(1))

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

        var collapsible3 = $('<div id="body3"></div>')
          .appendTo(accordion.find('.accordion-group').eq(2))
          .on('show.bs.collapse', function () {
            ok(target1.hasClass('collapsed'))
            ok(target2.hasClass('collapsed'))
            ok(!target3.hasClass('collapsed'))

            start()
          })

        target3.click()
      })

164
})