tooltip.js 19.5 KB
Newer Older
Jacob Thornton's avatar
Jacob Thornton committed
1
2
$(function () {

XhmikosR's avatar
XhmikosR committed
3
    module('tooltip')
Jacob Thornton's avatar
Jacob Thornton committed
4

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

XhmikosR's avatar
XhmikosR committed
11
12
      test('should be defined on jquery object', function () {
        var div = $('<div></div>')
13
        ok(div.tooltip, 'popover method is defined')
Jacob Thornton's avatar
Jacob Thornton committed
14
15
      })

XhmikosR's avatar
XhmikosR committed
16
17
      test('should return element', function () {
        var div = $('<div></div>')
18
        ok(div.tooltip() == div, 'document.body returned')
Jacob Thornton's avatar
Jacob Thornton committed
19
20
      })

XhmikosR's avatar
XhmikosR committed
21
      test('should expose default settings', function () {
fat's avatar
fat committed
22
        ok(!!$.fn.tooltip.Constructor.DEFAULTS, 'defaults is defined')
Jacob Thornton's avatar
Jacob Thornton committed
23
24
      })

XhmikosR's avatar
XhmikosR committed
25
      test('should empty title attribute', function () {
26
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').tooltip()
Yohn's avatar
Yohn committed
27
        ok(tooltip.attr('title') === '', 'title attribute was emptied')
Jacob Thornton's avatar
Jacob Thornton committed
28
29
      })

XhmikosR's avatar
XhmikosR committed
30
      test('should add data attribute for referencing original title', function () {
31
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').tooltip()
32
        equal(tooltip.attr('data-original-title'), 'Another tooltip', 'original title preserved in data attribute')
Jacob Thornton's avatar
Jacob Thornton committed
33
34
      })

XhmikosR's avatar
XhmikosR committed
35
      test('should place tooltips relative to placement option', function () {
Jacob Thornton's avatar
Jacob Thornton committed
36
        $.support.transition = false
37
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
38
          .appendTo('#qunit-fixture')
39
40
          .tooltip({placement: 'bottom'})
          .tooltip('show')
Jacob Thornton's avatar
Jacob Thornton committed
41

XhmikosR's avatar
XhmikosR committed
42
        ok($('.tooltip').is('.fade.bottom.in'), 'has correct classes applied')
43
        tooltip.tooltip('hide')
Jacob Thornton's avatar
Jacob Thornton committed
44
45
      })

XhmikosR's avatar
XhmikosR committed
46
      test('should allow html entities', function () {
Jacob Thornton's avatar
Jacob Thornton committed
47
        $.support.transition = false
48
        var tooltip = $('<a href="#" rel="tooltip" title="<b>@fat</b>"></a>')
49
          .appendTo('#qunit-fixture')
50
          .tooltip({html: true})
51
          .tooltip('show')
Jacob Thornton's avatar
Jacob Thornton committed
52

53
54
        ok($('.tooltip b').length, 'b tag was inserted')
        tooltip.tooltip('hide')
XhmikosR's avatar
XhmikosR committed
55
        ok(!$('.tooltip').length, 'tooltip removed')
Jacob Thornton's avatar
Jacob Thornton committed
56
57
      })

XhmikosR's avatar
XhmikosR committed
58
      test('should respect custom classes', function () {
59
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
60
          .appendTo('#qunit-fixture')
61
62
          .tooltip({ template: '<div class="tooltip some-class"><div class="tooltip-arrow"/><div class="tooltip-inner"/></div>'})
          .tooltip('show')
63

64
65
        ok($('.tooltip').hasClass('some-class'), 'custom class is present')
        tooltip.tooltip('hide')
XhmikosR's avatar
XhmikosR committed
66
        ok(!$('.tooltip').length, 'tooltip removed')
67
68
      })

XhmikosR's avatar
XhmikosR committed
69
      test('should fire show event', function () {
70
71
        stop()
        var tooltip = $('<div title="tooltip title"></div>')
XhmikosR's avatar
XhmikosR committed
72
73
          .on('show.bs.tooltip', function () {
            ok(true, 'show was called')
74
75
76
77
78
            start()
          })
          .tooltip('show')
      })

XhmikosR's avatar
XhmikosR committed
79
      test('should fire shown event', function () {
80
81
        stop()
        var tooltip = $('<div title="tooltip title"></div>')
XhmikosR's avatar
XhmikosR committed
82
83
          .on('shown.bs.tooltip', function () {
            ok(true, 'shown was called')
84
85
86
87
88
            start()
          })
          .tooltip('show')
      })

XhmikosR's avatar
XhmikosR committed
89
      test('should not fire shown event when default prevented', function () {
90
91
        stop()
        var tooltip = $('<div title="tooltip title"></div>')
XhmikosR's avatar
XhmikosR committed
92
          .on('show.bs.tooltip', function (e) {
93
            e.preventDefault()
XhmikosR's avatar
XhmikosR committed
94
            ok(true, 'show was called')
95
96
            start()
          })
XhmikosR's avatar
XhmikosR committed
97
98
          .on('shown.bs.tooltip', function () {
            ok(false, 'shown was called')
99
100
101
102
          })
          .tooltip('show')
      })

XhmikosR's avatar
XhmikosR committed
103
      test('should fire hide event', function () {
104
105
        stop()
        var tooltip = $('<div title="tooltip title"></div>')
XhmikosR's avatar
XhmikosR committed
106
          .on('shown.bs.tooltip', function () {
107
108
            $(this).tooltip('hide')
          })
XhmikosR's avatar
XhmikosR committed
109
110
          .on('hide.bs.tooltip', function () {
            ok(true, 'hide was called')
111
112
113
114
115
            start()
          })
          .tooltip('show')
      })

XhmikosR's avatar
XhmikosR committed
116
      test('should fire hidden event', function () {
117
118
        stop()
        var tooltip = $('<div title="tooltip title"></div>')
XhmikosR's avatar
XhmikosR committed
119
          .on('shown.bs.tooltip', function () {
120
121
            $(this).tooltip('hide')
          })
XhmikosR's avatar
XhmikosR committed
122
123
          .on('hidden.bs.tooltip', function () {
            ok(true, 'hidden was called')
124
125
126
127
128
            start()
          })
          .tooltip('show')
      })

XhmikosR's avatar
XhmikosR committed
129
      test('should not fire hidden event when default prevented', function () {
130
131
        stop()
        var tooltip = $('<div title="tooltip title"></div>')
XhmikosR's avatar
XhmikosR committed
132
          .on('shown.bs.tooltip', function () {
133
134
            $(this).tooltip('hide')
          })
XhmikosR's avatar
XhmikosR committed
135
          .on('hide.bs.tooltip', function (e) {
136
            e.preventDefault()
XhmikosR's avatar
XhmikosR committed
137
            ok(true, 'hide was called')
138
139
            start()
          })
XhmikosR's avatar
XhmikosR committed
140
141
          .on('hidden.bs.tooltip', function () {
            ok(false, 'hidden was called')
142
143
144
145
          })
          .tooltip('show')
      })

XhmikosR's avatar
XhmikosR committed
146
      test('should not show tooltip if leave event occurs before delay expires', function () {
147
148
149
150
151
152
153
154
155
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
          .appendTo('#qunit-fixture')
          .tooltip({ delay: 200 })

        stop()

        tooltip.trigger('mouseenter')

        setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
156
          ok(!$('.tooltip').is('.fade.in'), 'tooltip is not faded in')
157
158
          tooltip.trigger('mouseout')
          setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
159
            ok(!$('.tooltip').is('.fade.in'), 'tooltip is not faded in')
160
161
162
163
164
            start()
          }, 200)
        }, 100)
      })

XhmikosR's avatar
XhmikosR committed
165
      test('should not show tooltip if leave event occurs before delay expires, even if hide delay is 0', function () {
166
167
168
169
170
171
172
173
174
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
          .appendTo('#qunit-fixture')
          .tooltip({ delay: { show: 200, hide: 0} })

        stop()

        tooltip.trigger('mouseenter')

        setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
175
          ok(!$('.tooltip').is('.fade.in'), 'tooltip is not faded in')
176
177
          tooltip.trigger('mouseout')
          setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
178
            ok(!$('.tooltip').is('.fade.in'), 'tooltip is not faded in')
179
180
181
182
183
            start()
          }, 200)
        }, 100)
      })

XhmikosR's avatar
XhmikosR committed
184
      test('should wait 200 ms before hiding the tooltip', 3, function () {
Jacob Thornton's avatar
Jacob Thornton committed
185
186
187
188
189
190
191
192
193
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
          .appendTo('#qunit-fixture')
          .tooltip({ delay: { show: 0, hide: 200} })

        stop()

        tooltip.trigger('mouseenter')

        setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
194
          ok($('.tooltip').is('.fade.in'), 'tooltip is faded in')
Jacob Thornton's avatar
Jacob Thornton committed
195
196
          tooltip.trigger('mouseout')
          setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
197
            ok($('.tooltip').is('.fade.in'), '100ms:tooltip is still faded in')
Jacob Thornton's avatar
Jacob Thornton committed
198
            setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
199
              ok(!$('.tooltip').is('.in'), 'tooltip removed')
Jacob Thornton's avatar
Jacob Thornton committed
200
201
202
203
204
205
              start()
            }, 150)
          }, 100)
        }, 1)
      })

XhmikosR's avatar
XhmikosR committed
206
      test('should not hide tooltip if leave event occurs, then tooltip is show immediately again', function () {
Jacob Thornton's avatar
Jacob Thornton committed
207
208
209
210
211
212
213
214
215
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
          .appendTo('#qunit-fixture')
          .tooltip({ delay: { show: 0, hide: 200} })

        stop()

        tooltip.trigger('mouseenter')

        setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
216
          ok($('.tooltip').is('.fade.in'), 'tooltip is faded in')
Jacob Thornton's avatar
Jacob Thornton committed
217
218
          tooltip.trigger('mouseout')
          setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
219
            ok($('.tooltip').is('.fade.in'), '100ms:tooltip is still faded in')
Jacob Thornton's avatar
Jacob Thornton committed
220
221
            tooltip.trigger('mouseenter')
            setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
222
              ok($('.tooltip').is('.in'), 'tooltip removed')
Jacob Thornton's avatar
Jacob Thornton committed
223
224
225
226
227
228
              start()
            }, 150)
          }, 100)
        }, 1)
      })

XhmikosR's avatar
XhmikosR committed
229
      test('should not show tooltip if leave event occurs before delay expires', function () {
230
231
232
233
234
235
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
          .appendTo('#qunit-fixture')
          .tooltip({ delay: 100 })
        stop()
        tooltip.trigger('mouseenter')
        setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
236
          ok(!$('.tooltip').is('.fade.in'), 'tooltip is not faded in')
237
238
          tooltip.trigger('mouseout')
          setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
239
            ok(!$('.tooltip').is('.fade.in'), 'tooltip is not faded in')
240
241
242
243
244
            start()
          }, 100)
        }, 50)
      })

XhmikosR's avatar
XhmikosR committed
245
      test('should show tooltip if leave event hasn\'t occured before delay expires', function () {
246
247
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
          .appendTo('#qunit-fixture')
Jacob Thornton's avatar
Jacob Thornton committed
248
          .tooltip({ delay: 150 })
249
250
251
        stop()
        tooltip.trigger('mouseenter')
        setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
252
          ok(!$('.tooltip').is('.fade.in'), 'tooltip is not faded in')
253
        }, 100)
Jacob Thornton's avatar
Jacob Thornton committed
254
        setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
255
          ok($('.tooltip').is('.fade.in'), 'tooltip has faded in')
Jacob Thornton's avatar
Jacob Thornton committed
256
257
          start()
        }, 200)
258
259
      })

XhmikosR's avatar
XhmikosR committed
260
      test('should destroy tooltip', function () {
261
        var tooltip = $('<div/>').tooltip().on('click.foo', function () {})
262
        ok(tooltip.data('bs.tooltip'), 'tooltip has data')
263
264
        ok($._data(tooltip[0], 'events').mouseover && $._data(tooltip[0], 'events').mouseout, 'tooltip has hover event')
        ok($._data(tooltip[0], 'events').click[0].namespace == 'foo', 'tooltip has extra click.foo event')
265
        tooltip.tooltip('show')
266
        tooltip.tooltip('destroy')
267
        ok(!tooltip.hasClass('in'), 'tooltip is hidden')
268
        ok(!$._data(tooltip[0], 'bs.tooltip'), 'tooltip does not have data')
269
270
        ok($._data(tooltip[0], 'events').click[0].namespace == 'foo', 'tooltip still has click.foo')
        ok(!$._data(tooltip[0], 'events').mouseover && !$._data(tooltip[0], 'events').mouseout, 'tooltip does not have any events')
271
272
      })

XhmikosR's avatar
XhmikosR committed
273
      test('should show tooltip with delegate selector on click', function () {
274
275
276
277
278
        var div = $('<div><a href="#" rel="tooltip" title="Another tooltip"></a></div>')
        var tooltip = div.appendTo('#qunit-fixture')
                         .tooltip({ selector: 'a[rel=tooltip]',
                                    trigger: 'click' })
        div.find('a').trigger('click')
XhmikosR's avatar
XhmikosR committed
279
        ok($('.tooltip').is('.fade.in'), 'tooltip is faded in')
280
      })
281

XhmikosR's avatar
XhmikosR committed
282
      test('should show tooltip when toggle is called', function () {
283
284
285
286
        var tooltip = $('<a href="#" rel="tooltip" title="tooltip on toggle"></a>')
          .appendTo('#qunit-fixture')
          .tooltip({trigger: 'manual'})
          .tooltip('toggle')
XhmikosR's avatar
XhmikosR committed
287
        ok($('.tooltip').is('.fade.in'), 'tooltip should be toggled in')
288
      })
289

XhmikosR's avatar
XhmikosR committed
290
      test('should place tooltips inside the body', function () {
291
292
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
          .appendTo('#qunit-fixture')
Chris Rebert's avatar
Chris Rebert committed
293
          .tooltip({container: 'body'})
294
          .tooltip('show')
XhmikosR's avatar
XhmikosR committed
295
296
        ok($('body > .tooltip').length, 'inside the body')
        ok(!$('#qunit-fixture > .tooltip').length, 'not found in parent')
297
298
        tooltip.tooltip('hide')
      })
299

XhmikosR's avatar
XhmikosR committed
300
301
      test('should place tooltip inside window', function () {
        var container = $('<div />').appendTo('body')
Zlatan Vasović's avatar
Zlatan Vasović committed
302
303
            .css({position: 'absolute', width: 200, height: 200, bottom: 0, left: 0}),
            tooltip = $('<a href="#" title="Very very very very very very very very long tooltip">Hover me</a>')
XhmikosR's avatar
XhmikosR committed
304
          .css({position: 'absolute', top: 0, left: 0})
305
          .appendTo(container)
XhmikosR's avatar
XhmikosR committed
306
307
          .tooltip({placement: 'top', animate: false})
          .tooltip('show')
308

Guillaume Gautreau's avatar
Guillaume Gautreau committed
309
        stop()
310

311
        setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
312
          ok($('.tooltip').offset().left >= 0)
313

Guillaume Gautreau's avatar
Guillaume Gautreau committed
314
315
          start()
          container.remove()
316
        }, 100)
Guillaume Gautreau's avatar
Guillaume Gautreau committed
317
      })
318

XhmikosR's avatar
XhmikosR committed
319
320
      test('should place tooltip on top of element', function () {
        var container = $('<div />').appendTo('body')
Zlatan Vasović's avatar
Zlatan Vasović committed
321
322
323
324
325
326
327
              .css({position: 'absolute', bottom: 0, left: 0, textAlign: 'right', width: 300, height: 300}),
              p = $('<p style="margin-top:200px" />').appendTo(container),
              tooltiped = $('<a href="#" title="very very very very very very very long tooltip">Hover me</a>')
                .css({marginTop: 200})
                .appendTo(p)
                .tooltip({placement: 'top', animate: false})
                .tooltip('show')
328

Guillaume Gautreau's avatar
Guillaume Gautreau committed
329
        stop()
330

331
        setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
332
          var tooltip = container.find('.tooltip')
333

Guillaume Gautreau's avatar
Guillaume Gautreau committed
334
          start()
fat's avatar
fat committed
335
          ok(Math.round(tooltip.offset().top + tooltip.outerHeight()) <= Math.round(tooltiped.offset().top))
Guillaume Gautreau's avatar
Guillaume Gautreau committed
336
          container.remove()
337
        }, 100)
Guillaume Gautreau's avatar
Guillaume Gautreau committed
338
      })
339

XhmikosR's avatar
XhmikosR committed
340
      test('should add position class before positioning so that position-specific styles are taken into account', function () {
341
        $('head').append('<style id="test"> .tooltip.right { white-space: nowrap; } .tooltip.right .tooltip-inner { max-width: none; } </style>')
fat's avatar
fat committed
342

Zlatan Vasović's avatar
Zlatan Vasović committed
343
        var container = $('<div />').appendTo('body'),
344
          target = $('<a href="#" rel="tooltip" title="very very very very very very very very long tooltip in one line" style="position: fixed; top: 10px; left: 0px;"></a>')
fat's avatar
fat committed
345
346
              .appendTo(container)
              .tooltip({placement: 'right'})
Zlatan Vasović's avatar
Zlatan Vasović committed
347
348
              .tooltip('show'),
            tooltip = container.find('.tooltip')
fat's avatar
fat committed
349

fat's avatar
fat committed
350
351
352
353
354
        // this is some dumb hack shit because sub pixels in firefox
        var top = Math.round(target.offset().top + (target[0].offsetHeight / 2) - (tooltip[0].offsetHeight / 2))
        var top2 = Math.round(tooltip.offset().top)
        var topDiff =  top - top2
        ok(topDiff <= 1 && topDiff >= -1)
355
        target.tooltip('hide')
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
        $('head #test').remove()
      })

      test('should adjust the tip\'s top when up against the top of the viewport', function () {
        $('head').append('<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>')

        var container = $('<div />').appendTo('body'),
          target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>')
              .appendTo(container)
              .tooltip({placement: 'right', viewportPadding: 12})
              .tooltip('show'),
          tooltip = container.find('.tooltip')

        ok( Math.round(tooltip.offset().top) === 12 )
        target.tooltip('hide')
        $('head #test').remove()
      })

      test('should adjust the tip\'s top when up against the bottom of the viewport', function () {
        $('head').append('<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>')

        var container = $('<div />').appendTo('body'),
          target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; bottom: 0px; left: 0px;"></a>')
              .appendTo(container)
              .tooltip({placement: 'right', viewportPadding: 12})
              .tooltip('show'),
          tooltip = container.find('.tooltip')

        ok( Math.round(tooltip.offset().top) === Math.round($(window).height() - 12 - tooltip[0].offsetHeight) )
        target.tooltip('hide')
        $('head #test').remove()
      })

      test('should adjust the tip\'s left when up against the left of the viewport', function () {
        $('head').append('<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>')

        var container = $('<div />').appendTo('body'),
          target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>')
              .appendTo(container)
              .tooltip({placement: 'bottom', viewportPadding: 12})
              .tooltip('show'),
          tooltip = container.find('.tooltip')

        ok( Math.round(tooltip.offset().left) === 12 )
        target.tooltip('hide')
        $('head #test').remove()
      })

      test('should adjust the tip\'s left when up against the right of the viewport', function () {
        $('head').append('<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>')

        var container = $('<div />').appendTo('body'),
          target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; right: 0px;"></a>')
              .appendTo(container)
              .tooltip({placement: 'bottom', viewportPadding: 12})
              .tooltip('show'),
          tooltip = container.find('.tooltip')

        ok( Math.round(tooltip.offset().left) === Math.round($(window).width() - 12 - tooltip[0].offsetWidth) )
        target.tooltip('hide')
        $('head #test').remove()
417
      })
fat's avatar
fat committed
418

XhmikosR's avatar
XhmikosR committed
419
      test('tooltip title test #1', function () {
fat's avatar
fat committed
420
421
422
423
424
425
426
        var tooltip = $('<a href="#" rel="tooltip" title="Simple tooltip" style="display: inline-block; position: absolute; top: 0; left: 0;"></a>')
          .appendTo('#qunit-fixture')
          .tooltip({
          })
          .tooltip('show')
        equal($('.tooltip').children('.tooltip-inner').text(), 'Simple tooltip', 'title from title attribute is set')
        tooltip.tooltip('hide')
XhmikosR's avatar
XhmikosR committed
427
        ok(!$('.tooltip').length, 'tooltip removed')
fat's avatar
fat committed
428
429
      })

XhmikosR's avatar
XhmikosR committed
430
      test('tooltip title test #2', function () {
fat's avatar
fat committed
431
432
433
434
435
436
437
438
        var tooltip = $('<a href="#" rel="tooltip" title="Simple tooltip" style="display: inline-block; position: absolute; top: 0; left: 0;"></a>')
          .appendTo('#qunit-fixture')
          .tooltip({
            title: 'This is a tooltip with some content'
          })
          .tooltip('show')
        equal($('.tooltip').children('.tooltip-inner').text(), 'Simple tooltip', 'title is set from title attribute while prefered over title option')
        tooltip.tooltip('hide')
XhmikosR's avatar
XhmikosR committed
439
        ok(!$('.tooltip').length, 'tooltip removed')
fat's avatar
fat committed
440
441
      })

XhmikosR's avatar
XhmikosR committed
442
      test('tooltip title test #3', function () {
fat's avatar
fat committed
443
444
445
446
447
448
449
450
        var tooltip = $('<a href="#" rel="tooltip" style="display: inline-block; position: absolute; top: 0; left: 0;"></a>')
          .appendTo('#qunit-fixture')
          .tooltip({
            title: 'This is a tooltip with some content'
          })
          .tooltip('show')
        equal($('.tooltip').children('.tooltip-inner').text(), 'This is a tooltip with some content', 'title from title option is set')
        tooltip.tooltip('hide')
XhmikosR's avatar
XhmikosR committed
451
        ok(!$('.tooltip').length, 'tooltip removed')
fat's avatar
fat committed
452
453
      })

XhmikosR's avatar
XhmikosR committed
454
      test('tooltips should be placed dynamically, with the dynamic placement option', function () {
455
456
        $.support.transition = false
        var ttContainer = $('<div id="dynamic-tt-test"/>').css({
Zlatan Vasović's avatar
Zlatan Vasović committed
457
458
459
460
461
462
463
            'height' : 400,
            'overflow' : 'hidden',
            'position' : 'absolute',
            'top' : 0,
            'left' : 0,
            'width' : 600})
            .appendTo('body')
464
465
466
467
468
469

        var topTooltip = $('<div style="display: inline-block; position: absolute; left: 0; top: 0;" rel="tooltip" title="Top tooltip">Top Dynamic Tooltip</div>')
          .appendTo('#dynamic-tt-test')
          .tooltip({placement: 'auto'})
          .tooltip('show')

XhmikosR's avatar
XhmikosR committed
470
        ok($('.tooltip').is('.bottom'),  'top positioned tooltip is dynamically positioned bottom')
471
472
473
474
475
476
477
478

        topTooltip.tooltip('hide')

        var rightTooltip = $('<div style="display: inline-block; position: absolute; right: 0;" rel="tooltip" title="Right tooltip">Right Dynamic Tooltip</div>')
          .appendTo('#dynamic-tt-test')
          .tooltip({placement: 'right auto'})
          .tooltip('show')

XhmikosR's avatar
XhmikosR committed
479
        ok($('.tooltip').is('.left'),  'right positioned tooltip is dynamically positioned left')
480
481
482
483
484
485
486
        rightTooltip.tooltip('hide')

        var leftTooltip = $('<div style="display: inline-block; position: absolute; left: 0;" rel="tooltip" title="Left tooltip">Left Dynamic Tooltip</div>')
          .appendTo('#dynamic-tt-test')
          .tooltip({placement: 'auto left'})
          .tooltip('show')

XhmikosR's avatar
XhmikosR committed
487
        ok($('.tooltip').is('.right'),  'left positioned tooltip is dynamically positioned right')
488
489
490
491
492
        leftTooltip.tooltip('hide')

        ttContainer.remove()
      })

493
})