vertx-howtos-jekyll-theme 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +52 -0
- data/_layouts/page.html +61 -0
- data/_sass/bootstrap/js/dist/alert.js +199 -0
- data/_sass/bootstrap/js/dist/alert.js.map +1 -0
- data/_sass/bootstrap/js/dist/button.js +187 -0
- data/_sass/bootstrap/js/dist/button.js.map +1 -0
- data/_sass/bootstrap/js/dist/carousel.js +666 -0
- data/_sass/bootstrap/js/dist/carousel.js.map +1 -0
- data/_sass/bootstrap/js/dist/collapse.js +428 -0
- data/_sass/bootstrap/js/dist/collapse.js.map +1 -0
- data/_sass/bootstrap/js/dist/dropdown.js +591 -0
- data/_sass/bootstrap/js/dist/dropdown.js.map +1 -0
- data/_sass/bootstrap/js/dist/index.js +23 -0
- data/_sass/bootstrap/js/dist/index.js.map +1 -0
- data/_sass/bootstrap/js/dist/modal.js +644 -0
- data/_sass/bootstrap/js/dist/modal.js.map +1 -0
- data/_sass/bootstrap/js/dist/popover.js +261 -0
- data/_sass/bootstrap/js/dist/popover.js.map +1 -0
- data/_sass/bootstrap/js/dist/scrollspy.js +375 -0
- data/_sass/bootstrap/js/dist/scrollspy.js.map +1 -0
- data/_sass/bootstrap/js/dist/tab.js +266 -0
- data/_sass/bootstrap/js/dist/tab.js.map +1 -0
- data/_sass/bootstrap/js/dist/toast.js +278 -0
- data/_sass/bootstrap/js/dist/toast.js.map +1 -0
- data/_sass/bootstrap/js/dist/tooltip.js +745 -0
- data/_sass/bootstrap/js/dist/tooltip.js.map +1 -0
- data/_sass/bootstrap/js/dist/util.js +168 -0
- data/_sass/bootstrap/js/dist/util.js.map +1 -0
- data/_sass/bootstrap/js/src/alert.js +179 -0
- data/_sass/bootstrap/js/src/button.js +171 -0
- data/_sass/bootstrap/js/src/carousel.js +604 -0
- data/_sass/bootstrap/js/src/collapse.js +402 -0
- data/_sass/bootstrap/js/src/dropdown.js +538 -0
- data/_sass/bootstrap/js/src/index.js +52 -0
- data/_sass/bootstrap/js/src/modal.js +587 -0
- data/_sass/bootstrap/js/src/popover.js +184 -0
- data/_sass/bootstrap/js/src/scrollspy.js +326 -0
- data/_sass/bootstrap/js/src/tab.js +257 -0
- data/_sass/bootstrap/js/src/toast.js +223 -0
- data/_sass/bootstrap/js/src/tooltip.js +735 -0
- data/_sass/bootstrap/js/src/util.js +173 -0
- data/_sass/bootstrap/js/tests/README.md +69 -0
- data/_sass/bootstrap/js/tests/browsers.js +82 -0
- data/_sass/bootstrap/js/tests/index.html +145 -0
- data/_sass/bootstrap/js/tests/integration/bundle.js +8 -0
- data/_sass/bootstrap/js/tests/integration/index.html +66 -0
- data/_sass/bootstrap/js/tests/integration/rollup.bundle.js +20 -0
- data/_sass/bootstrap/js/tests/karma.conf.js +145 -0
- data/_sass/bootstrap/js/tests/unit/.eslintrc.json +40 -0
- data/_sass/bootstrap/js/tests/unit/alert.js +123 -0
- data/_sass/bootstrap/js/tests/unit/button.js +222 -0
- data/_sass/bootstrap/js/tests/unit/carousel.js +1273 -0
- data/_sass/bootstrap/js/tests/unit/collapse.js +892 -0
- data/_sass/bootstrap/js/tests/unit/dropdown.js +1364 -0
- data/_sass/bootstrap/js/tests/unit/modal.js +796 -0
- data/_sass/bootstrap/js/tests/unit/popover.js +471 -0
- data/_sass/bootstrap/js/tests/unit/scrollspy.js +728 -0
- data/_sass/bootstrap/js/tests/unit/tab.js +462 -0
- data/_sass/bootstrap/js/tests/unit/toast.js +239 -0
- data/_sass/bootstrap/js/tests/unit/tooltip.js +1072 -0
- data/_sass/bootstrap/js/tests/unit/util.js +164 -0
- data/_sass/bootstrap/js/tests/visual/alert.html +58 -0
- data/_sass/bootstrap/js/tests/visual/button.html +51 -0
- data/_sass/bootstrap/js/tests/visual/carousel.html +66 -0
- data/_sass/bootstrap/js/tests/visual/collapse.html +78 -0
- data/_sass/bootstrap/js/tests/visual/dropdown.html +212 -0
- data/_sass/bootstrap/js/tests/visual/modal.html +268 -0
- data/_sass/bootstrap/js/tests/visual/popover.html +46 -0
- data/_sass/bootstrap/js/tests/visual/scrollspy.html +95 -0
- data/_sass/bootstrap/js/tests/visual/tab.html +234 -0
- data/_sass/bootstrap/js/tests/visual/toast.html +72 -0
- data/_sass/bootstrap/js/tests/visual/tooltip.html +106 -0
- data/_sass/bootstrap/scss/_alert.scss +51 -0
- data/_sass/bootstrap/scss/_badge.scss +53 -0
- data/_sass/bootstrap/scss/_breadcrumb.scss +41 -0
- data/_sass/bootstrap/scss/_button-group.scss +163 -0
- data/_sass/bootstrap/scss/_buttons.scss +140 -0
- data/_sass/bootstrap/scss/_card.scss +310 -0
- data/_sass/bootstrap/scss/_carousel.scss +198 -0
- data/_sass/bootstrap/scss/_close.scss +44 -0
- data/_sass/bootstrap/scss/_code.scss +48 -0
- data/_sass/bootstrap/scss/_custom-forms.scss +507 -0
- data/_sass/bootstrap/scss/_dropdown.scss +191 -0
- data/_sass/bootstrap/scss/_forms.scss +334 -0
- data/_sass/bootstrap/scss/_functions.scss +86 -0
- data/_sass/bootstrap/scss/_grid.scss +52 -0
- data/_sass/bootstrap/scss/_images.scss +42 -0
- data/_sass/bootstrap/scss/_input-group.scss +193 -0
- data/_sass/bootstrap/scss/_jumbotron.scss +16 -0
- data/_sass/bootstrap/scss/_list-group.scss +121 -0
- data/_sass/bootstrap/scss/_media.scss +8 -0
- data/_sass/bootstrap/scss/_mixins.scss +41 -0
- data/_sass/bootstrap/scss/_modal.scss +186 -0
- data/_sass/bootstrap/scss/_nav.scss +120 -0
- data/_sass/bootstrap/scss/_navbar.scss +299 -0
- data/_sass/bootstrap/scss/_pagination.scss +78 -0
- data/_sass/bootstrap/scss/_popover.scss +183 -0
- data/_sass/bootstrap/scss/_print.scss +141 -0
- data/_sass/bootstrap/scss/_progress.scss +34 -0
- data/_sass/bootstrap/scss/_reboot.scss +462 -0
- data/_sass/bootstrap/scss/_root.scss +19 -0
- data/_sass/bootstrap/scss/_spinners.scss +53 -0
- data/_sass/bootstrap/scss/_tables.scss +187 -0
- data/_sass/bootstrap/scss/_toasts.scss +43 -0
- data/_sass/bootstrap/scss/_tooltip.scss +115 -0
- data/_sass/bootstrap/scss/_transitions.scss +22 -0
- data/_sass/bootstrap/scss/_type.scss +125 -0
- data/_sass/bootstrap/scss/_utilities.scss +16 -0
- data/_sass/bootstrap/scss/_variables.scss +1091 -0
- data/_sass/bootstrap/scss/bootstrap-grid.scss +29 -0
- data/_sass/bootstrap/scss/bootstrap-reboot.scss +12 -0
- data/_sass/bootstrap/scss/bootstrap.scss +44 -0
- data/_sass/bootstrap/scss/mixins/_alert.scss +13 -0
- data/_sass/bootstrap/scss/mixins/_background-variant.scss +21 -0
- data/_sass/bootstrap/scss/mixins/_badge.scss +11 -0
- data/_sass/bootstrap/scss/mixins/_border-radius.scss +35 -0
- data/_sass/bootstrap/scss/mixins/_box-shadow.scss +5 -0
- data/_sass/bootstrap/scss/mixins/_breakpoints.scss +123 -0
- data/_sass/bootstrap/scss/mixins/_buttons.scss +111 -0
- data/_sass/bootstrap/scss/mixins/_caret.scss +62 -0
- data/_sass/bootstrap/scss/mixins/_clearfix.scss +7 -0
- data/_sass/bootstrap/scss/mixins/_float.scss +11 -0
- data/_sass/bootstrap/scss/mixins/_forms.scss +198 -0
- data/_sass/bootstrap/scss/mixins/_gradients.scss +45 -0
- data/_sass/bootstrap/scss/mixins/_grid-framework.scss +66 -0
- data/_sass/bootstrap/scss/mixins/_grid.scss +51 -0
- data/_sass/bootstrap/scss/mixins/_hover.scss +37 -0
- data/_sass/bootstrap/scss/mixins/_image.scss +36 -0
- data/_sass/bootstrap/scss/mixins/_list-group.scss +21 -0
- data/_sass/bootstrap/scss/mixins/_lists.scss +7 -0
- data/_sass/bootstrap/scss/mixins/_nav-divider.scss +10 -0
- data/_sass/bootstrap/scss/mixins/_pagination.scss +22 -0
- data/_sass/bootstrap/scss/mixins/_reset-text.scss +17 -0
- data/_sass/bootstrap/scss/mixins/_resize.scss +6 -0
- data/_sass/bootstrap/scss/mixins/_screen-reader.scss +33 -0
- data/_sass/bootstrap/scss/mixins/_size.scss +6 -0
- data/_sass/bootstrap/scss/mixins/_table-row.scss +39 -0
- data/_sass/bootstrap/scss/mixins/_text-emphasis.scss +14 -0
- data/_sass/bootstrap/scss/mixins/_text-hide.scss +13 -0
- data/_sass/bootstrap/scss/mixins/_text-truncate.scss +8 -0
- data/_sass/bootstrap/scss/mixins/_transition.scss +16 -0
- data/_sass/bootstrap/scss/mixins/_visibility.scss +7 -0
- data/_sass/bootstrap/scss/utilities/_align.scss +8 -0
- data/_sass/bootstrap/scss/utilities/_background.scss +19 -0
- data/_sass/bootstrap/scss/utilities/_borders.scss +63 -0
- data/_sass/bootstrap/scss/utilities/_clearfix.scss +3 -0
- data/_sass/bootstrap/scss/utilities/_display.scss +38 -0
- data/_sass/bootstrap/scss/utilities/_embed.scss +39 -0
- data/_sass/bootstrap/scss/utilities/_flex.scss +51 -0
- data/_sass/bootstrap/scss/utilities/_float.scss +9 -0
- data/_sass/bootstrap/scss/utilities/_overflow.scss +5 -0
- data/_sass/bootstrap/scss/utilities/_position.scss +32 -0
- data/_sass/bootstrap/scss/utilities/_screenreaders.scss +11 -0
- data/_sass/bootstrap/scss/utilities/_shadows.scss +6 -0
- data/_sass/bootstrap/scss/utilities/_sizing.scss +20 -0
- data/_sass/bootstrap/scss/utilities/_spacing.scss +73 -0
- data/_sass/bootstrap/scss/utilities/_text.scss +67 -0
- data/_sass/bootstrap/scss/utilities/_visibility.scss +11 -0
- data/_sass/custom.scss +1 -0
- data/assets/css/style.scss +65 -0
- data/assets/images/vertx-square.svg +1 -0
- metadata +248 -0
@@ -0,0 +1,239 @@
|
|
1
|
+
$(function () {
|
2
|
+
'use strict'
|
3
|
+
|
4
|
+
if (typeof bootstrap !== 'undefined') {
|
5
|
+
window.Toast = bootstrap.Toast
|
6
|
+
}
|
7
|
+
|
8
|
+
QUnit.module('toast plugin')
|
9
|
+
|
10
|
+
QUnit.test('should be defined on jquery object', function (assert) {
|
11
|
+
assert.expect(1)
|
12
|
+
assert.ok($(document.body).toast, 'toast method is defined')
|
13
|
+
})
|
14
|
+
|
15
|
+
QUnit.module('toast', {
|
16
|
+
beforeEach: function () {
|
17
|
+
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
|
18
|
+
$.fn.bootstrapToast = $.fn.toast.noConflict()
|
19
|
+
},
|
20
|
+
afterEach: function () {
|
21
|
+
$.fn.toast = $.fn.bootstrapToast
|
22
|
+
delete $.fn.bootstrapToast
|
23
|
+
$('#qunit-fixture').html('')
|
24
|
+
}
|
25
|
+
})
|
26
|
+
|
27
|
+
QUnit.test('should provide no conflict', function (assert) {
|
28
|
+
assert.expect(1)
|
29
|
+
assert.strictEqual(typeof $.fn.toast, 'undefined', 'toast was set back to undefined (org value)')
|
30
|
+
})
|
31
|
+
|
32
|
+
QUnit.test('should return the current version', function (assert) {
|
33
|
+
assert.expect(1)
|
34
|
+
assert.strictEqual(typeof Toast.VERSION, 'string')
|
35
|
+
})
|
36
|
+
|
37
|
+
QUnit.test('should throw explicit error on undefined method', function (assert) {
|
38
|
+
assert.expect(1)
|
39
|
+
var $el = $('<div/>')
|
40
|
+
$el.bootstrapToast()
|
41
|
+
|
42
|
+
try {
|
43
|
+
$el.bootstrapToast('noMethod')
|
44
|
+
} catch (err) {
|
45
|
+
assert.strictEqual(err.message, 'No method named "noMethod"')
|
46
|
+
}
|
47
|
+
})
|
48
|
+
|
49
|
+
QUnit.test('should return jquery collection containing the element', function (assert) {
|
50
|
+
assert.expect(2)
|
51
|
+
|
52
|
+
var $el = $('<div/>')
|
53
|
+
var $toast = $el.bootstrapToast()
|
54
|
+
assert.ok($toast instanceof $, 'returns jquery collection')
|
55
|
+
assert.strictEqual($toast[0], $el[0], 'collection contains element')
|
56
|
+
})
|
57
|
+
|
58
|
+
QUnit.test('should auto hide', function (assert) {
|
59
|
+
assert.expect(1)
|
60
|
+
var done = assert.async()
|
61
|
+
|
62
|
+
var toastHtml =
|
63
|
+
'<div class="toast" data-delay="1">' +
|
64
|
+
'<div class="toast-body">' +
|
65
|
+
'a simple toast' +
|
66
|
+
'</div>' +
|
67
|
+
'</div>'
|
68
|
+
|
69
|
+
var $toast = $(toastHtml)
|
70
|
+
.bootstrapToast()
|
71
|
+
.appendTo($('#qunit-fixture'))
|
72
|
+
|
73
|
+
$toast.on('hidden.bs.toast', function () {
|
74
|
+
assert.strictEqual($toast.hasClass('show'), false)
|
75
|
+
done()
|
76
|
+
})
|
77
|
+
.bootstrapToast('show')
|
78
|
+
})
|
79
|
+
|
80
|
+
QUnit.test('should not add fade class', function (assert) {
|
81
|
+
assert.expect(1)
|
82
|
+
var done = assert.async()
|
83
|
+
|
84
|
+
var toastHtml =
|
85
|
+
'<div class="toast" data-delay="1" data-animation="false">' +
|
86
|
+
'<div class="toast-body">' +
|
87
|
+
'a simple toast' +
|
88
|
+
'</div>' +
|
89
|
+
'</div>'
|
90
|
+
|
91
|
+
var $toast = $(toastHtml)
|
92
|
+
.bootstrapToast()
|
93
|
+
.appendTo($('#qunit-fixture'))
|
94
|
+
|
95
|
+
$toast.on('shown.bs.toast', function () {
|
96
|
+
assert.strictEqual($toast.hasClass('fade'), false)
|
97
|
+
done()
|
98
|
+
})
|
99
|
+
.bootstrapToast('show')
|
100
|
+
})
|
101
|
+
|
102
|
+
QUnit.test('should allow to hide toast manually', function (assert) {
|
103
|
+
assert.expect(1)
|
104
|
+
var done = assert.async()
|
105
|
+
|
106
|
+
var toastHtml =
|
107
|
+
'<div class="toast" data-delay="1" data-autohide="false">' +
|
108
|
+
'<div class="toast-body">' +
|
109
|
+
'a simple toast' +
|
110
|
+
'</div>' +
|
111
|
+
'</div>'
|
112
|
+
|
113
|
+
var $toast = $(toastHtml)
|
114
|
+
.bootstrapToast()
|
115
|
+
.appendTo($('#qunit-fixture'))
|
116
|
+
|
117
|
+
$toast
|
118
|
+
.on('shown.bs.toast', function () {
|
119
|
+
$toast.bootstrapToast('hide')
|
120
|
+
})
|
121
|
+
.on('hidden.bs.toast', function () {
|
122
|
+
assert.strictEqual($toast.hasClass('show'), false)
|
123
|
+
done()
|
124
|
+
})
|
125
|
+
.bootstrapToast('show')
|
126
|
+
})
|
127
|
+
|
128
|
+
QUnit.test('should do nothing when we call hide on a non shown toast', function (assert) {
|
129
|
+
assert.expect(1)
|
130
|
+
|
131
|
+
var $toast = $('<div />')
|
132
|
+
.bootstrapToast()
|
133
|
+
.appendTo($('#qunit-fixture'))
|
134
|
+
|
135
|
+
var spy = sinon.spy($toast[0].classList, 'contains')
|
136
|
+
|
137
|
+
$toast.bootstrapToast('hide')
|
138
|
+
|
139
|
+
assert.strictEqual(spy.called, true)
|
140
|
+
})
|
141
|
+
|
142
|
+
QUnit.test('should allow to destroy toast', function (assert) {
|
143
|
+
assert.expect(2)
|
144
|
+
|
145
|
+
var $toast = $('<div />')
|
146
|
+
.bootstrapToast()
|
147
|
+
.appendTo($('#qunit-fixture'))
|
148
|
+
|
149
|
+
assert.ok(typeof $toast.data('bs.toast') !== 'undefined')
|
150
|
+
|
151
|
+
$toast.bootstrapToast('dispose')
|
152
|
+
|
153
|
+
assert.ok(typeof $toast.data('bs.toast') === 'undefined')
|
154
|
+
})
|
155
|
+
|
156
|
+
QUnit.test('should allow to destroy toast and hide it before that', function (assert) {
|
157
|
+
assert.expect(4)
|
158
|
+
var done = assert.async()
|
159
|
+
|
160
|
+
var toastHtml =
|
161
|
+
'<div class="toast" data-delay="0" data-autohide="false">' +
|
162
|
+
'<div class="toast-body">' +
|
163
|
+
'a simple toast' +
|
164
|
+
'</div>' +
|
165
|
+
'</div>'
|
166
|
+
|
167
|
+
var $toast = $(toastHtml)
|
168
|
+
.bootstrapToast()
|
169
|
+
.appendTo($('#qunit-fixture'))
|
170
|
+
|
171
|
+
$toast.one('shown.bs.toast', function () {
|
172
|
+
setTimeout(function () {
|
173
|
+
assert.ok($toast.hasClass('show'))
|
174
|
+
assert.ok(typeof $toast.data('bs.toast') !== 'undefined')
|
175
|
+
|
176
|
+
$toast.bootstrapToast('dispose')
|
177
|
+
|
178
|
+
assert.ok(typeof $toast.data('bs.toast') === 'undefined')
|
179
|
+
assert.ok($toast.hasClass('show') === false)
|
180
|
+
|
181
|
+
done()
|
182
|
+
}, 1)
|
183
|
+
})
|
184
|
+
.bootstrapToast('show')
|
185
|
+
})
|
186
|
+
|
187
|
+
QUnit.test('should allow to config in js', function (assert) {
|
188
|
+
assert.expect(1)
|
189
|
+
var done = assert.async()
|
190
|
+
|
191
|
+
var toastHtml =
|
192
|
+
'<div class="toast">' +
|
193
|
+
'<div class="toast-body">' +
|
194
|
+
'a simple toast' +
|
195
|
+
'</div>' +
|
196
|
+
'</div>'
|
197
|
+
|
198
|
+
var $toast = $(toastHtml)
|
199
|
+
.bootstrapToast({
|
200
|
+
delay: 1
|
201
|
+
})
|
202
|
+
.appendTo($('#qunit-fixture'))
|
203
|
+
|
204
|
+
$toast.on('shown.bs.toast', function () {
|
205
|
+
assert.strictEqual($toast.hasClass('show'), true)
|
206
|
+
done()
|
207
|
+
})
|
208
|
+
.bootstrapToast('show')
|
209
|
+
})
|
210
|
+
|
211
|
+
|
212
|
+
QUnit.test('should close toast when close element with data-dismiss attribute is set', function (assert) {
|
213
|
+
assert.expect(2)
|
214
|
+
var done = assert.async()
|
215
|
+
|
216
|
+
var toastHtml =
|
217
|
+
'<div class="toast" data-delay="1" data-autohide="false" data-animation="false">' +
|
218
|
+
'<button type="button" class="ml-2 mb-1 close" data-dismiss="toast">' +
|
219
|
+
'close' +
|
220
|
+
'</button>' +
|
221
|
+
'</div>'
|
222
|
+
|
223
|
+
var $toast = $(toastHtml)
|
224
|
+
.bootstrapToast()
|
225
|
+
.appendTo($('#qunit-fixture'))
|
226
|
+
|
227
|
+
$toast
|
228
|
+
.on('shown.bs.toast', function () {
|
229
|
+
assert.strictEqual($toast.hasClass('show'), true)
|
230
|
+
var button = $toast.find('.close')
|
231
|
+
button.trigger('click')
|
232
|
+
})
|
233
|
+
.on('hidden.bs.toast', function () {
|
234
|
+
assert.strictEqual($toast.hasClass('show'), false)
|
235
|
+
done()
|
236
|
+
})
|
237
|
+
.bootstrapToast('show')
|
238
|
+
})
|
239
|
+
})
|
@@ -0,0 +1,1072 @@
|
|
1
|
+
$(function () {
|
2
|
+
'use strict'
|
3
|
+
|
4
|
+
QUnit.module('tooltip plugin')
|
5
|
+
|
6
|
+
QUnit.test('should be defined on jquery object', function (assert) {
|
7
|
+
assert.expect(1)
|
8
|
+
assert.ok($(document.body).tooltip, 'tooltip method is defined')
|
9
|
+
})
|
10
|
+
|
11
|
+
QUnit.module('tooltip', {
|
12
|
+
beforeEach: function () {
|
13
|
+
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
|
14
|
+
$.fn.bootstrapTooltip = $.fn.tooltip.noConflict()
|
15
|
+
},
|
16
|
+
afterEach: function () {
|
17
|
+
$.fn.tooltip = $.fn.bootstrapTooltip
|
18
|
+
delete $.fn.bootstrapTooltip
|
19
|
+
$('.tooltip').remove()
|
20
|
+
$('#qunit-fixture').html('')
|
21
|
+
}
|
22
|
+
})
|
23
|
+
|
24
|
+
QUnit.test('should provide no conflict', function (assert) {
|
25
|
+
assert.expect(1)
|
26
|
+
assert.strictEqual(typeof $.fn.tooltip, 'undefined', 'tooltip was set back to undefined (org value)')
|
27
|
+
})
|
28
|
+
|
29
|
+
QUnit.test('should throw explicit error on undefined method', function (assert) {
|
30
|
+
assert.expect(1)
|
31
|
+
var $el = $('<div/>')
|
32
|
+
$el.bootstrapTooltip()
|
33
|
+
try {
|
34
|
+
$el.bootstrapTooltip('noMethod')
|
35
|
+
} catch (err) {
|
36
|
+
assert.strictEqual(err.message, 'No method named "noMethod"')
|
37
|
+
}
|
38
|
+
})
|
39
|
+
|
40
|
+
QUnit.test('should return jquery collection containing the element', function (assert) {
|
41
|
+
assert.expect(2)
|
42
|
+
var $el = $('<div/>')
|
43
|
+
var $tooltip = $el.bootstrapTooltip()
|
44
|
+
assert.ok($tooltip instanceof $, 'returns jquery collection')
|
45
|
+
assert.strictEqual($tooltip[0], $el[0], 'collection contains element')
|
46
|
+
})
|
47
|
+
|
48
|
+
QUnit.test('should expose default settings', function (assert) {
|
49
|
+
assert.expect(1)
|
50
|
+
assert.ok($.fn.bootstrapTooltip.Constructor.Default, 'defaults is defined')
|
51
|
+
})
|
52
|
+
|
53
|
+
QUnit.test('should empty title attribute', function (assert) {
|
54
|
+
assert.expect(1)
|
55
|
+
var $trigger = $('<a href="#" rel="tooltip" title="Another tooltip"/>').bootstrapTooltip()
|
56
|
+
assert.strictEqual($trigger.attr('title'), '', 'title attribute was emptied')
|
57
|
+
})
|
58
|
+
|
59
|
+
QUnit.test('should add data attribute for referencing original title', function (assert) {
|
60
|
+
assert.expect(1)
|
61
|
+
var $trigger = $('<a href="#" rel="tooltip" title="Another tooltip"/>').bootstrapTooltip()
|
62
|
+
assert.strictEqual($trigger.attr('data-original-title'), 'Another tooltip', 'original title preserved in data attribute')
|
63
|
+
})
|
64
|
+
|
65
|
+
QUnit.test('should add aria-describedby to the trigger on show', function (assert) {
|
66
|
+
assert.expect(3)
|
67
|
+
var $trigger = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
68
|
+
.bootstrapTooltip()
|
69
|
+
.appendTo('#qunit-fixture')
|
70
|
+
.bootstrapTooltip('show')
|
71
|
+
|
72
|
+
var id = $('.tooltip').attr('id')
|
73
|
+
|
74
|
+
assert.strictEqual($('#' + id).length, 1, 'has a unique id')
|
75
|
+
assert.strictEqual($('.tooltip').attr('aria-describedby'), $trigger.attr('id'), 'tooltip id and aria-describedby on trigger match')
|
76
|
+
assert.ok($trigger[0].hasAttribute('aria-describedby'), 'trigger has aria-describedby')
|
77
|
+
})
|
78
|
+
|
79
|
+
QUnit.test('should remove aria-describedby from trigger on hide', function (assert) {
|
80
|
+
assert.expect(2)
|
81
|
+
var done = assert.async()
|
82
|
+
var $trigger = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
83
|
+
.bootstrapTooltip()
|
84
|
+
.appendTo('#qunit-fixture')
|
85
|
+
|
86
|
+
$trigger
|
87
|
+
.one('shown.bs.tooltip', function () {
|
88
|
+
assert.ok($trigger[0].hasAttribute('aria-describedby'), 'trigger has aria-describedby')
|
89
|
+
$trigger.bootstrapTooltip('hide')
|
90
|
+
})
|
91
|
+
.one('hidden.bs.tooltip', function () {
|
92
|
+
assert.ok(!$trigger[0].hasAttribute('aria-describedby'), 'trigger does not have aria-describedby')
|
93
|
+
done()
|
94
|
+
})
|
95
|
+
.bootstrapTooltip('show')
|
96
|
+
})
|
97
|
+
|
98
|
+
QUnit.test('should assign a unique id tooltip element', function (assert) {
|
99
|
+
assert.expect(2)
|
100
|
+
$('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
101
|
+
.appendTo('#qunit-fixture')
|
102
|
+
.bootstrapTooltip('show')
|
103
|
+
|
104
|
+
var id = $('.tooltip').attr('id')
|
105
|
+
|
106
|
+
assert.strictEqual($('#' + id).length, 1, 'tooltip has unique id')
|
107
|
+
assert.strictEqual(id.indexOf('tooltip'), 0, 'tooltip id has prefix')
|
108
|
+
})
|
109
|
+
|
110
|
+
QUnit.test('should place tooltips relative to placement option', function (assert) {
|
111
|
+
assert.expect(2)
|
112
|
+
var done = assert.async()
|
113
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
114
|
+
.appendTo('#qunit-fixture')
|
115
|
+
.bootstrapTooltip({
|
116
|
+
placement: 'bottom'
|
117
|
+
})
|
118
|
+
|
119
|
+
$tooltip
|
120
|
+
.one('shown.bs.tooltip', function () {
|
121
|
+
assert.ok($('.tooltip')
|
122
|
+
.is('.fade.bs-tooltip-bottom.show'), 'has correct classes applied')
|
123
|
+
|
124
|
+
$tooltip.bootstrapTooltip('hide')
|
125
|
+
})
|
126
|
+
.one('hidden.bs.tooltip', function () {
|
127
|
+
assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed')
|
128
|
+
done()
|
129
|
+
})
|
130
|
+
.bootstrapTooltip('show')
|
131
|
+
})
|
132
|
+
|
133
|
+
QUnit.test('should allow html entities', function (assert) {
|
134
|
+
assert.expect(2)
|
135
|
+
var done = assert.async()
|
136
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="<b>@fat</b>"/>')
|
137
|
+
.appendTo('#qunit-fixture')
|
138
|
+
.bootstrapTooltip({
|
139
|
+
html: true
|
140
|
+
})
|
141
|
+
|
142
|
+
$tooltip
|
143
|
+
.one('shown.bs.tooltip', function () {
|
144
|
+
assert.notEqual($('.tooltip b').length, 0, 'b tag was inserted')
|
145
|
+
$tooltip.bootstrapTooltip('hide')
|
146
|
+
})
|
147
|
+
.one('hidden.bs.tooltip', function () {
|
148
|
+
assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed')
|
149
|
+
done()
|
150
|
+
})
|
151
|
+
.bootstrapTooltip('show')
|
152
|
+
})
|
153
|
+
|
154
|
+
QUnit.test('should allow DOMElement title (html: false)', function (assert) {
|
155
|
+
assert.expect(3)
|
156
|
+
var done = assert.async()
|
157
|
+
var title = document.createTextNode('<3 writing tests')
|
158
|
+
var $tooltip = $('<a href="#" rel="tooltip"/>')
|
159
|
+
.appendTo('#qunit-fixture')
|
160
|
+
.bootstrapTooltip({
|
161
|
+
title: title
|
162
|
+
})
|
163
|
+
|
164
|
+
$tooltip
|
165
|
+
.one('shown.bs.tooltip', function () {
|
166
|
+
assert.notEqual($('.tooltip').length, 0, 'tooltip inserted')
|
167
|
+
assert.strictEqual($('.tooltip').text(), '<3 writing tests', 'title inserted')
|
168
|
+
assert.ok(!$.contains($('.tooltip').get(0), title), 'title node copied, not moved')
|
169
|
+
done()
|
170
|
+
})
|
171
|
+
.bootstrapTooltip('show')
|
172
|
+
})
|
173
|
+
|
174
|
+
QUnit.test('should allow DOMElement title (html: true)', function (assert) {
|
175
|
+
assert.expect(3)
|
176
|
+
var done = assert.async()
|
177
|
+
var title = document.createTextNode('<3 writing tests')
|
178
|
+
var $tooltip = $('<a href="#" rel="tooltip"/>')
|
179
|
+
.appendTo('#qunit-fixture')
|
180
|
+
.bootstrapTooltip({
|
181
|
+
html: true,
|
182
|
+
title: title
|
183
|
+
})
|
184
|
+
|
185
|
+
$tooltip
|
186
|
+
.one('shown.bs.tooltip', function () {
|
187
|
+
assert.notEqual($('.tooltip').length, 0, 'tooltip inserted')
|
188
|
+
assert.strictEqual($('.tooltip').text(), '<3 writing tests', 'title inserted')
|
189
|
+
assert.ok($.contains($('.tooltip').get(0), title), 'title node moved, not copied')
|
190
|
+
done()
|
191
|
+
})
|
192
|
+
.bootstrapTooltip('show')
|
193
|
+
})
|
194
|
+
|
195
|
+
QUnit.test('should respect custom classes', function (assert) {
|
196
|
+
assert.expect(2)
|
197
|
+
var done = assert.async()
|
198
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
199
|
+
.appendTo('#qunit-fixture')
|
200
|
+
.bootstrapTooltip({
|
201
|
+
template: '<div class="tooltip some-class"><div class="tooltip-arrow"/><div class="tooltip-inner"/></div>'
|
202
|
+
})
|
203
|
+
|
204
|
+
$tooltip
|
205
|
+
.one('shown.bs.tooltip', function () {
|
206
|
+
assert.ok($('.tooltip').hasClass('some-class'), 'custom class is present')
|
207
|
+
$tooltip.bootstrapTooltip('hide')
|
208
|
+
})
|
209
|
+
.one('hidden.bs.tooltip', function () {
|
210
|
+
assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed')
|
211
|
+
done()
|
212
|
+
})
|
213
|
+
.bootstrapTooltip('show')
|
214
|
+
})
|
215
|
+
|
216
|
+
QUnit.test('should fire show event', function (assert) {
|
217
|
+
assert.expect(1)
|
218
|
+
var done = assert.async()
|
219
|
+
|
220
|
+
$('<div title="tooltip title"/>')
|
221
|
+
.on('show.bs.tooltip', function () {
|
222
|
+
assert.ok(true, 'show event fired')
|
223
|
+
done()
|
224
|
+
})
|
225
|
+
.bootstrapTooltip('show')
|
226
|
+
})
|
227
|
+
|
228
|
+
QUnit.test('should throw an error when show is called on hidden elements', function (assert) {
|
229
|
+
assert.expect(1)
|
230
|
+
var done = assert.async()
|
231
|
+
|
232
|
+
try {
|
233
|
+
$('<div title="tooltip title" style="display: none"/>').bootstrapTooltip('show')
|
234
|
+
} catch (err) {
|
235
|
+
assert.strictEqual(err.message, 'Please use show on visible elements')
|
236
|
+
done()
|
237
|
+
}
|
238
|
+
})
|
239
|
+
|
240
|
+
QUnit.test('should fire inserted event', function (assert) {
|
241
|
+
assert.expect(2)
|
242
|
+
var done = assert.async()
|
243
|
+
|
244
|
+
$('<div title="tooltip title"/>')
|
245
|
+
.appendTo('#qunit-fixture')
|
246
|
+
.on('inserted.bs.tooltip', function () {
|
247
|
+
assert.notEqual($('.tooltip').length, 0, 'tooltip was inserted')
|
248
|
+
assert.ok(true, 'inserted event fired')
|
249
|
+
done()
|
250
|
+
})
|
251
|
+
.bootstrapTooltip('show')
|
252
|
+
})
|
253
|
+
|
254
|
+
QUnit.test('should fire shown event', function (assert) {
|
255
|
+
assert.expect(1)
|
256
|
+
var done = assert.async()
|
257
|
+
|
258
|
+
$('<div title="tooltip title"></div>')
|
259
|
+
.appendTo('#qunit-fixture')
|
260
|
+
.on('shown.bs.tooltip', function () {
|
261
|
+
assert.ok(true, 'shown was called')
|
262
|
+
done()
|
263
|
+
})
|
264
|
+
.bootstrapTooltip('show')
|
265
|
+
})
|
266
|
+
|
267
|
+
QUnit.test('should not fire shown event when show was prevented', function (assert) {
|
268
|
+
assert.expect(1)
|
269
|
+
var done = assert.async()
|
270
|
+
|
271
|
+
$('<div title="tooltip title"/>')
|
272
|
+
.on('show.bs.tooltip', function (e) {
|
273
|
+
e.preventDefault()
|
274
|
+
assert.ok(true, 'show event fired')
|
275
|
+
done()
|
276
|
+
})
|
277
|
+
.on('shown.bs.tooltip', function () {
|
278
|
+
assert.ok(false, 'shown event fired')
|
279
|
+
})
|
280
|
+
.bootstrapTooltip('show')
|
281
|
+
})
|
282
|
+
|
283
|
+
QUnit.test('should fire hide event', function (assert) {
|
284
|
+
assert.expect(1)
|
285
|
+
var done = assert.async()
|
286
|
+
|
287
|
+
$('<div title="tooltip title"/>')
|
288
|
+
.appendTo('#qunit-fixture')
|
289
|
+
.on('shown.bs.tooltip', function () {
|
290
|
+
$(this).bootstrapTooltip('hide')
|
291
|
+
})
|
292
|
+
.on('hide.bs.tooltip', function () {
|
293
|
+
assert.ok(true, 'hide event fired')
|
294
|
+
done()
|
295
|
+
})
|
296
|
+
.bootstrapTooltip('show')
|
297
|
+
})
|
298
|
+
|
299
|
+
QUnit.test('should fire hidden event', function (assert) {
|
300
|
+
assert.expect(1)
|
301
|
+
var done = assert.async()
|
302
|
+
|
303
|
+
$('<div title="tooltip title"/>')
|
304
|
+
.appendTo('#qunit-fixture')
|
305
|
+
.on('shown.bs.tooltip', function () {
|
306
|
+
$(this).bootstrapTooltip('hide')
|
307
|
+
})
|
308
|
+
.on('hidden.bs.tooltip', function () {
|
309
|
+
assert.ok(true, 'hidden event fired')
|
310
|
+
done()
|
311
|
+
})
|
312
|
+
.bootstrapTooltip('show')
|
313
|
+
})
|
314
|
+
|
315
|
+
QUnit.test('should not fire hidden event when hide was prevented', function (assert) {
|
316
|
+
assert.expect(1)
|
317
|
+
var done = assert.async()
|
318
|
+
|
319
|
+
$('<div title="tooltip title"/>')
|
320
|
+
.appendTo('#qunit-fixture')
|
321
|
+
.on('shown.bs.tooltip', function () {
|
322
|
+
$(this).bootstrapTooltip('hide')
|
323
|
+
})
|
324
|
+
.on('hide.bs.tooltip', function (e) {
|
325
|
+
e.preventDefault()
|
326
|
+
assert.ok(true, 'hide event fired')
|
327
|
+
done()
|
328
|
+
})
|
329
|
+
.on('hidden.bs.tooltip', function () {
|
330
|
+
assert.ok(false, 'hidden event fired')
|
331
|
+
})
|
332
|
+
.bootstrapTooltip('show')
|
333
|
+
})
|
334
|
+
|
335
|
+
QUnit.test('should destroy tooltip', function (assert) {
|
336
|
+
assert.expect(7)
|
337
|
+
var $tooltip = $('<div/>')
|
338
|
+
.bootstrapTooltip()
|
339
|
+
.on('click.foo', function () {}) // eslint-disable-line no-empty-function
|
340
|
+
|
341
|
+
assert.ok($tooltip.data('bs.tooltip'), 'tooltip has data')
|
342
|
+
assert.ok($._data($tooltip[0], 'events').mouseover && $._data($tooltip[0], 'events').mouseout, 'tooltip has hover events')
|
343
|
+
assert.strictEqual($._data($tooltip[0], 'events').click[0].namespace, 'foo', 'tooltip has extra click.foo event')
|
344
|
+
|
345
|
+
$tooltip.bootstrapTooltip('show')
|
346
|
+
$tooltip.bootstrapTooltip('dispose')
|
347
|
+
|
348
|
+
assert.ok(!$tooltip.hasClass('show'), 'tooltip is hidden')
|
349
|
+
assert.ok(!$._data($tooltip[0], 'bs.tooltip'), 'tooltip does not have data')
|
350
|
+
assert.strictEqual($._data($tooltip[0], 'events').click[0].namespace, 'foo', 'tooltip still has click.foo')
|
351
|
+
assert.ok(!$._data($tooltip[0], 'events').mouseover && !$._data($tooltip[0], 'events').mouseout, 'tooltip does not have hover events')
|
352
|
+
})
|
353
|
+
|
354
|
+
// QUnit.test('should show tooltip with delegate selector on click', function (assert) {
|
355
|
+
// assert.expect(2)
|
356
|
+
// var $div = $('<div><a href="#" rel="tooltip" title="Another tooltip"/></div>')
|
357
|
+
// .appendTo('#qunit-fixture')
|
358
|
+
// .bootstrapTooltip({
|
359
|
+
// selector: 'a[rel="tooltip"]',
|
360
|
+
// trigger: 'click'
|
361
|
+
// })
|
362
|
+
|
363
|
+
// $div.find('a').trigger('click')
|
364
|
+
// assert.ok($('.tooltip').is('.fade.in'), 'tooltip is faded in')
|
365
|
+
|
366
|
+
// $div.find('a').trigger('click')
|
367
|
+
// assert.strictEqual($div.data('bs.tooltip').tip.parentNode, null, 'tooltip removed')
|
368
|
+
// })
|
369
|
+
|
370
|
+
QUnit.test('should show tooltip when toggle is called', function (assert) {
|
371
|
+
assert.expect(1)
|
372
|
+
$('<a href="#" rel="tooltip" title="tooltip on toggle"/>')
|
373
|
+
.appendTo('#qunit-fixture')
|
374
|
+
.bootstrapTooltip({
|
375
|
+
trigger: 'manual'
|
376
|
+
})
|
377
|
+
.bootstrapTooltip('toggle')
|
378
|
+
|
379
|
+
assert.ok($('.tooltip').is('.fade.show'), 'tooltip is faded active')
|
380
|
+
})
|
381
|
+
|
382
|
+
QUnit.test('should hide previously shown tooltip when toggle is called on tooltip', function (assert) {
|
383
|
+
assert.expect(1)
|
384
|
+
$('<a href="#" rel="tooltip" title="tooltip on toggle">@ResentedHook</a>')
|
385
|
+
.appendTo('#qunit-fixture')
|
386
|
+
.bootstrapTooltip({
|
387
|
+
trigger: 'manual'
|
388
|
+
})
|
389
|
+
.bootstrapTooltip('show')
|
390
|
+
|
391
|
+
$('.tooltip').bootstrapTooltip('toggle')
|
392
|
+
assert.ok($('.tooltip').not('.fade.show'), 'tooltip was faded out')
|
393
|
+
})
|
394
|
+
|
395
|
+
QUnit.test('should place tooltips inside body when container is body', function (assert) {
|
396
|
+
assert.expect(3)
|
397
|
+
var done = assert.async()
|
398
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
399
|
+
.appendTo('#qunit-fixture')
|
400
|
+
.bootstrapTooltip({
|
401
|
+
container: 'body'
|
402
|
+
})
|
403
|
+
|
404
|
+
$tooltip
|
405
|
+
.one('shown.bs.tooltip', function () {
|
406
|
+
assert.notEqual($('body > .tooltip').length, 0, 'tooltip is direct descendant of body')
|
407
|
+
assert.strictEqual($('#qunit-fixture > .tooltip').length, 0, 'tooltip is not in parent')
|
408
|
+
$tooltip.bootstrapTooltip('hide')
|
409
|
+
})
|
410
|
+
.one('hidden.bs.tooltip', function () {
|
411
|
+
assert.strictEqual($('body > .tooltip').length, 0, 'tooltip was removed from dom')
|
412
|
+
done()
|
413
|
+
})
|
414
|
+
.bootstrapTooltip('show')
|
415
|
+
})
|
416
|
+
|
417
|
+
QUnit.test('should place tooltips inside a specific container when container is an element', function (assert) {
|
418
|
+
assert.expect(3)
|
419
|
+
var done = assert.async()
|
420
|
+
var $container = $('<div></div>').appendTo('#qunit-fixture')
|
421
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
422
|
+
.appendTo('#qunit-fixture')
|
423
|
+
.bootstrapTooltip({
|
424
|
+
container: $container[0]
|
425
|
+
})
|
426
|
+
|
427
|
+
$tooltip
|
428
|
+
.one('shown.bs.tooltip', function () {
|
429
|
+
assert.strictEqual($container.find('.tooltip').length, 1)
|
430
|
+
assert.strictEqual($('#qunit-fixture > .tooltip').length, 0, 'tooltip is not in parent')
|
431
|
+
$tooltip.bootstrapTooltip('hide')
|
432
|
+
})
|
433
|
+
.one('hidden.bs.tooltip', function () {
|
434
|
+
assert.strictEqual($container.find('.tooltip').length, 0, 'tooltip was removed from dom')
|
435
|
+
done()
|
436
|
+
})
|
437
|
+
.bootstrapTooltip('show')
|
438
|
+
})
|
439
|
+
|
440
|
+
QUnit.test('should place tooltips inside a specific container when container is a selector', function (assert) {
|
441
|
+
assert.expect(3)
|
442
|
+
var done = assert.async()
|
443
|
+
var $container = $('<div id="container"></div>').appendTo('#qunit-fixture')
|
444
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
445
|
+
.appendTo('#qunit-fixture')
|
446
|
+
.bootstrapTooltip({
|
447
|
+
container: '#container'
|
448
|
+
})
|
449
|
+
|
450
|
+
$tooltip
|
451
|
+
.one('shown.bs.tooltip', function () {
|
452
|
+
assert.strictEqual($container.find('.tooltip').length, 1)
|
453
|
+
assert.strictEqual($('#qunit-fixture > .tooltip').length, 0, 'tooltip is not in parent')
|
454
|
+
$tooltip.bootstrapTooltip('hide')
|
455
|
+
})
|
456
|
+
.one('hidden.bs.tooltip', function () {
|
457
|
+
assert.strictEqual($container.find('.tooltip').length, 0, 'tooltip was removed from dom')
|
458
|
+
done()
|
459
|
+
})
|
460
|
+
.bootstrapTooltip('show')
|
461
|
+
})
|
462
|
+
|
463
|
+
QUnit.test('should add position class before positioning so that position-specific styles are taken into account', function (assert) {
|
464
|
+
assert.expect(2)
|
465
|
+
var done = assert.async()
|
466
|
+
var styles = '<style>' +
|
467
|
+
'.bs-tooltip-right { white-space: nowrap; }' +
|
468
|
+
'.bs-tooltip-right .tooltip-inner { max-width: none; }' +
|
469
|
+
'</style>'
|
470
|
+
var $styles = $(styles).appendTo('head')
|
471
|
+
|
472
|
+
var $container = $('<div/>').appendTo('#qunit-fixture')
|
473
|
+
$('<a href="#" rel="tooltip" title="very very very very very very very very long tooltip in one line"/>')
|
474
|
+
.appendTo($container)
|
475
|
+
.bootstrapTooltip({
|
476
|
+
placement: 'right',
|
477
|
+
trigger: 'manual'
|
478
|
+
})
|
479
|
+
.on('inserted.bs.tooltip', function () {
|
480
|
+
var $tooltip = $($(this).data('bs.tooltip').tip)
|
481
|
+
assert.ok($tooltip.hasClass('bs-tooltip-right'))
|
482
|
+
assert.ok(typeof $tooltip.attr('style') === 'undefined')
|
483
|
+
$styles.remove()
|
484
|
+
done()
|
485
|
+
})
|
486
|
+
.bootstrapTooltip('show')
|
487
|
+
})
|
488
|
+
|
489
|
+
QUnit.test('should use title attribute for tooltip text', function (assert) {
|
490
|
+
assert.expect(2)
|
491
|
+
var done = assert.async()
|
492
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Simple tooltip"/>')
|
493
|
+
.appendTo('#qunit-fixture')
|
494
|
+
.bootstrapTooltip()
|
495
|
+
|
496
|
+
$tooltip
|
497
|
+
.one('shown.bs.tooltip', function () {
|
498
|
+
assert.strictEqual($('.tooltip').children('.tooltip-inner').text(), 'Simple tooltip', 'title from title attribute is set')
|
499
|
+
$tooltip.bootstrapTooltip('hide')
|
500
|
+
})
|
501
|
+
.one('hidden.bs.tooltip', function () {
|
502
|
+
assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom')
|
503
|
+
done()
|
504
|
+
})
|
505
|
+
.bootstrapTooltip('show')
|
506
|
+
})
|
507
|
+
|
508
|
+
QUnit.test('should prefer title attribute over title option', function (assert) {
|
509
|
+
assert.expect(2)
|
510
|
+
var done = assert.async()
|
511
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Simple tooltip"/>')
|
512
|
+
.appendTo('#qunit-fixture')
|
513
|
+
.bootstrapTooltip({
|
514
|
+
title: 'This is a tooltip with some content'
|
515
|
+
})
|
516
|
+
|
517
|
+
$tooltip
|
518
|
+
.one('shown.bs.tooltip', function () {
|
519
|
+
assert.strictEqual($('.tooltip').children('.tooltip-inner').text(), 'Simple tooltip', 'title is set from title attribute while preferred over title option')
|
520
|
+
$tooltip.bootstrapTooltip('hide')
|
521
|
+
})
|
522
|
+
.one('hidden.bs.tooltip', function () {
|
523
|
+
assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom')
|
524
|
+
done()
|
525
|
+
})
|
526
|
+
.bootstrapTooltip('show')
|
527
|
+
})
|
528
|
+
|
529
|
+
QUnit.test('should use title option', function (assert) {
|
530
|
+
assert.expect(2)
|
531
|
+
var done = assert.async()
|
532
|
+
var $tooltip = $('<a href="#" rel="tooltip"/>')
|
533
|
+
.appendTo('#qunit-fixture')
|
534
|
+
.bootstrapTooltip({
|
535
|
+
title: 'This is a tooltip with some content'
|
536
|
+
})
|
537
|
+
|
538
|
+
$tooltip
|
539
|
+
.one('shown.bs.tooltip', function () {
|
540
|
+
assert.strictEqual($('.tooltip').children('.tooltip-inner').text(), 'This is a tooltip with some content', 'title from title option is set')
|
541
|
+
$tooltip.bootstrapTooltip('hide')
|
542
|
+
})
|
543
|
+
.one('hidden.bs.tooltip', function () {
|
544
|
+
assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom')
|
545
|
+
done()
|
546
|
+
})
|
547
|
+
.bootstrapTooltip('show')
|
548
|
+
})
|
549
|
+
|
550
|
+
QUnit.test('should not error when trying to show an top-placed tooltip that has been removed from the dom', function (assert) {
|
551
|
+
assert.expect(1)
|
552
|
+
var passed = true
|
553
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
554
|
+
.appendTo('#qunit-fixture')
|
555
|
+
.one('show.bs.tooltip', function () {
|
556
|
+
$(this).remove()
|
557
|
+
})
|
558
|
+
.bootstrapTooltip({
|
559
|
+
placement: 'top'
|
560
|
+
})
|
561
|
+
|
562
|
+
try {
|
563
|
+
$tooltip.bootstrapTooltip('show')
|
564
|
+
} catch (err) {
|
565
|
+
passed = false
|
566
|
+
}
|
567
|
+
|
568
|
+
assert.ok(passed, '.tooltip(\'show\') should not throw an error if element no longer is in dom')
|
569
|
+
})
|
570
|
+
|
571
|
+
QUnit.test('should show tooltip if leave event hasn\'t occurred before delay expires', function (assert) {
|
572
|
+
assert.expect(2)
|
573
|
+
var done = assert.async()
|
574
|
+
|
575
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
576
|
+
.appendTo('#qunit-fixture')
|
577
|
+
.bootstrapTooltip({
|
578
|
+
delay: 150
|
579
|
+
})
|
580
|
+
|
581
|
+
setTimeout(function () {
|
582
|
+
assert.ok(!$('.tooltip').is('.fade.show'), '100ms: tooltip is not faded active')
|
583
|
+
}, 100)
|
584
|
+
|
585
|
+
setTimeout(function () {
|
586
|
+
assert.ok($('.tooltip').is('.fade.show'), '200ms: tooltip is faded active')
|
587
|
+
done()
|
588
|
+
}, 200)
|
589
|
+
|
590
|
+
$tooltip.trigger('mouseenter')
|
591
|
+
})
|
592
|
+
|
593
|
+
QUnit.test('should not show tooltip if leave event occurs before delay expires', function (assert) {
|
594
|
+
assert.expect(2)
|
595
|
+
var done = assert.async()
|
596
|
+
|
597
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
598
|
+
.appendTo('#qunit-fixture')
|
599
|
+
.bootstrapTooltip({
|
600
|
+
delay: 150
|
601
|
+
})
|
602
|
+
|
603
|
+
setTimeout(function () {
|
604
|
+
assert.ok(!$('.tooltip').is('.fade.show'), '100ms: tooltip not faded active')
|
605
|
+
$tooltip.trigger('mouseout')
|
606
|
+
}, 100)
|
607
|
+
|
608
|
+
setTimeout(function () {
|
609
|
+
assert.ok(!$('.tooltip').is('.fade.show'), '200ms: tooltip not faded active')
|
610
|
+
done()
|
611
|
+
}, 200)
|
612
|
+
|
613
|
+
$tooltip.trigger('mouseenter')
|
614
|
+
})
|
615
|
+
|
616
|
+
QUnit.test('should not hide tooltip if leave event occurs and enter event occurs within the hide delay', function (assert) {
|
617
|
+
assert.expect(3)
|
618
|
+
var done = assert.async()
|
619
|
+
|
620
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
621
|
+
.appendTo('#qunit-fixture')
|
622
|
+
.bootstrapTooltip({
|
623
|
+
delay: {
|
624
|
+
show: 0,
|
625
|
+
hide: 150
|
626
|
+
}
|
627
|
+
})
|
628
|
+
|
629
|
+
setTimeout(function () {
|
630
|
+
assert.ok($('.tooltip').is('.fade.show'), '1ms: tooltip faded active')
|
631
|
+
$tooltip.trigger('mouseout')
|
632
|
+
|
633
|
+
setTimeout(function () {
|
634
|
+
assert.ok($('.tooltip').is('.fade.show'), '100ms: tooltip still faded active')
|
635
|
+
$tooltip.trigger('mouseenter')
|
636
|
+
}, 100)
|
637
|
+
|
638
|
+
setTimeout(function () {
|
639
|
+
assert.ok($('.tooltip').is('.fade.show'), '200ms: tooltip still faded active')
|
640
|
+
done()
|
641
|
+
}, 200)
|
642
|
+
}, 0)
|
643
|
+
|
644
|
+
$tooltip.trigger('mouseenter')
|
645
|
+
})
|
646
|
+
|
647
|
+
QUnit.test('should not show tooltip if leave event occurs before delay expires', function (assert) {
|
648
|
+
assert.expect(2)
|
649
|
+
var done = assert.async()
|
650
|
+
|
651
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
652
|
+
.appendTo('#qunit-fixture')
|
653
|
+
.bootstrapTooltip({
|
654
|
+
delay: 150
|
655
|
+
})
|
656
|
+
|
657
|
+
setTimeout(function () {
|
658
|
+
assert.ok(!$('.tooltip').is('.fade.show'), '100ms: tooltip not faded active')
|
659
|
+
$tooltip.trigger('mouseout')
|
660
|
+
}, 100)
|
661
|
+
|
662
|
+
setTimeout(function () {
|
663
|
+
assert.ok(!$('.tooltip').is('.fade.show'), '200ms: tooltip not faded active')
|
664
|
+
done()
|
665
|
+
}, 200)
|
666
|
+
|
667
|
+
$tooltip.trigger('mouseenter')
|
668
|
+
})
|
669
|
+
|
670
|
+
QUnit.test('should not show tooltip if leave event occurs before delay expires, even if hide delay is 0', function (assert) {
|
671
|
+
assert.expect(2)
|
672
|
+
var done = assert.async()
|
673
|
+
|
674
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
675
|
+
.appendTo('#qunit-fixture')
|
676
|
+
.bootstrapTooltip({
|
677
|
+
delay: {
|
678
|
+
show: 150,
|
679
|
+
hide: 0
|
680
|
+
}
|
681
|
+
})
|
682
|
+
|
683
|
+
setTimeout(function () {
|
684
|
+
assert.ok(!$('.tooltip').is('.fade.show'), '100ms: tooltip not faded active')
|
685
|
+
$tooltip.trigger('mouseout')
|
686
|
+
}, 100)
|
687
|
+
|
688
|
+
setTimeout(function () {
|
689
|
+
assert.ok(!$('.tooltip').is('.fade.show'), '250ms: tooltip not faded active')
|
690
|
+
done()
|
691
|
+
}, 250)
|
692
|
+
|
693
|
+
$tooltip.trigger('mouseenter')
|
694
|
+
})
|
695
|
+
|
696
|
+
QUnit.test('should wait 200ms before hiding the tooltip', function (assert) {
|
697
|
+
assert.expect(3)
|
698
|
+
var done = assert.async()
|
699
|
+
|
700
|
+
var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>')
|
701
|
+
.appendTo('#qunit-fixture')
|
702
|
+
.bootstrapTooltip({
|
703
|
+
delay: {
|
704
|
+
show: 0,
|
705
|
+
hide: 150
|
706
|
+
}
|
707
|
+
})
|
708
|
+
|
709
|
+
setTimeout(function () {
|
710
|
+
assert.ok($($tooltip.data('bs.tooltip').tip).is('.fade.show'), '1ms: tooltip faded active')
|
711
|
+
|
712
|
+
$tooltip.trigger('mouseout')
|
713
|
+
|
714
|
+
setTimeout(function () {
|
715
|
+
assert.ok($($tooltip.data('bs.tooltip').tip).is('.fade.show'), '100ms: tooltip still faded active')
|
716
|
+
}, 100)
|
717
|
+
|
718
|
+
setTimeout(function () {
|
719
|
+
assert.ok(!$($tooltip.data('bs.tooltip').tip).is('.show'), '200ms: tooltip removed')
|
720
|
+
done()
|
721
|
+
}, 200)
|
722
|
+
}, 0)
|
723
|
+
|
724
|
+
$tooltip.trigger('mouseenter')
|
725
|
+
})
|
726
|
+
|
727
|
+
QUnit.test('should not reload the tooltip on subsequent mouseenter events', function (assert) {
|
728
|
+
assert.expect(1)
|
729
|
+
var titleHtml = function () {
|
730
|
+
var uid = Util.getUID('tooltip')
|
731
|
+
return '<p id="tt-content">' + uid + '</p><p>' + uid + '</p><p>' + uid + '</p>'
|
732
|
+
}
|
733
|
+
|
734
|
+
var $tooltip = $('<span id="tt-outer" rel="tooltip" data-trigger="hover" data-placement="top">some text</span>')
|
735
|
+
.appendTo('#qunit-fixture')
|
736
|
+
|
737
|
+
$tooltip.bootstrapTooltip({
|
738
|
+
html: true,
|
739
|
+
animation: false,
|
740
|
+
trigger: 'hover',
|
741
|
+
delay: {
|
742
|
+
show: 0,
|
743
|
+
hide: 500
|
744
|
+
},
|
745
|
+
container: $tooltip,
|
746
|
+
title: titleHtml
|
747
|
+
})
|
748
|
+
|
749
|
+
$('#tt-outer').trigger('mouseenter')
|
750
|
+
|
751
|
+
var currentUid = $('#tt-content').text()
|
752
|
+
|
753
|
+
$('#tt-content').trigger('mouseenter')
|
754
|
+
assert.strictEqual(currentUid, $('#tt-content').text())
|
755
|
+
})
|
756
|
+
|
757
|
+
QUnit.test('should not reload the tooltip if the mouse leaves and re-enters before hiding', function (assert) {
|
758
|
+
assert.expect(4)
|
759
|
+
|
760
|
+
var titleHtml = function () {
|
761
|
+
var uid = Util.getUID('tooltip')
|
762
|
+
return '<p id="tt-content">' + uid + '</p><p>' + uid + '</p><p>' + uid + '</p>'
|
763
|
+
}
|
764
|
+
|
765
|
+
var $tooltip = $('<span id="tt-outer" rel="tooltip" data-trigger="hover" data-placement="top">some text</span>')
|
766
|
+
.appendTo('#qunit-fixture')
|
767
|
+
|
768
|
+
$tooltip.bootstrapTooltip({
|
769
|
+
html: true,
|
770
|
+
animation: false,
|
771
|
+
trigger: 'hover',
|
772
|
+
delay: {
|
773
|
+
show: 0,
|
774
|
+
hide: 500
|
775
|
+
},
|
776
|
+
title: titleHtml
|
777
|
+
})
|
778
|
+
|
779
|
+
var obj = $tooltip.data('bs.tooltip')
|
780
|
+
|
781
|
+
$('#tt-outer').trigger('mouseenter')
|
782
|
+
|
783
|
+
var currentUid = $('#tt-content').text()
|
784
|
+
|
785
|
+
$('#tt-outer').trigger('mouseleave')
|
786
|
+
assert.strictEqual(currentUid, $('#tt-content').text())
|
787
|
+
|
788
|
+
assert.ok(obj._hoverState === 'out', 'the tooltip hoverState should be set to "out"')
|
789
|
+
|
790
|
+
$('#tt-outer').trigger('mouseenter')
|
791
|
+
assert.ok(obj._hoverState === 'show', 'the tooltip hoverState should be set to "show"')
|
792
|
+
|
793
|
+
assert.strictEqual(currentUid, $('#tt-content').text())
|
794
|
+
})
|
795
|
+
|
796
|
+
QUnit.test('should do nothing when an attempt is made to hide an uninitialized tooltip', function (assert) {
|
797
|
+
assert.expect(1)
|
798
|
+
|
799
|
+
var $tooltip = $('<span data-toggle="tooltip" title="some tip">some text</span>')
|
800
|
+
.appendTo('#qunit-fixture')
|
801
|
+
.on('hidden.bs.tooltip shown.bs.tooltip', function () {
|
802
|
+
assert.ok(false, 'should not fire any tooltip events')
|
803
|
+
})
|
804
|
+
.bootstrapTooltip('hide')
|
805
|
+
assert.strictEqual(typeof $tooltip.data('bs.tooltip'), 'undefined', 'should not initialize the tooltip')
|
806
|
+
})
|
807
|
+
|
808
|
+
QUnit.test('should not remove tooltip if multiple triggers are set and one is still active', function (assert) {
|
809
|
+
assert.expect(41)
|
810
|
+
var $el = $('<button>Trigger</button>')
|
811
|
+
.appendTo('#qunit-fixture')
|
812
|
+
.bootstrapTooltip({
|
813
|
+
trigger: 'click hover focus',
|
814
|
+
animation: false
|
815
|
+
})
|
816
|
+
var tooltip = $el.data('bs.tooltip')
|
817
|
+
var $tooltip = $(tooltip.getTipElement())
|
818
|
+
|
819
|
+
function showingTooltip() {
|
820
|
+
return $tooltip.hasClass('show') || tooltip._hoverState === 'show'
|
821
|
+
}
|
822
|
+
|
823
|
+
var tests = [
|
824
|
+
['mouseenter', 'mouseleave'],
|
825
|
+
|
826
|
+
['focusin', 'focusout'],
|
827
|
+
|
828
|
+
['click', 'click'],
|
829
|
+
|
830
|
+
['mouseenter', 'focusin', 'focusout', 'mouseleave'],
|
831
|
+
['mouseenter', 'focusin', 'mouseleave', 'focusout'],
|
832
|
+
|
833
|
+
['focusin', 'mouseenter', 'mouseleave', 'focusout'],
|
834
|
+
['focusin', 'mouseenter', 'focusout', 'mouseleave'],
|
835
|
+
|
836
|
+
['click', 'focusin', 'mouseenter', 'focusout', 'mouseleave', 'click'],
|
837
|
+
['mouseenter', 'click', 'focusin', 'focusout', 'mouseleave', 'click'],
|
838
|
+
['mouseenter', 'focusin', 'click', 'click', 'mouseleave', 'focusout']
|
839
|
+
]
|
840
|
+
|
841
|
+
assert.ok(!showingTooltip())
|
842
|
+
|
843
|
+
$.each(tests, function (idx, triggers) {
|
844
|
+
for (var i = 0, len = triggers.length; i < len; i++) {
|
845
|
+
$el.trigger(triggers[i])
|
846
|
+
assert.equal(i < len - 1, showingTooltip())
|
847
|
+
}
|
848
|
+
})
|
849
|
+
})
|
850
|
+
|
851
|
+
QUnit.test('should show on first trigger after hide', function (assert) {
|
852
|
+
assert.expect(3)
|
853
|
+
var $el = $('<a href="#" rel="tooltip" title="Test tooltip"/>')
|
854
|
+
.appendTo('#qunit-fixture')
|
855
|
+
.bootstrapTooltip({
|
856
|
+
trigger: 'click hover focus',
|
857
|
+
animation: false
|
858
|
+
})
|
859
|
+
|
860
|
+
var tooltip = $el.data('bs.tooltip')
|
861
|
+
var $tooltip = $(tooltip.getTipElement())
|
862
|
+
|
863
|
+
function showingTooltip() {
|
864
|
+
return $tooltip.hasClass('show') || tooltip._hoverState === 'show'
|
865
|
+
}
|
866
|
+
|
867
|
+
$el.trigger('click')
|
868
|
+
assert.ok(showingTooltip(), 'tooltip is faded in')
|
869
|
+
|
870
|
+
$el.bootstrapTooltip('hide')
|
871
|
+
assert.ok(!showingTooltip(), 'tooltip was faded out')
|
872
|
+
|
873
|
+
$el.trigger('click')
|
874
|
+
assert.ok(showingTooltip(), 'tooltip is faded in again')
|
875
|
+
})
|
876
|
+
|
877
|
+
QUnit.test('should hide tooltip when their containing modal is closed', function (assert) {
|
878
|
+
assert.expect(1)
|
879
|
+
var done = assert.async()
|
880
|
+
var templateHTML = '<div id="modal-test" class="modal">' +
|
881
|
+
'<div class="modal-dialog" role="document">' +
|
882
|
+
'<div class="modal-content">' +
|
883
|
+
'<div class="modal-body">' +
|
884
|
+
'<a id="tooltipTest" href="#" data-toggle="tooltip" title="Some tooltip text!">Tooltip</a>' +
|
885
|
+
'</div>' +
|
886
|
+
'</div>' +
|
887
|
+
'</div>' +
|
888
|
+
'</div>'
|
889
|
+
|
890
|
+
$(templateHTML).appendTo('#qunit-fixture')
|
891
|
+
$('#tooltipTest')
|
892
|
+
.bootstrapTooltip({
|
893
|
+
trigger: 'manuel'
|
894
|
+
})
|
895
|
+
.on('shown.bs.tooltip', function () {
|
896
|
+
$('#modal-test').modal('hide')
|
897
|
+
})
|
898
|
+
.on('hide.bs.tooltip', function () {
|
899
|
+
assert.ok(true, 'tooltip hide')
|
900
|
+
done()
|
901
|
+
})
|
902
|
+
|
903
|
+
$('#modal-test')
|
904
|
+
.on('shown.bs.modal', function () {
|
905
|
+
$('#tooltipTest').bootstrapTooltip('show')
|
906
|
+
})
|
907
|
+
.modal('show')
|
908
|
+
})
|
909
|
+
|
910
|
+
QUnit.test('should allow to close modal if the tooltip element is detached', function (assert) {
|
911
|
+
assert.expect(1)
|
912
|
+
var done = assert.async()
|
913
|
+
var templateHTML = [
|
914
|
+
'<div id="modal-test" class="modal">',
|
915
|
+
' <div class="modal-dialog" role="document">',
|
916
|
+
' <div class="modal-content">',
|
917
|
+
' <div class="modal-body">',
|
918
|
+
' <a id="tooltipTest" href="#" data-toggle="tooltip" title="Some tooltip text!">Tooltip</a>',
|
919
|
+
' </div>',
|
920
|
+
' </div>',
|
921
|
+
' </div>',
|
922
|
+
'</div>'
|
923
|
+
].join('')
|
924
|
+
|
925
|
+
$(templateHTML).appendTo('#qunit-fixture')
|
926
|
+
var $tooltip = $('#tooltipTest')
|
927
|
+
var $modal = $('#modal-test')
|
928
|
+
|
929
|
+
$tooltip.on('shown.bs.tooltip', function () {
|
930
|
+
$tooltip.detach()
|
931
|
+
$tooltip.bootstrapTooltip('dispose')
|
932
|
+
$modal.modal('hide')
|
933
|
+
})
|
934
|
+
|
935
|
+
$modal.on('shown.bs.modal', function () {
|
936
|
+
$tooltip.bootstrapTooltip({
|
937
|
+
trigger: 'manuel'
|
938
|
+
})
|
939
|
+
.bootstrapTooltip('show')
|
940
|
+
})
|
941
|
+
.on('hidden.bs.modal', function () {
|
942
|
+
assert.ok(true, 'modal hidden')
|
943
|
+
done()
|
944
|
+
})
|
945
|
+
.modal('show')
|
946
|
+
})
|
947
|
+
|
948
|
+
QUnit.test('should reset tip classes when hidden event triggered', function (assert) {
|
949
|
+
assert.expect(2)
|
950
|
+
var done = assert.async()
|
951
|
+
var $el = $('<a href="#" rel="tooltip" title="Test tooltip"/>')
|
952
|
+
.appendTo('#qunit-fixture')
|
953
|
+
.bootstrapTooltip('show')
|
954
|
+
.on('hidden.bs.tooltip', function () {
|
955
|
+
var tooltip = $el.data('bs.tooltip')
|
956
|
+
var $tooltip = $(tooltip.getTipElement())
|
957
|
+
assert.ok($tooltip.hasClass('tooltip'))
|
958
|
+
assert.ok($tooltip.hasClass('fade'))
|
959
|
+
done()
|
960
|
+
})
|
961
|
+
|
962
|
+
$el.bootstrapTooltip('hide')
|
963
|
+
})
|
964
|
+
|
965
|
+
QUnit.test('should convert number in title to string', function (assert) {
|
966
|
+
assert.expect(1)
|
967
|
+
var done = assert.async()
|
968
|
+
var $el = $('<a href="#" rel="tooltip" title="7"/>')
|
969
|
+
.appendTo('#qunit-fixture')
|
970
|
+
.on('shown.bs.tooltip', function () {
|
971
|
+
var tooltip = $el.data('bs.tooltip')
|
972
|
+
var $tooltip = $(tooltip.getTipElement())
|
973
|
+
assert.strictEqual($tooltip.children().text(), '7')
|
974
|
+
done()
|
975
|
+
})
|
976
|
+
|
977
|
+
$el.bootstrapTooltip('show')
|
978
|
+
})
|
979
|
+
|
980
|
+
QUnit.test('tooltip should be shown right away after the call of disable/enable', function (assert) {
|
981
|
+
assert.expect(2)
|
982
|
+
var done = assert.async()
|
983
|
+
|
984
|
+
var $trigger = $('<a href="#" rel="tooltip" data-trigger="click" title="Another tooltip"/>')
|
985
|
+
.appendTo('#qunit-fixture')
|
986
|
+
.bootstrapTooltip()
|
987
|
+
.on('shown.bs.tooltip', function () {
|
988
|
+
assert.strictEqual($('.tooltip').hasClass('show'), true)
|
989
|
+
done()
|
990
|
+
})
|
991
|
+
|
992
|
+
$trigger.bootstrapTooltip('disable')
|
993
|
+
$trigger.trigger($.Event('click'))
|
994
|
+
setTimeout(function () {
|
995
|
+
assert.strictEqual($('.tooltip').length === 0, true)
|
996
|
+
$trigger.bootstrapTooltip('enable')
|
997
|
+
$trigger.trigger($.Event('click'))
|
998
|
+
}, 200)
|
999
|
+
})
|
1000
|
+
|
1001
|
+
QUnit.test('should call Popper.js to update', function (assert) {
|
1002
|
+
assert.expect(2)
|
1003
|
+
|
1004
|
+
var $tooltip = $('<a href="#" rel="tooltip" data-trigger="click" title="Another tooltip"/>')
|
1005
|
+
.appendTo('#qunit-fixture')
|
1006
|
+
.bootstrapTooltip()
|
1007
|
+
|
1008
|
+
var tooltip = $tooltip.data('bs.tooltip')
|
1009
|
+
tooltip.show()
|
1010
|
+
assert.ok(tooltip._popper)
|
1011
|
+
|
1012
|
+
var spyPopper = sinon.spy(tooltip._popper, 'scheduleUpdate')
|
1013
|
+
tooltip.update()
|
1014
|
+
assert.ok(spyPopper.called)
|
1015
|
+
})
|
1016
|
+
|
1017
|
+
QUnit.test('should not call Popper.js to update', function (assert) {
|
1018
|
+
assert.expect(1)
|
1019
|
+
|
1020
|
+
var $tooltip = $('<a href="#" rel="tooltip" data-trigger="click" title="Another tooltip"/>')
|
1021
|
+
.appendTo('#qunit-fixture')
|
1022
|
+
.bootstrapTooltip()
|
1023
|
+
|
1024
|
+
var tooltip = $tooltip.data('bs.tooltip')
|
1025
|
+
tooltip.update()
|
1026
|
+
|
1027
|
+
assert.ok(tooltip._popper === null)
|
1028
|
+
})
|
1029
|
+
|
1030
|
+
QUnit.test('should use Popper.js to get the tip on placement change', function (assert) {
|
1031
|
+
assert.expect(1)
|
1032
|
+
|
1033
|
+
var $tooltip = $('<a href="#" rel="tooltip" data-trigger="click" title="Another tooltip"/>')
|
1034
|
+
.appendTo('#qunit-fixture')
|
1035
|
+
.bootstrapTooltip()
|
1036
|
+
|
1037
|
+
var $tipTest = $('<div class="bs-tooltip" />')
|
1038
|
+
.appendTo('#qunit-fixture')
|
1039
|
+
|
1040
|
+
var tooltip = $tooltip.data('bs.tooltip')
|
1041
|
+
tooltip.tip = null
|
1042
|
+
|
1043
|
+
tooltip._handlePopperPlacementChange({
|
1044
|
+
instance: {
|
1045
|
+
popper: $tipTest[0]
|
1046
|
+
},
|
1047
|
+
placement: 'auto'
|
1048
|
+
})
|
1049
|
+
|
1050
|
+
assert.ok(tooltip.tip === $tipTest[0])
|
1051
|
+
})
|
1052
|
+
|
1053
|
+
QUnit.test('should toggle enabled', function (assert) {
|
1054
|
+
assert.expect(3)
|
1055
|
+
|
1056
|
+
var $tooltip = $('<a href="#" rel="tooltip" data-trigger="click" title="Another tooltip"/>')
|
1057
|
+
.appendTo('#qunit-fixture')
|
1058
|
+
.bootstrapTooltip()
|
1059
|
+
|
1060
|
+
var tooltip = $tooltip.data('bs.tooltip')
|
1061
|
+
|
1062
|
+
assert.strictEqual(tooltip._isEnabled, true)
|
1063
|
+
|
1064
|
+
tooltip.toggleEnabled()
|
1065
|
+
|
1066
|
+
assert.strictEqual(tooltip._isEnabled, false)
|
1067
|
+
|
1068
|
+
tooltip.toggleEnabled()
|
1069
|
+
|
1070
|
+
assert.strictEqual(tooltip._isEnabled, true)
|
1071
|
+
})
|
1072
|
+
})
|