[ADD] doc: new documentation, with training tutorials, and new scaffolding
[odoo/odoo.git] / doc / _themes / odoodoc / static / bootstrap / js / tests / unit / collapse.js
1 $(function () {
2   'use strict';
3
4   module('collapse plugin')
5
6   test('should be defined on jquery object', function () {
7     ok($(document.body).collapse, 'collapse method is defined')
8   })
9
10   module('collapse', {
11     setup: function () {
12       // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
13       $.fn.bootstrapCollapse = $.fn.collapse.noConflict()
14     },
15     teardown: function () {
16       $.fn.collapse = $.fn.bootstrapCollapse
17       delete $.fn.bootstrapCollapse
18     }
19   })
20
21   test('should provide no conflict', function () {
22     ok(!$.fn.collapse, 'collapse was set back to undefined (org value)')
23   })
24
25   test('should return element', function () {
26     ok($(document.body).bootstrapCollapse()[0] == document.body, 'document.body returned')
27   })
28
29   test('should show a collapsed element', function () {
30     var el = $('<div class="collapse"></div>').bootstrapCollapse('show')
31     ok(el.hasClass('in'), 'has class in')
32     ok(!/height/.test(el.attr('style')), 'has height reset')
33   })
34
35   test('should hide a collapsed element', function () {
36     var el = $('<div class="collapse"></div>').bootstrapCollapse('hide')
37     ok(!el.hasClass('in'), 'does not have class in')
38     ok(/height/.test(el.attr('style')), 'has height set')
39   })
40
41   test('should not fire shown when show is prevented', function () {
42     $.support.transition = false
43     stop()
44     $('<div class="collapse"/>')
45       .on('show.bs.collapse', function (e) {
46         e.preventDefault()
47         ok(true)
48         start()
49       })
50       .on('shown.bs.collapse', function () {
51         ok(false)
52       })
53       .bootstrapCollapse('show')
54   })
55
56   test('should reset style to auto after finishing opening collapse', function () {
57     $.support.transition = false
58     stop()
59     $('<div class="collapse" style="height: 0px"/>')
60       .on('show.bs.collapse', function () {
61         ok(this.style.height == '0px')
62       })
63       .on('shown.bs.collapse', function () {
64         ok(this.style.height === '')
65         start()
66       })
67       .bootstrapCollapse('show')
68   })
69
70   test('should add active class to target when collapse shown', function () {
71     $.support.transition = false
72     stop()
73
74     var target = $('<a data-toggle="collapse" href="#test1"></a>')
75       .appendTo($('#qunit-fixture'))
76
77     $('<div id="test1"></div>')
78       .appendTo($('#qunit-fixture'))
79       .on('show.bs.collapse', function () {
80         ok(!target.hasClass('collapsed'))
81         start()
82       })
83
84     target.click()
85   })
86
87   test('should remove active class to target when collapse hidden', function () {
88     $.support.transition = false
89     stop()
90
91     var target = $('<a data-toggle="collapse" href="#test1"></a>')
92       .appendTo($('#qunit-fixture'))
93
94     $('<div id="test1" class="in"></div>')
95       .appendTo($('#qunit-fixture'))
96       .on('hide.bs.collapse', function () {
97         ok(target.hasClass('collapsed'))
98         start()
99       })
100
101     target.click()
102   })
103
104   test('should remove active class from inactive accordion targets', function () {
105     $.support.transition = false
106     stop()
107
108     var accordion = $('<div id="accordion"><div class="accordion-group"></div><div class="accordion-group"></div><div class="accordion-group"></div></div>')
109       .appendTo($('#qunit-fixture'))
110
111     var target1 = $('<a data-toggle="collapse" href="#body1" data-parent="#accordion"></a>')
112       .appendTo(accordion.find('.accordion-group').eq(0))
113
114     $('<div id="body1" class="in"></div>')
115       .appendTo(accordion.find('.accordion-group').eq(0))
116
117     var target2 = $('<a class="collapsed" data-toggle="collapse" href="#body2" data-parent="#accordion"></a>')
118       .appendTo(accordion.find('.accordion-group').eq(1))
119
120     $('<div id="body2"></div>')
121       .appendTo(accordion.find('.accordion-group').eq(1))
122
123     var target3 = $('<a class="collapsed" data-toggle="collapse" href="#body3" data-parent="#accordion"></a>')
124       .appendTo(accordion.find('.accordion-group').eq(2))
125
126     $('<div id="body3"></div>')
127       .appendTo(accordion.find('.accordion-group').eq(2))
128       .on('show.bs.collapse', function () {
129         ok(target1.hasClass('collapsed'))
130         ok(target2.hasClass('collapsed'))
131         ok(!target3.hasClass('collapsed'))
132
133         start()
134       })
135
136     target3.click()
137   })
138
139   test('should allow dots in data-parent', function () {
140     $.support.transition = false
141     stop()
142
143     var accordion = $('<div class="accordion"><div class="accordion-group"></div><div class="accordion-group"></div><div class="accordion-group"></div></div>')
144       .appendTo($('#qunit-fixture'))
145
146     var target1 = $('<a data-toggle="collapse" href="#body1" data-parent=".accordion"></a>')
147       .appendTo(accordion.find('.accordion-group').eq(0))
148
149     $('<div id="body1" class="in"></div>')
150       .appendTo(accordion.find('.accordion-group').eq(0))
151
152     var target2 = $('<a class="collapsed" data-toggle="collapse" href="#body2" data-parent=".accordion"></a>')
153       .appendTo(accordion.find('.accordion-group').eq(1))
154
155     $('<div id="body2"></div>')
156       .appendTo(accordion.find('.accordion-group').eq(1))
157
158     var target3 = $('<a class="collapsed" data-toggle="collapse" href="#body3" data-parent=".accordion"></a>')
159       .appendTo(accordion.find('.accordion-group').eq(2))
160
161     $('<div id="body3"></div>')
162       .appendTo(accordion.find('.accordion-group').eq(2))
163       .on('show.bs.collapse', function () {
164         ok(target1.hasClass('collapsed'))
165         ok(target2.hasClass('collapsed'))
166         ok(!target3.hasClass('collapsed'))
167
168         start()
169       })
170
171     target3.click()
172   })
173
174 })