2011-09-10 21:49:21 +02:00
$ ( function ( ) {
2014-03-17 08:12:55 +01:00
'use strict' ;
2011-09-10 21:49:21 +02:00
2015-05-06 22:34:14 +02:00
QUnit . module ( 'tooltip plugin' )
2014-02-13 08:55:12 +01:00
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should be defined on jquery object' , function ( assert ) {
assert . expect ( 1 )
assert . ok ( $ ( document . body ) . tooltip , 'tooltip method is defined' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . module ( 'tooltip' , {
beforeEach : function ( ) {
2014-04-22 07:03:33 +02:00
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$ . fn . bootstrapTooltip = $ . fn . tooltip . noConflict ( )
} ,
2015-05-06 22:34:14 +02:00
afterEach : function ( ) {
2014-04-22 07:03:33 +02:00
$ . fn . tooltip = $ . fn . bootstrapTooltip
delete $ . fn . bootstrapTooltip
2015-05-12 08:32:37 +02:00
$ ( '.tooltip' ) . remove ( )
2014-04-22 07:03:33 +02:00
}
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should provide no conflict' , function ( assert ) {
assert . expect ( 1 )
assert . strictEqual ( $ . fn . tooltip , undefined , 'tooltip was set back to undefined (org value)' )
2014-04-22 07:03:33 +02:00
} )
2015-09-16 10:35:29 +02:00
QUnit . test ( 'should throw explicit error on undefined method' , function ( assert ) {
assert . expect ( 1 )
var $el = $ ( '<div/>' )
$el . bootstrapTooltip ( )
try {
$el . bootstrapTooltip ( 'noMethod' )
}
catch ( err ) {
assert . strictEqual ( err . message , 'No method named "noMethod"' )
}
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should return jquery collection containing the element' , function ( assert ) {
assert . expect ( 2 )
2014-06-18 21:35:03 +02:00
var $el = $ ( '<div/>' )
var $tooltip = $el . bootstrapTooltip ( )
2015-05-06 22:34:14 +02:00
assert . ok ( $tooltip instanceof $ , 'returns jquery collection' )
assert . strictEqual ( $tooltip [ 0 ] , $el [ 0 ] , 'collection contains element' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should expose default settings' , function ( assert ) {
assert . expect ( 1 )
2015-05-12 08:32:37 +02:00
assert . ok ( $ . fn . bootstrapTooltip . Constructor . Default , 'defaults is defined' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should empty title attribute' , function ( assert ) {
assert . expect ( 1 )
2014-06-18 21:35:03 +02:00
var $trigger = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' ) . bootstrapTooltip ( )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( $trigger . attr ( 'title' ) , '' , 'title attribute was emptied' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should add data attribute for referencing original title' , function ( assert ) {
assert . expect ( 1 )
2014-06-18 21:35:03 +02:00
var $trigger = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' ) . bootstrapTooltip ( )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( $trigger . attr ( 'data-original-title' ) , 'Another tooltip' , 'original title preserved in data attribute' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should add aria-describedby to the trigger on show' , function ( assert ) {
assert . expect ( 3 )
var $trigger = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-06-18 21:35:03 +02:00
. bootstrapTooltip ( )
2014-05-09 05:19:12 +02:00
. appendTo ( '#qunit-fixture' )
. bootstrapTooltip ( 'show' )
2014-06-18 21:35:03 +02:00
2014-05-09 05:19:12 +02:00
var id = $ ( '.tooltip' ) . attr ( 'id' )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( $ ( '#' + id ) . length , 1 , 'has a unique id' )
assert . strictEqual ( $ ( '.tooltip' ) . attr ( 'aria-describedby' ) , $trigger . attr ( 'id' ) , 'tooltip id and aria-describedby on trigger match' )
assert . ok ( $trigger [ 0 ] . hasAttribute ( 'aria-describedby' ) , 'trigger has aria-describedby' )
2014-05-09 05:19:12 +02:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should remove aria-describedby from trigger on hide' , function ( assert ) {
assert . expect ( 2 )
var $trigger = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-06-18 21:35:03 +02:00
. bootstrapTooltip ( )
2014-05-09 05:19:12 +02:00
. appendTo ( '#qunit-fixture' )
2014-06-18 21:35:03 +02:00
$trigger . bootstrapTooltip ( 'show' )
2015-05-06 22:34:14 +02:00
assert . ok ( $trigger [ 0 ] . hasAttribute ( 'aria-describedby' ) , 'trigger has aria-describedby' )
2014-06-18 21:35:03 +02:00
$trigger . bootstrapTooltip ( 'hide' )
2015-05-06 22:34:14 +02:00
assert . ok ( ! $trigger [ 0 ] . hasAttribute ( 'aria-describedby' ) , 'trigger does not have aria-describedby' )
2014-05-09 05:19:12 +02:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should assign a unique id tooltip element' , function ( assert ) {
assert . expect ( 2 )
$ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-05-09 05:19:12 +02:00
. appendTo ( '#qunit-fixture' )
2014-03-17 08:12:55 +01:00
. bootstrapTooltip ( 'show' )
2014-06-18 21:35:03 +02:00
2014-03-17 08:12:55 +01:00
var id = $ ( '.tooltip' ) . attr ( 'id' )
2014-05-09 05:19:12 +02:00
2015-05-06 22:34:14 +02:00
assert . strictEqual ( $ ( '#' + id ) . length , 1 , 'tooltip has unique id' )
assert . strictEqual ( id . indexOf ( 'tooltip' ) , 0 , 'tooltip id has prefix' )
2014-05-09 05:19:12 +02:00
} )
2015-05-12 23:28:11 +02:00
QUnit . test ( 'should place tooltips relative to placement option' , function ( assert ) {
2015-05-06 22:34:14 +02:00
assert . expect ( 2 )
var $tooltip = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-02-13 08:55:12 +01:00
. appendTo ( '#qunit-fixture' )
2015-05-12 23:28:11 +02:00
. bootstrapTooltip ( { placement : 'bottom' } )
2014-02-13 08:55:12 +01:00
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'show' )
2015-05-12 08:32:37 +02:00
assert
. ok ( $ ( '.tooltip' )
. is ( '.fade.bs-tether-element-attached-top.bs-tether-element-attached-center.in' ) , 'has correct classes applied' )
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'hide' )
2015-05-12 08:32:37 +02:00
assert . strictEqual ( $tooltip . data ( 'bs.tooltip' ) . tip . parentNode , null , 'tooltip removed' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should allow html entities' , function ( assert ) {
assert . expect ( 2 )
var $tooltip = $ ( '<a href="#" rel="tooltip" title="<b>@fat</b>"/>' )
2014-02-13 08:55:12 +01:00
. appendTo ( '#qunit-fixture' )
2014-03-17 08:12:55 +01:00
. bootstrapTooltip ( { html : true } )
2014-02-13 08:55:12 +01:00
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'show' )
2015-05-06 22:34:14 +02:00
assert . notEqual ( $ ( '.tooltip b' ) . length , 0 , 'b tag was inserted' )
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'hide' )
2015-05-12 08:32:37 +02:00
assert . strictEqual ( $tooltip . data ( 'bs.tooltip' ) . tip . parentNode , null , 'tooltip removed' )
2014-02-13 08:55:12 +01:00
} )
2015-08-31 01:57:16 +02:00
QUnit . test ( 'should allow DOMElement title (html: false)' , function ( assert ) {
assert . expect ( 3 )
var title = document . createTextNode ( '<3 writing tests' )
var $tooltip = $ ( '<a href="#" rel="tooltip"/>' )
. appendTo ( '#qunit-fixture' )
. bootstrapTooltip ( { title : title } )
$tooltip . bootstrapTooltip ( 'show' )
assert . notEqual ( $ ( '.tooltip' ) . length , 0 , 'tooltip inserted' )
assert . strictEqual ( $ ( '.tooltip' ) . text ( ) , '<3 writing tests' , 'title inserted' )
assert . ok ( ! $ . contains ( $ ( '.tooltip' ) . get ( 0 ) , title ) , 'title node copied, not moved' )
} )
QUnit . test ( 'should allow DOMElement title (html: true)' , function ( assert ) {
assert . expect ( 3 )
var title = document . createTextNode ( '<3 writing tests' )
var $tooltip = $ ( '<a href="#" rel="tooltip"/>' )
. appendTo ( '#qunit-fixture' )
. bootstrapTooltip ( { html : true , title : title } )
$tooltip . bootstrapTooltip ( 'show' )
assert . notEqual ( $ ( '.tooltip' ) . length , 0 , 'tooltip inserted' )
assert . strictEqual ( $ ( '.tooltip' ) . text ( ) , '<3 writing tests' , 'title inserted' )
assert . ok ( $ . contains ( $ ( '.tooltip' ) . get ( 0 ) , title ) , 'title node moved, not copied' )
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should respect custom classes' , function ( assert ) {
assert . expect ( 2 )
var $tooltip = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-02-13 08:55:12 +01:00
. appendTo ( '#qunit-fixture' )
2014-03-17 08:12:55 +01:00
. bootstrapTooltip ( { template : '<div class="tooltip some-class"><div class="tooltip-arrow"/><div class="tooltip-inner"/></div>' } )
2014-02-13 08:55:12 +01:00
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'show' )
2015-05-06 22:34:14 +02:00
assert . ok ( $ ( '.tooltip' ) . hasClass ( 'some-class' ) , 'custom class is present' )
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'hide' )
2015-05-12 08:32:37 +02:00
assert . strictEqual ( $tooltip . data ( 'bs.tooltip' ) . tip . parentNode , null , 'tooltip removed' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should fire show event' , function ( assert ) {
assert . expect ( 1 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-06-18 21:35:03 +02:00
2015-05-06 22:34:14 +02:00
$ ( '<div title="tooltip title"/>' )
2014-02-13 08:55:12 +01:00
. on ( 'show.bs.tooltip' , function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( true , 'show event fired' )
2015-01-21 04:40:50 +01:00
done ( )
2014-02-13 08:55:12 +01:00
} )
2014-04-22 07:03:33 +02:00
. bootstrapTooltip ( 'show' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should fire inserted event' , function ( assert ) {
assert . expect ( 2 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-06-18 21:35:03 +02:00
2015-05-06 22:34:14 +02:00
$ ( '<div title="tooltip title"/>' )
2014-06-18 21:35:03 +02:00
. appendTo ( '#qunit-fixture' )
2015-05-06 22:34:14 +02:00
. on ( 'inserted.bs.tooltip' , function ( ) {
assert . notEqual ( $ ( '.tooltip' ) . length , 0 , 'tooltip was inserted' )
assert . ok ( true , 'inserted event fired' )
2015-01-21 04:40:50 +01:00
done ( )
2014-02-13 08:55:12 +01:00
} )
2014-04-22 07:03:33 +02:00
. bootstrapTooltip ( 'show' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should fire shown event' , function ( assert ) {
assert . expect ( 1 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-06-18 21:35:03 +02:00
2015-05-06 22:34:14 +02:00
$ ( '<div title="tooltip title"></div>' )
2014-12-17 01:40:54 +01:00
. appendTo ( '#qunit-fixture' )
2015-05-06 22:34:14 +02:00
. on ( 'shown.bs.tooltip' , function ( ) {
assert . ok ( true , 'shown was called' )
done ( )
} )
. bootstrapTooltip ( 'show' )
} )
QUnit . test ( 'should not fire shown event when show was prevented' , function ( assert ) {
assert . expect ( 1 )
var done = assert . async ( )
$ ( '<div title="tooltip title"/>' )
2014-02-13 08:55:12 +01:00
. on ( 'show.bs.tooltip' , function ( e ) {
e . preventDefault ( )
2015-05-06 22:34:14 +02:00
assert . ok ( true , 'show event fired' )
2015-01-21 04:40:50 +01:00
done ( )
2014-02-13 08:55:12 +01:00
} )
. on ( 'shown.bs.tooltip' , function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( false , 'shown event fired' )
2014-02-13 08:55:12 +01:00
} )
2014-04-22 07:03:33 +02:00
. bootstrapTooltip ( 'show' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should fire hide event' , function ( assert ) {
assert . expect ( 1 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-06-18 21:35:03 +02:00
2015-05-06 22:34:14 +02:00
$ ( '<div title="tooltip title"/>' )
2014-06-18 21:35:03 +02:00
. appendTo ( '#qunit-fixture' )
2014-02-13 08:55:12 +01:00
. on ( 'shown.bs.tooltip' , function ( ) {
2014-04-22 07:03:33 +02:00
$ ( this ) . bootstrapTooltip ( 'hide' )
2014-02-13 08:55:12 +01:00
} )
. on ( 'hide.bs.tooltip' , function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( true , 'hide event fired' )
2015-01-21 04:40:50 +01:00
done ( )
2014-02-13 08:55:12 +01:00
} )
2014-04-22 07:03:33 +02:00
. bootstrapTooltip ( 'show' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should fire hidden event' , function ( assert ) {
assert . expect ( 1 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-06-18 21:35:03 +02:00
2015-05-06 22:34:14 +02:00
$ ( '<div title="tooltip title"/>' )
2014-06-18 21:35:03 +02:00
. appendTo ( '#qunit-fixture' )
2014-02-13 08:55:12 +01:00
. on ( 'shown.bs.tooltip' , function ( ) {
2014-04-22 07:03:33 +02:00
$ ( this ) . bootstrapTooltip ( 'hide' )
2014-02-13 08:55:12 +01:00
} )
. on ( 'hidden.bs.tooltip' , function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( true , 'hidden event fired' )
2015-01-21 04:40:50 +01:00
done ( )
2014-02-13 08:55:12 +01:00
} )
2014-04-22 07:03:33 +02:00
. bootstrapTooltip ( 'show' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should not fire hidden event when hide was prevented' , function ( assert ) {
assert . expect ( 1 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-06-18 21:35:03 +02:00
2015-05-06 22:34:14 +02:00
$ ( '<div title="tooltip title"/>' )
2014-06-18 21:35:03 +02:00
. appendTo ( '#qunit-fixture' )
2014-02-13 08:55:12 +01:00
. on ( 'shown.bs.tooltip' , function ( ) {
2014-04-22 07:03:33 +02:00
$ ( this ) . bootstrapTooltip ( 'hide' )
2014-02-13 08:55:12 +01:00
} )
. on ( 'hide.bs.tooltip' , function ( e ) {
e . preventDefault ( )
2015-05-06 22:34:14 +02:00
assert . ok ( true , 'hide event fired' )
2015-01-21 04:40:50 +01:00
done ( )
2014-02-13 08:55:12 +01:00
} )
. on ( 'hidden.bs.tooltip' , function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( false , 'hidden event fired' )
2014-02-13 08:55:12 +01:00
} )
2014-04-22 07:03:33 +02:00
. bootstrapTooltip ( 'show' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should destroy tooltip' , function ( assert ) {
assert . expect ( 7 )
var $tooltip = $ ( '<div/>' )
2014-06-18 21:35:03 +02:00
. bootstrapTooltip ( )
. on ( 'click.foo' , function ( ) { } )
2015-05-06 22:34:14 +02:00
assert . ok ( $tooltip . data ( 'bs.tooltip' ) , 'tooltip has data' )
assert . ok ( $ . _data ( $tooltip [ 0 ] , 'events' ) . mouseover && $ . _data ( $tooltip [ 0 ] , 'events' ) . mouseout , 'tooltip has hover events' )
assert . strictEqual ( $ . _data ( $tooltip [ 0 ] , 'events' ) . click [ 0 ] . namespace , 'foo' , 'tooltip has extra click.foo event' )
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'show' )
2015-05-13 21:48:34 +02:00
$tooltip . bootstrapTooltip ( 'dispose' )
2014-06-18 21:35:03 +02:00
2015-05-06 22:34:14 +02:00
assert . ok ( ! $tooltip . hasClass ( 'in' ) , 'tooltip is hidden' )
assert . ok ( ! $ . _data ( $tooltip [ 0 ] , 'bs.tooltip' ) , 'tooltip does not have data' )
assert . strictEqual ( $ . _data ( $tooltip [ 0 ] , 'events' ) . click [ 0 ] . namespace , 'foo' , 'tooltip still has click.foo' )
assert . ok ( ! $ . _data ( $tooltip [ 0 ] , 'events' ) . mouseover && ! $ . _data ( $tooltip [ 0 ] , 'events' ) . mouseout , 'tooltip does not have hover events' )
2014-02-13 08:55:12 +01:00
} )
2015-05-12 08:32:37 +02:00
// QUnit.test('should show tooltip with delegate selector on click', function (assert) {
// assert.expect(2)
// var $div = $('<div><a href="#" rel="tooltip" title="Another tooltip"/></div>')
// .appendTo('#qunit-fixture')
// .bootstrapTooltip({
// selector: 'a[rel="tooltip"]',
// trigger: 'click'
// })
2014-06-18 21:35:03 +02:00
2015-05-12 08:32:37 +02:00
// $div.find('a').trigger('click')
// assert.ok($('.tooltip').is('.fade.in'), 'tooltip is faded in')
2014-06-18 21:35:03 +02:00
2015-05-12 08:32:37 +02:00
// $div.find('a').trigger('click')
// assert.strictEqual($div.data('bs.tooltip').tip.parentNode, null, 'tooltip removed')
// })
2014-02-13 08:55:12 +01:00
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should show tooltip when toggle is called' , function ( assert ) {
assert . expect ( 1 )
$ ( '<a href="#" rel="tooltip" title="tooltip on toggle"/>' )
2014-02-13 08:55:12 +01:00
. appendTo ( '#qunit-fixture' )
2014-03-17 08:12:55 +01:00
. bootstrapTooltip ( { trigger : 'manual' } )
2014-04-22 07:03:33 +02:00
. bootstrapTooltip ( 'toggle' )
2014-06-18 21:35:03 +02:00
2015-05-06 22:34:14 +02:00
assert . ok ( $ ( '.tooltip' ) . is ( '.fade.in' ) , 'tooltip is faded in' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should hide previously shown tooltip when toggle is called on tooltip' , function ( assert ) {
assert . expect ( 1 )
2014-06-18 21:35:03 +02:00
$ ( '<a href="#" rel="tooltip" title="tooltip on toggle">@ResentedHook</a>' )
2014-05-14 19:36:32 +02:00
. appendTo ( '#qunit-fixture' )
2014-03-17 08:12:55 +01:00
. bootstrapTooltip ( { trigger : 'manual' } )
2014-06-18 21:35:03 +02:00
. bootstrapTooltip ( 'show' )
$ ( '.tooltip' ) . bootstrapTooltip ( 'toggle' )
2015-05-06 22:34:14 +02:00
assert . ok ( $ ( '.tooltip' ) . not ( '.fade.in' ) , 'tooltip was faded out' )
2014-05-14 19:36:32 +02:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should place tooltips inside body when container is body' , function ( assert ) {
assert . expect ( 3 )
var $tooltip = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-02-13 08:55:12 +01:00
. appendTo ( '#qunit-fixture' )
2014-03-17 08:12:55 +01:00
. bootstrapTooltip ( { container : 'body' } )
2014-04-22 07:03:33 +02:00
. bootstrapTooltip ( 'show' )
2014-06-18 21:35:03 +02:00
2015-05-06 22:34:14 +02:00
assert . notEqual ( $ ( 'body > .tooltip' ) . length , 0 , 'tooltip is direct descendant of body' )
assert . strictEqual ( $ ( '#qunit-fixture > .tooltip' ) . length , 0 , 'tooltip is not in parent' )
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'hide' )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( $ ( 'body > .tooltip' ) . length , 0 , 'tooltip was removed from dom' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should add position class before positioning so that position-specific styles are taken into account' , function ( assert ) {
assert . expect ( 1 )
2014-07-06 11:56:12 +02:00
var styles = '<style>'
2015-05-12 08:32:37 +02:00
+ '.tooltip.right { white-space: nowrap; }'
+ '.tooltip.right .tooltip-inner { max-width: none; }'
+ '</style>'
2014-07-09 00:38:44 +02:00
var $styles = $ ( styles ) . appendTo ( 'head' )
2014-06-18 21:35:03 +02:00
2014-07-07 07:12:26 +02:00
var $container = $ ( '<div/>' ) . appendTo ( '#qunit-fixture' )
2015-05-06 22:34:14 +02:00
var $target = $ ( '<a href="#" rel="tooltip" title="very very very very very very very very long tooltip in one line"/>' )
2014-06-18 21:35:03 +02:00
. appendTo ( $container )
. bootstrapTooltip ( {
2015-05-13 01:52:54 +02:00
placement : 'right'
2014-06-18 21:35:03 +02:00
} )
. bootstrapTooltip ( 'show' )
2015-05-12 08:32:37 +02:00
var $tooltip = $ ( $target . data ( 'bs.tooltip' ) . tip )
2014-02-13 08:55:12 +01:00
2016-09-15 18:39:31 +02:00
// this is some dumb hack stuff because sub pixels in firefox
2014-06-18 21:35:03 +02:00
var top = Math . round ( $target . offset ( ) . top + ( $target [ 0 ] . offsetHeight / 2 ) - ( $tooltip [ 0 ] . offsetHeight / 2 ) )
var top2 = Math . round ( $tooltip . offset ( ) . top )
2014-03-17 08:12:55 +01:00
var topDiff = top - top2
2015-05-06 22:34:14 +02:00
assert . ok ( topDiff <= 1 && topDiff >= - 1 )
2014-06-18 21:35:03 +02:00
$target . bootstrapTooltip ( 'hide' )
$container . remove ( )
$styles . remove ( )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should use title attribute for tooltip text' , function ( assert ) {
assert . expect ( 2 )
var $tooltip = $ ( '<a href="#" rel="tooltip" title="Simple tooltip"/>' )
2014-02-13 08:55:12 +01:00
. appendTo ( '#qunit-fixture' )
2014-06-18 21:35:03 +02:00
. bootstrapTooltip ( )
$tooltip . bootstrapTooltip ( 'show' )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( $ ( '.tooltip' ) . children ( '.tooltip-inner' ) . text ( ) , 'Simple tooltip' , 'title from title attribute is set' )
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'hide' )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( $ ( '.tooltip' ) . length , 0 , 'tooltip removed from dom' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should prefer title attribute over title option' , function ( assert ) {
assert . expect ( 2 )
var $tooltip = $ ( '<a href="#" rel="tooltip" title="Simple tooltip"/>' )
2014-02-13 08:55:12 +01:00
. appendTo ( '#qunit-fixture' )
2014-04-22 07:03:33 +02:00
. bootstrapTooltip ( {
2014-02-13 08:55:12 +01:00
title : 'This is a tooltip with some content'
} )
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'show' )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( $ ( '.tooltip' ) . children ( '.tooltip-inner' ) . text ( ) , 'Simple tooltip' , 'title is set from title attribute while preferred over title option' )
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'hide' )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( $ ( '.tooltip' ) . length , 0 , 'tooltip removed from dom' )
2014-02-13 08:55:12 +01:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should use title option' , function ( assert ) {
assert . expect ( 2 )
var $tooltip = $ ( '<a href="#" rel="tooltip"/>' )
2014-02-13 08:55:12 +01:00
. appendTo ( '#qunit-fixture' )
2014-04-22 07:03:33 +02:00
. bootstrapTooltip ( {
2014-02-13 08:55:12 +01:00
title : 'This is a tooltip with some content'
} )
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'show' )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( $ ( '.tooltip' ) . children ( '.tooltip-inner' ) . text ( ) , 'This is a tooltip with some content' , 'title from title option is set' )
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'hide' )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( $ ( '.tooltip' ) . length , 0 , 'tooltip removed from dom' )
2014-06-18 21:35:03 +02:00
} )
2015-05-12 08:32:37 +02:00
QUnit . test ( 'should not error when trying to show an top-placed tooltip that has been removed from the dom' , function ( assert ) {
2015-05-06 22:34:14 +02:00
assert . expect ( 1 )
2014-06-18 21:35:03 +02:00
var passed = true
2015-05-06 22:34:14 +02:00
var $tooltip = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-06-18 21:35:03 +02:00
. appendTo ( '#qunit-fixture' )
2014-06-06 23:49:59 +02:00
. one ( 'show.bs.tooltip' , function ( ) {
2014-06-18 21:35:03 +02:00
$ ( this ) . remove ( )
2014-06-06 23:49:59 +02:00
} )
2015-05-12 23:28:11 +02:00
. bootstrapTooltip ( { placement : 'top' } )
2014-06-06 23:49:59 +02:00
try {
2014-06-18 21:35:03 +02:00
$tooltip . bootstrapTooltip ( 'show' )
} catch ( err ) {
2014-06-06 23:49:59 +02:00
passed = false
console . log ( err )
}
2015-05-06 22:34:14 +02:00
assert . ok ( passed , '.tooltip(\'show\') should not throw an error if element no longer is in dom' )
2014-06-06 23:49:59 +02:00
} )
2014-07-07 07:12:26 +02:00
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should place tooltip on top of element' , function ( assert ) {
assert . expect ( 1 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-07-07 07:12:26 +02:00
var containerHTML = '<div>'
+ '<p style="margin-top: 200px">'
+ '<a href="#" title="very very very very very very very long tooltip">Hover me</a>'
+ '</p>'
+ '</div>'
var $container = $ ( containerHTML )
. css ( {
position : 'absolute' ,
bottom : 0 ,
left : 0 ,
textAlign : 'right' ,
width : 300 ,
height : 300
} )
. appendTo ( ' # qunit - fixture ' )
var $trigger = $container
. find ( 'a' )
. css ( 'margin-top' , 200 )
. bootstrapTooltip ( {
2015-05-12 23:28:11 +02:00
placement : 'top' ,
2014-07-07 07:12:26 +02:00
animate : false
} )
. bootstrapTooltip ( 'show' )
2015-05-12 08:32:37 +02:00
var $tooltip = $ ( $trigger . data ( 'bs.tooltip' ) . tip )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( Math . round ( $tooltip . offset ( ) . top + $tooltip . outerHeight ( ) ) <= Math . round ( $trigger . offset ( ) . top ) )
2015-01-21 04:40:50 +01:00
done ( )
2014-07-07 07:12:26 +02:00
} , 0 )
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should show tooltip if leave event hasn\'t occurred before delay expires' , function ( assert ) {
assert . expect ( 2 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-07-07 07:12:26 +02:00
2015-05-06 22:34:14 +02:00
var $tooltip = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-07-07 07:12:26 +02:00
. appendTo ( '#qunit-fixture' )
2014-10-27 23:53:41 +01:00
. bootstrapTooltip ( { delay : 150 } )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( ! $ ( '.tooltip' ) . is ( '.fade.in' ) , '100ms: tooltip is not faded in' )
2014-10-27 23:53:41 +01:00
} , 100 )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( $ ( '.tooltip' ) . is ( '.fade.in' ) , '200ms: tooltip is faded in' )
2015-01-21 04:40:50 +01:00
done ( )
2014-10-27 23:53:41 +01:00
} , 200 )
2014-07-07 07:12:26 +02:00
$tooltip . trigger ( 'mouseenter' )
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should not show tooltip if leave event occurs before delay expires' , function ( assert ) {
assert . expect ( 2 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-07-07 07:12:26 +02:00
2015-05-06 22:34:14 +02:00
var $tooltip = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-07-07 07:12:26 +02:00
. appendTo ( '#qunit-fixture' )
2014-10-27 23:53:41 +01:00
. bootstrapTooltip ( { delay : 150 } )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( ! $ ( '.tooltip' ) . is ( '.fade.in' ) , '100ms: tooltip not faded in' )
2014-07-07 07:12:26 +02:00
$tooltip . trigger ( 'mouseout' )
2014-10-27 23:53:41 +01:00
} , 100 )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( ! $ ( '.tooltip' ) . is ( '.fade.in' ) , '200ms: tooltip not faded in' )
2015-01-21 04:40:50 +01:00
done ( )
2014-10-27 23:53:41 +01:00
} , 200 )
2014-07-07 07:12:26 +02:00
$tooltip . trigger ( 'mouseenter' )
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should not hide tooltip if leave event occurs and enter event occurs within the hide delay' , function ( assert ) {
assert . expect ( 3 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-07-07 07:12:26 +02:00
2015-05-06 22:34:14 +02:00
var $tooltip = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-07-07 07:12:26 +02:00
. appendTo ( '#qunit-fixture' )
2014-10-27 23:53:41 +01:00
. bootstrapTooltip ( { delay : { show : 0 , hide : 150 } } )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( $ ( '.tooltip' ) . is ( '.fade.in' ) , '1ms: tooltip faded in' )
2014-07-07 07:12:26 +02:00
$tooltip . trigger ( 'mouseout' )
setTimeout ( function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( $ ( '.tooltip' ) . is ( '.fade.in' ) , '100ms: tooltip still faded in' )
2014-07-07 07:12:26 +02:00
$tooltip . trigger ( 'mouseenter' )
2014-10-27 23:53:41 +01:00
} , 100 )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( $ ( '.tooltip' ) . is ( '.fade.in' ) , '200ms: tooltip still faded in' )
2015-01-21 04:40:50 +01:00
done ( )
2014-10-27 23:53:41 +01:00
} , 200 )
2014-07-07 07:12:26 +02:00
} , 0 )
$tooltip . trigger ( 'mouseenter' )
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should not show tooltip if leave event occurs before delay expires' , function ( assert ) {
assert . expect ( 2 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-07-07 07:12:26 +02:00
2015-05-06 22:34:14 +02:00
var $tooltip = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-07-07 07:12:26 +02:00
. appendTo ( '#qunit-fixture' )
2014-10-27 23:53:41 +01:00
. bootstrapTooltip ( { delay : 150 } )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( ! $ ( '.tooltip' ) . is ( '.fade.in' ) , '100ms: tooltip not faded in' )
2014-07-07 07:12:26 +02:00
$tooltip . trigger ( 'mouseout' )
2014-10-27 23:53:41 +01:00
} , 100 )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( ! $ ( '.tooltip' ) . is ( '.fade.in' ) , '200ms: tooltip not faded in' )
2015-01-21 04:40:50 +01:00
done ( )
2014-10-27 23:53:41 +01:00
} , 200 )
2014-07-07 07:12:26 +02:00
$tooltip . trigger ( 'mouseenter' )
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should not show tooltip if leave event occurs before delay expires, even if hide delay is 0' , function ( assert ) {
assert . expect ( 2 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-07-07 07:12:26 +02:00
2015-05-06 22:34:14 +02:00
var $tooltip = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-07-07 07:12:26 +02:00
. appendTo ( '#qunit-fixture' )
2014-10-27 23:53:41 +01:00
. bootstrapTooltip ( { delay : { show : 150 , hide : 0 } } )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( ! $ ( '.tooltip' ) . is ( '.fade.in' ) , '100ms: tooltip not faded in' )
2014-07-07 07:12:26 +02:00
$tooltip . trigger ( 'mouseout' )
2014-10-27 23:53:41 +01:00
} , 100 )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-06 22:34:14 +02:00
assert . ok ( ! $ ( '.tooltip' ) . is ( '.fade.in' ) , '250ms: tooltip not faded in' )
2015-01-21 04:40:50 +01:00
done ( )
2014-10-27 23:53:41 +01:00
} , 250 )
2014-07-07 07:12:26 +02:00
$tooltip . trigger ( 'mouseenter' )
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should wait 200ms before hiding the tooltip' , function ( assert ) {
assert . expect ( 3 )
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-07-07 07:12:26 +02:00
2015-05-06 22:34:14 +02:00
var $tooltip = $ ( '<a href="#" rel="tooltip" title="Another tooltip"/>' )
2014-07-07 07:12:26 +02:00
. appendTo ( '#qunit-fixture' )
2014-10-27 23:53:41 +01:00
. bootstrapTooltip ( { delay : { show : 0 , hide : 150 } } )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-12 08:32:37 +02:00
assert . ok ( $ ( $tooltip . data ( 'bs.tooltip' ) . tip ) . is ( '.fade.in' ) , '1ms: tooltip faded in' )
2014-07-07 07:12:26 +02:00
$tooltip . trigger ( 'mouseout' )
setTimeout ( function ( ) {
2015-05-12 08:32:37 +02:00
assert . ok ( $ ( $tooltip . data ( 'bs.tooltip' ) . tip ) . is ( '.fade.in' ) , '100ms: tooltip still faded in' )
2014-10-27 23:53:41 +01:00
} , 100 )
2014-07-07 07:12:26 +02:00
setTimeout ( function ( ) {
2015-05-12 08:32:37 +02:00
assert . ok ( ! $ ( $tooltip . data ( 'bs.tooltip' ) . tip ) . is ( '.in' ) , '200ms: tooltip removed' )
2015-05-06 22:34:14 +02:00
done ( )
2014-10-27 23:53:41 +01:00
} , 200 )
2014-07-07 07:12:26 +02:00
} , 0 )
$tooltip . trigger ( 'mouseenter' )
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should correctly position tooltips on SVG elements' , function ( assert ) {
2014-08-01 01:03:45 +02:00
if ( ! window . SVGElement ) {
// Skip IE8 since it doesn't support SVG
2015-05-06 22:34:14 +02:00
assert . expect ( 0 )
2014-08-01 01:03:45 +02:00
return
}
2015-05-06 22:34:14 +02:00
assert . expect ( 2 )
2014-08-01 01:03:45 +02:00
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-08-01 01:03:45 +02:00
var styles = '<style>'
+ '.tooltip, .tooltip *, .tooltip *:before, .tooltip *:after { box-sizing: border-box; }'
+ '.tooltip { position: absolute; }'
+ '.tooltip .tooltip-inner { width: 24px; height: 24px; font-family: Helvetica; }'
+ '</style>'
var $styles = $ ( styles ) . appendTo ( 'head' )
$ ( '#qunit-fixture' ) . append (
'<div style="position: fixed; top: 0; left: 0;">'
+ ' <svg width="200" height="200">'
+ ' <circle cx="100" cy="100" r="10" title="m" id="theCircle" />'
+ ' </svg>'
+ '</div>' )
var $circle = $ ( '#theCircle' )
$circle
. on ( 'shown.bs.tooltip' , function ( ) {
var offset = $ ( '.tooltip' ) . offset ( )
$styles . remove ( )
2015-05-06 22:34:14 +02:00
assert . ok ( Math . abs ( offset . left - 88 ) <= 1 , 'tooltip has correct horizontal location' )
2014-09-16 05:01:04 +02:00
$circle . bootstrapTooltip ( 'hide' )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( $ ( '.tooltip' ) . length , 0 , 'tooltip removed from dom' )
2015-01-21 04:40:50 +01:00
done ( )
2014-08-01 01:03:45 +02:00
} )
2015-05-12 23:28:11 +02:00
. bootstrapTooltip ( { placement : 'top' , trigger : 'manual' } )
2014-08-01 01:03:45 +02:00
$circle . bootstrapTooltip ( 'show' )
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should not reload the tooltip on subsequent mouseenter events' , function ( assert ) {
assert . expect ( 1 )
2014-08-04 22:03:11 +02:00
var titleHtml = function ( ) {
2015-05-12 08:32:37 +02:00
var uid = Util . getUID ( 'tooltip' )
2014-08-04 22:03:11 +02:00
return '<p id="tt-content">' + uid + '</p><p>' + uid + '</p><p>' + uid + '</p>'
}
2015-05-12 23:28:11 +02:00
var $tooltip = $ ( '<span id="tt-outer" rel="tooltip" data-trigger="hover" data-placement="top">some text</span>' )
2014-08-04 22:03:11 +02:00
. appendTo ( '#qunit-fixture' )
$tooltip . bootstrapTooltip ( {
html : true ,
animation : false ,
trigger : 'hover' ,
delay : { show : 0 , hide : 500 } ,
container : $tooltip ,
title : titleHtml
} )
$ ( '#tt-outer' ) . trigger ( 'mouseenter' )
var currentUid = $ ( '#tt-content' ) . text ( )
$ ( '#tt-content' ) . trigger ( 'mouseenter' )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( currentUid , $ ( '#tt-content' ) . text ( ) )
2014-08-04 22:03:11 +02:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should not reload the tooltip if the mouse leaves and re-enters before hiding' , function ( assert ) {
assert . expect ( 4 )
2015-05-12 08:32:37 +02:00
2014-08-04 22:03:11 +02:00
var titleHtml = function ( ) {
2015-05-12 08:32:37 +02:00
var uid = Util . getUID ( 'tooltip' )
2014-08-04 22:03:11 +02:00
return '<p id="tt-content">' + uid + '</p><p>' + uid + '</p><p>' + uid + '</p>'
}
2015-05-12 23:28:11 +02:00
var $tooltip = $ ( '<span id="tt-outer" rel="tooltip" data-trigger="hover" data-placement="top">some text</span>' )
2014-08-04 22:03:11 +02:00
. appendTo ( '#qunit-fixture' )
$tooltip . bootstrapTooltip ( {
html : true ,
animation : false ,
trigger : 'hover' ,
delay : { show : 0 , hide : 500 } ,
title : titleHtml
} )
var obj = $tooltip . data ( 'bs.tooltip' )
$ ( '#tt-outer' ) . trigger ( 'mouseenter' )
var currentUid = $ ( '#tt-content' ) . text ( )
$ ( '#tt-outer' ) . trigger ( 'mouseleave' )
2015-05-06 22:34:14 +02:00
assert . strictEqual ( currentUid , $ ( '#tt-content' ) . text ( ) )
2015-01-03 22:58:44 +01:00
2015-05-12 08:32:37 +02:00
assert . ok ( obj . _hoverState == 'out' , 'the tooltip hoverState should be set to "out"' )
2014-08-04 22:03:11 +02:00
2015-05-12 08:32:37 +02:00
$ ( '#tt-outer' ) . trigger ( 'mouseenter' )
assert . ok ( obj . _hoverState == 'in' , 'the tooltip hoverState should be set to "in"' )
2014-08-04 22:03:11 +02:00
2015-05-06 22:34:14 +02:00
assert . strictEqual ( currentUid , $ ( '#tt-content' ) . text ( ) )
2014-08-04 22:03:11 +02:00
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should correctly position tooltips on transformed elements' , function ( assert ) {
2014-09-11 23:40:15 +02:00
var styleProps = document . documentElement . style
if ( ! ( 'transform' in styleProps ) && ! ( 'webkitTransform' in styleProps ) && ! ( 'msTransform' in styleProps ) ) {
2015-05-06 22:34:14 +02:00
assert . expect ( 0 )
2014-09-11 23:40:15 +02:00
return
}
2015-05-06 22:34:14 +02:00
assert . expect ( 2 )
2014-09-11 23:40:15 +02:00
2015-01-21 04:40:50 +01:00
var done = assert . async ( )
2014-09-11 23:40:15 +02:00
var styles = '<style>'
+ '#qunit-fixture { top: 0; left: 0; }'
+ '.tooltip, .tooltip *, .tooltip *:before, .tooltip *:after { box-sizing: border-box; }'
+ '.tooltip { position: absolute; }'
+ '.tooltip .tooltip-inner { width: 24px; height: 24px; font-family: Helvetica; }'
+ '#target { position: absolute; top: 100px; left: 50px; width: 100px; height: 200px; -webkit-transform: rotate(270deg); -ms-transform: rotate(270deg); transform: rotate(270deg); }'
+ '</style>'
var $styles = $ ( styles ) . appendTo ( 'head' )
2015-05-06 22:34:14 +02:00
var $element = $ ( '<div id="target" title="1"/>' ) . appendTo ( '#qunit-fixture' )
2014-09-11 23:40:15 +02:00
$element
. on ( 'shown.bs.tooltip' , function ( ) {
var offset = $ ( '.tooltip' ) . offset ( )
$styles . remove ( )
2015-05-06 22:34:14 +02:00
assert . ok ( Math . abs ( offset . left - 88 ) <= 1 , 'tooltip has correct horizontal location' )
assert . ok ( Math . abs ( offset . top - 126 ) <= 1 , 'tooltip has correct vertical location' )
2014-09-11 23:40:15 +02:00
$element . bootstrapTooltip ( 'hide' )
2015-01-21 04:40:50 +01:00
done ( )
2014-09-11 23:40:15 +02:00
} )
. bootstrapTooltip ( {
trigger : 'manual'
} )
$element . bootstrapTooltip ( 'show' )
} )
2015-05-06 22:34:14 +02:00
QUnit . test ( 'should do nothing when an attempt is made to hide an uninitialized tooltip' , function ( assert ) {
2014-12-17 01:40:54 +01:00
assert . expect ( 1 )
2015-05-06 22:34:14 +02:00
var $tooltip = $ ( '<span data-toggle="tooltip" title="some tip">some text</span>' )
. appendTo ( '#qunit-fixture' )
. on ( 'hidden.bs.tooltip shown.bs.tooltip' , function ( ) {
assert . ok ( false , 'should not fire any tooltip events' )
} )
. bootstrapTooltip ( 'hide' )
assert . strictEqual ( $tooltip . data ( 'bs.tooltip' ) , undefined , 'should not initialize the tooltip' )
} )
QUnit . test ( 'should not remove tooltip if multiple triggers are set and one is still active' , function ( assert ) {
assert . expect ( 41 )
var $el = $ ( '<button>Trigger</button>' )
. appendTo ( '#qunit-fixture' )
. bootstrapTooltip ( { trigger : 'click hover focus' , animation : false } )
var tooltip = $el . data ( 'bs.tooltip' )
2015-05-12 08:32:37 +02:00
var $tooltip = $ ( tooltip . getTipElement ( ) )
2015-05-06 22:34:14 +02:00
2015-05-12 08:32:37 +02:00
function showingTooltip ( ) { return $tooltip . hasClass ( 'in' ) || tooltip . _hoverState == 'in' }
2015-05-06 22:34:14 +02:00
var tests = [
[ 'mouseenter' , 'mouseleave' ] ,
2014-12-17 01:40:54 +01:00
2015-05-06 22:34:14 +02:00
[ 'focusin' , 'focusout' ] ,
[ 'click' , 'click' ] ,
[ 'mouseenter' , 'focusin' , 'focusout' , 'mouseleave' ] ,
[ 'mouseenter' , 'focusin' , 'mouseleave' , 'focusout' ] ,
[ 'focusin' , 'mouseenter' , 'mouseleave' , 'focusout' ] ,
[ 'focusin' , 'mouseenter' , 'focusout' , 'mouseleave' ] ,
[ 'click' , 'focusin' , 'mouseenter' , 'focusout' , 'mouseleave' , 'click' ] ,
[ 'mouseenter' , 'click' , 'focusin' , 'focusout' , 'mouseleave' , 'click' ] ,
[ 'mouseenter' , 'focusin' , 'click' , 'click' , 'mouseleave' , 'focusout' ]
]
assert . ok ( ! showingTooltip ( ) )
$ . each ( tests , function ( idx , triggers ) {
for ( var i = 0 , len = triggers . length ; i < len ; i ++ ) {
$el . trigger ( triggers [ i ] ) ;
assert . equal ( i < ( len - 1 ) , showingTooltip ( ) )
}
} )
2014-12-17 01:40:54 +01:00
} )
2012-12-20 10:36:57 +01:00
} )