Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Bootstrap
bootstrap
Commits
e341355d
Commit
e341355d
authored
10 years ago
by
Heinrich Fenkart
Browse files
Options
Download
Email Patches
Plain Diff
Clean tooltip unit tests up
parent
b3a125e9
5 merge requests
!28721
Hot test
,
!13853
Major unit tests cleanup
,
!16605
Test pull please ignore
,
!22103
test
,
!25326
Adjust examples
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
js/tests/unit/tooltip.js
+453
-306
js/tests/unit/tooltip.js
with
453 additions
and
306 deletions
+453
-306
js/tests/unit/tooltip.js
+
453
-
306
View file @
e341355d
...
@@ -4,8 +4,7 @@ $(function () {
...
@@ -4,8 +4,7 @@ $(function () {
module
(
'
tooltip plugin
'
)
module
(
'
tooltip plugin
'
)
test
(
'
should be defined on jquery object
'
,
function
()
{
test
(
'
should be defined on jquery object
'
,
function
()
{
var
div
=
$
(
'
<div></div>
'
)
ok
(
$
(
document
.
body
).
tooltip
,
'
popover method is defined
'
)
ok
(
div
.
tooltip
,
'
popover method is defined
'
)
})
})
module
(
'
tooltip
'
,
{
module
(
'
tooltip
'
,
{
...
@@ -20,97 +19,108 @@ $(function () {
...
@@ -20,97 +19,108 @@ $(function () {
})
})
test
(
'
should provide no conflict
'
,
function
()
{
test
(
'
should provide no conflict
'
,
function
()
{
ok
(
!
$
.
fn
.
tooltip
,
'
tooltip was set back to undefined (org value)
'
)
strictEqual
(
$
.
fn
.
tooltip
,
undefined
,
'
tooltip was set back to undefined (org value)
'
)
})
})
test
(
'
should return element
'
,
function
()
{
test
(
'
should return jquery collection containing the element
'
,
function
()
{
var
div
=
$
(
'
<div></div>
'
)
var
$el
=
$
(
'
<div/>
'
)
ok
(
div
.
bootstrapTooltip
()
==
div
,
'
document.body returned
'
)
var
$tooltip
=
$el
.
bootstrapTooltip
()
ok
(
$tooltip
instanceof
$
,
'
returns jquery collection
'
)
strictEqual
(
$tooltip
[
0
],
$el
[
0
],
'
collection contains element
'
)
})
})
test
(
'
should expose default settings
'
,
function
()
{
test
(
'
should expose default settings
'
,
function
()
{
ok
(
!!
$
.
fn
.
bootstrapTooltip
.
Constructor
.
DEFAULTS
,
'
defaults is defined
'
)
ok
(
$
.
fn
.
bootstrapTooltip
.
Constructor
.
DEFAULTS
,
'
defaults is defined
'
)
})
})
test
(
'
should empty title attribute
'
,
function
()
{
test
(
'
should empty title attribute
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
></a
>
'
).
bootstrapTooltip
()
var
$trigger
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
/
>
'
).
bootstrapTooltip
()
ok
(
tooltip
.
attr
(
'
title
'
)
===
''
,
'
title attribute was emptied
'
)
strictEqual
(
$trigger
.
attr
(
'
title
'
)
,
''
,
'
title attribute was emptied
'
)
})
})
test
(
'
should add data attribute for referencing original title
'
,
function
()
{
test
(
'
should add data attribute for referencing original title
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
></a
>
'
).
bootstrapTooltip
()
var
$trigger
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
/
>
'
).
bootstrapTooltip
()
equal
(
tooltip
.
attr
(
'
data-original-title
'
),
'
Another tooltip
'
,
'
original title preserved in data attribute
'
)
strictEqual
(
$trigger
.
attr
(
'
data-original-title
'
),
'
Another tooltip
'
,
'
original title preserved in data attribute
'
)
})
})
test
(
'
should add set set aria describedby to the element called on show
'
,
function
()
{
test
(
'
should add aria-describedby to the trigger on show
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
).
bootstrapTooltip
()
var
$trigger
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
bootstrapTooltip
()
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
(
'
show
'
)
.
bootstrapTooltip
(
'
show
'
)
ok
(
tooltip
.
attr
(
'
aria-describedby
'
),
'
has the right attributes
'
)
var
id
=
$
(
'
.tooltip
'
).
attr
(
'
id
'
)
var
id
=
$
(
'
.tooltip
'
).
attr
(
'
id
'
)
ok
(
$
(
'
#
'
+
id
).
length
==
1
,
'
has a unique id
'
)
strictEqual
(
$
(
'
#
'
+
id
).
length
,
1
,
'
has a unique id
'
)
ok
(
$
(
'
.tooltip
'
).
attr
(
'
aria-describedby
'
)
===
tooltip
.
attr
(
'
id
'
),
'
t
hey
match
!
'
)
strictEqual
(
$
(
'
.tooltip
'
).
attr
(
'
aria-describedby
'
)
,
$trigger
.
attr
(
'
id
'
),
'
t
ooltip id and aria-describedby on trigger
match
'
)
ok
(
tooltip
.
attr
(
'
aria-describedby
'
)
!==
undefined
,
'
has the right attributes
'
)
ok
(
$trigger
[
0
].
hasAttribute
(
'
aria-describedby
'
),
'
trigger has aria-describedby
'
)
})
})
test
(
'
should remove the aria-describedby attributes on hide
'
,
function
()
{
test
(
'
should remove aria-describedby from trigger on hide
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
).
bootstrapTooltip
()
var
$trigger
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
bootstrapTooltip
()
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
(
'
show
'
)
ok
(
tooltip
.
attr
(
'
aria-describedby
'
),
'
has the right attributes
'
)
$trigger
.
bootstrapTooltip
(
'
show
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
ok
(
$trigger
[
0
].
hasAttribute
(
'
aria-describedby
'
),
'
trigger has aria-describedby
'
)
ok
(
!
tooltip
.
attr
(
'
aria-describedby
'
),
'
removed the attributes on hide
'
)
$trigger
.
bootstrapTooltip
(
'
hide
'
)
ok
(
!
$trigger
[
0
].
hasAttribute
(
'
aria-describedby
'
),
'
trigger does not have aria-describedby
'
)
})
})
test
(
'
should assign a unique id tooltip element
'
,
function
()
{
test
(
'
should assign a unique id tooltip element
'
,
function
()
{
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
></a
>
'
)
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
/
>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
(
'
show
'
)
.
bootstrapTooltip
(
'
show
'
)
var
id
=
$
(
'
.tooltip
'
).
attr
(
'
id
'
)
var
id
=
$
(
'
.tooltip
'
).
attr
(
'
id
'
)
ok
(
$
(
'
#
'
+
id
).
length
==
1
&&
id
.
indexOf
(
'
tooltip
'
)
===
0
,
'
generated prefixed and unique tooltip id
'
)
strictEqual
(
$
(
'
#
'
+
id
).
length
,
1
,
'
tooltip has unique id
'
)
strictEqual
(
id
.
indexOf
(
'
tooltip
'
),
0
,
'
tooltip id has prefix
'
)
})
})
test
(
'
should place tooltips relative to placement option
'
,
function
()
{
test
(
'
should place tooltips relative to placement option
'
,
function
()
{
$
.
support
.
transition
=
false
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
placement
:
'
bottom
'
})
.
bootstrapTooltip
({
placement
:
'
bottom
'
})
.
bootstrapTooltip
(
'
show
'
)
$tooltip
.
bootstrapTooltip
(
'
show
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.bottom.in
'
),
'
has correct classes applied
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.bottom.in
'
),
'
has correct classes applied
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
$tooltip
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed
'
)
})
})
test
(
'
should allow html entities
'
,
function
()
{
test
(
'
should allow html entities
'
,
function
()
{
$
.
support
.
transition
=
false
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="<b>@fat</b>"/>
'
)
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="<b>@fat</b>"></a>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
html
:
true
})
.
bootstrapTooltip
({
html
:
true
})
.
bootstrapTooltip
(
'
show
'
)
ok
(
$
(
'
.tooltip b
'
).
length
,
'
b tag was inserted
'
)
$tooltip
.
bootstrapTooltip
(
'
show
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
notEqual
(
$
(
'
.tooltip b
'
).
length
,
0
,
'
b tag was inserted
'
)
ok
(
!
$
(
'
.tooltip
'
).
length
,
'
tooltip removed
'
)
$tooltip
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed
'
)
})
})
test
(
'
should respect custom classes
'
,
function
()
{
test
(
'
should respect custom classes
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
></a
>
'
)
var
$
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
/
>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
template
:
'
<div class="tooltip some-class"><div class="tooltip-arrow"/><div class="tooltip-inner"/></div>
'
})
.
bootstrapTooltip
({
template
:
'
<div class="tooltip some-class"><div class="tooltip-arrow"/><div class="tooltip-inner"/></div>
'
})
.
bootstrapTooltip
(
'
show
'
)
$tooltip
.
bootstrapTooltip
(
'
show
'
)
ok
(
$
(
'
.tooltip
'
).
hasClass
(
'
some-class
'
),
'
custom class is present
'
)
ok
(
$
(
'
.tooltip
'
).
hasClass
(
'
some-class
'
),
'
custom class is present
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
ok
(
!
$
(
'
.tooltip
'
).
length
,
'
tooltip removed
'
)
$tooltip
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed
'
)
})
})
test
(
'
should fire show event
'
,
function
()
{
test
(
'
should fire show event
'
,
function
()
{
stop
()
stop
()
$
(
'
<div title="tooltip title"></div>
'
)
$
(
'
<div title="tooltip title"/>
'
)
.
on
(
'
show.bs.tooltip
'
,
function
()
{
.
on
(
'
show.bs.tooltip
'
,
function
()
{
ok
(
true
,
'
show
was call
ed
'
)
ok
(
true
,
'
show
event fir
ed
'
)
start
()
start
()
})
})
.
bootstrapTooltip
(
'
show
'
)
.
bootstrapTooltip
(
'
show
'
)
...
@@ -118,40 +128,41 @@ $(function () {
...
@@ -118,40 +128,41 @@ $(function () {
test
(
'
should fire shown event
'
,
function
()
{
test
(
'
should fire shown event
'
,
function
()
{
stop
()
stop
()
var
tooltip
=
$
(
'
<div title="tooltip title"></div>
'
).
appendTo
(
'
#qunit-fixture
'
)
tooltip
$
(
'
<div title="tooltip title"></div>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
ok
(
true
,
'
shown was called
'
)
ok
(
true
,
'
shown was called
'
)
tooltip
.
remove
()
start
()
start
()
})
})
.
bootstrapTooltip
(
'
show
'
)
.
bootstrapTooltip
(
'
show
'
)
})
})
test
(
'
should not fire shown event when
default
prevented
'
,
function
()
{
test
(
'
should not fire shown event when
show was
prevented
'
,
function
()
{
stop
()
stop
()
$
(
'
<div title="tooltip title"></div>
'
)
$
(
'
<div title="tooltip title"/>
'
)
.
on
(
'
show.bs.tooltip
'
,
function
(
e
)
{
.
on
(
'
show.bs.tooltip
'
,
function
(
e
)
{
e
.
preventDefault
()
e
.
preventDefault
()
ok
(
true
,
'
show
was call
ed
'
)
ok
(
true
,
'
show
event fir
ed
'
)
start
()
start
()
})
})
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
ok
(
false
,
'
shown
was call
ed
'
)
ok
(
false
,
'
shown
event fir
ed
'
)
})
})
.
bootstrapTooltip
(
'
show
'
)
.
bootstrapTooltip
(
'
show
'
)
})
})
test
(
'
should fire hide event
'
,
function
()
{
test
(
'
should fire hide event
'
,
function
()
{
stop
()
stop
()
var
tooltip
=
$
(
'
<div title="tooltip title"></div>
'
).
appendTo
(
'
#qunit-fixture
'
)
tooltip
$
(
'
<div title="tooltip title"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
$
(
this
).
bootstrapTooltip
(
'
hide
'
)
$
(
this
).
bootstrapTooltip
(
'
hide
'
)
})
})
.
on
(
'
hide.bs.tooltip
'
,
function
()
{
.
on
(
'
hide.bs.tooltip
'
,
function
()
{
ok
(
true
,
'
hide was called
'
)
ok
(
true
,
'
hide event fired
'
)
tooltip
.
remove
()
start
()
start
()
})
})
.
bootstrapTooltip
(
'
show
'
)
.
bootstrapTooltip
(
'
show
'
)
...
@@ -159,437 +170,573 @@ $(function () {
...
@@ -159,437 +170,573 @@ $(function () {
test
(
'
should fire hidden event
'
,
function
()
{
test
(
'
should fire hidden event
'
,
function
()
{
stop
()
stop
()
var
tooltip
=
$
(
'
<div title="tooltip title"></div>
'
).
appendTo
(
'
#qunit-fixture
'
)
tooltip
$
(
'
<div title="tooltip title"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
$
(
this
).
bootstrapTooltip
(
'
hide
'
)
$
(
this
).
bootstrapTooltip
(
'
hide
'
)
})
})
.
on
(
'
hidden.bs.tooltip
'
,
function
()
{
.
on
(
'
hidden.bs.tooltip
'
,
function
()
{
ok
(
true
,
'
hidden was called
'
)
ok
(
true
,
'
hidden event fired
'
)
tooltip
.
remove
()
start
()
start
()
})
})
.
bootstrapTooltip
(
'
show
'
)
.
bootstrapTooltip
(
'
show
'
)
})
})
test
(
'
should not fire hidden event when
default
prevented
'
,
function
()
{
test
(
'
should not fire hidden event when
hide was
prevented
'
,
function
()
{
stop
()
stop
()
var
tooltip
=
$
(
'
<div title="tooltip title"></div>
'
).
appendTo
(
'
#qunit-fixture
'
)
tooltip
$
(
'
<div title="tooltip title"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
$
(
this
).
bootstrapTooltip
(
'
hide
'
)
$
(
this
).
bootstrapTooltip
(
'
hide
'
)
})
})
.
on
(
'
hide.bs.tooltip
'
,
function
(
e
)
{
.
on
(
'
hide.bs.tooltip
'
,
function
(
e
)
{
e
.
preventDefault
()
e
.
preventDefault
()
ok
(
true
,
'
hide was called
'
)
ok
(
true
,
'
hide event fired
'
)
tooltip
.
remove
()
start
()
start
()
})
})
.
on
(
'
hidden.bs.tooltip
'
,
function
()
{
.
on
(
'
hidden.bs.tooltip
'
,
function
()
{
ok
(
false
,
'
hidden
was call
ed
'
)
ok
(
false
,
'
hidden
event fir
ed
'
)
})
})
.
bootstrapTooltip
(
'
show
'
)
.
bootstrapTooltip
(
'
show
'
)
})
})
test
(
'
should not show tooltip if leave event occurs before delay expires
'
,
function
()
{
test
(
'
should not show tooltip if leave event occurs before delay expires
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
delay
:
200
})
stop
()
stop
()
tooltip
.
trigger
(
'
mouseenter
'
)
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
delay
:
200
})
setTimeout
(
function
()
{
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms: tooltip not faded in
'
)
tooltip
.
trigger
(
'
mouseout
'
)
$tooltip
.
trigger
(
'
mouseout
'
)
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
start
()
},
200
)
},
100
)
},
100
)
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
300ms: tooltip not faded in
'
)
start
()
},
300
)
$tooltip
.
trigger
(
'
mouseenter
'
)
})
})
test
(
'
should not show tooltip if leave event occurs before delay expires, even if hide delay is 0
'
,
function
()
{
test
(
'
should not show tooltip if leave event occurs before delay expires, even if hide delay is 0
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
delay
:
{
show
:
200
,
hide
:
0
}})
stop
()
stop
()
tooltip
.
trigger
(
'
mouseenter
'
)
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
delay
:
{
show
:
200
,
hide
:
0
}})
setTimeout
(
function
()
{
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms: tooltip not faded in
'
)
tooltip
.
trigger
(
'
mouseout
'
)
$tooltip
.
trigger
(
'
mouseout
'
)
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
start
()
},
200
)
},
100
)
},
100
)
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
300ms: tooltip not faded in
'
)
start
()
},
300
)
$tooltip
.
trigger
(
'
mouseenter
'
)
})
})
test
(
'
should wait 200 ms before hiding the tooltip
'
,
3
,
function
()
{
test
(
'
should wait 200 ms before hiding the tooltip
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
stop
()
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
delay
:
{
show
:
0
,
hide
:
200
}})
.
bootstrapTooltip
({
delay
:
{
show
:
0
,
hide
:
200
}})
stop
()
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
1ms: tooltip faded in
'
)
$tooltip
.
trigger
(
'
mouseout
'
)
},
1
)
tooltip
.
trigger
(
'
mouseenter
'
)
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms: tooltip still faded in
'
)
},
100
)
setTimeout
(
function
()
{
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is faded in
'
)
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.in
'
),
'
250ms: tooltip removed
'
)
tooltip
.
trigger
(
'
mouseout
'
)
start
()
setTimeout
(
function
()
{
},
250
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms:tooltip is still faded in
'
)
setTimeout
(
function
()
{
$tooltip
.
trigger
(
'
mouseenter
'
)
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.in
'
),
'
tooltip removed
'
)
start
()
},
150
)
},
100
)
},
1
)
})
})
test
(
'
should not hide tooltip if leave event occurs, then tooltip is show immediately again
'
,
function
()
{
test
(
'
should not hide tooltip if leave event occurs and enter event occurs within the hide delay
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
stop
()
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
delay
:
{
show
:
0
,
hide
:
200
}})
.
bootstrapTooltip
({
delay
:
{
show
:
0
,
hide
:
200
}})
stop
()
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
1ms: tooltip faded in
'
)
$tooltip
.
trigger
(
'
mouseout
'
)
},
1
)
tooltip
.
trigger
(
'
mouseenter
'
)
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms: tooltip still faded in
'
)
$tooltip
.
trigger
(
'
mouseenter
'
)
},
100
)
setTimeout
(
function
()
{
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is faded in
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
250ms: tooltip still faded in
'
)
tooltip
.
trigger
(
'
mouseout
'
)
start
()
setTimeout
(
function
()
{
},
250
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms:tooltip is still faded in
'
)
tooltip
.
trigger
(
'
mouseenter
'
)
$tooltip
.
trigger
(
'
mouseenter
'
)
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.in
'
),
'
tooltip removed
'
)
start
()
},
150
)
},
100
)
},
1
)
})
})
test
(
'
should not show tooltip if leave event occurs before delay expires
'
,
function
()
{
test
(
'
should not show tooltip if leave event occurs before delay expires
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
stop
()
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
delay
:
100
})
.
bootstrapTooltip
({
delay
:
100
})
stop
()
tooltip
.
trigger
(
'
mouseenter
'
)
setTimeout
(
function
()
{
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
50ms: tooltip not faded in
'
)
tooltip
.
trigger
(
'
mouseout
'
)
$tooltip
.
trigger
(
'
mouseout
'
)
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
start
()
},
100
)
},
50
)
},
50
)
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms: tooltip not faded in
'
)
start
()
},
100
)
$tooltip
.
trigger
(
'
mouseenter
'
)
})
})
test
(
'
should show tooltip if leave event hasn
\'
t occured before delay expires
'
,
function
()
{
test
(
'
should show tooltip if leave event hasn
\'
t occured before delay expires
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
stop
()
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
delay
:
150
})
.
bootstrapTooltip
({
delay
:
150
})
stop
()
tooltip
.
trigger
(
'
mouseenter
'
)
setTimeout
(
function
()
{
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms:
tooltip is not faded in
'
)
},
100
)
},
100
)
setTimeout
(
function
()
{
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip
ha
s faded in
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
200ms:
tooltip
i
s faded in
'
)
start
()
start
()
},
200
)
},
200
)
$tooltip
.
trigger
(
'
mouseenter
'
)
})
})
test
(
'
should destroy tooltip
'
,
function
()
{
test
(
'
should destroy tooltip
'
,
function
()
{
var
tooltip
=
$
(
'
<div/>
'
).
bootstrapTooltip
().
on
(
'
click.foo
'
,
function
()
{})
var
$tooltip
=
$
(
'
<div/>
'
)
ok
(
tooltip
.
data
(
'
bs.tooltip
'
),
'
tooltip has data
'
)
.
bootstrapTooltip
()
ok
(
$
.
_data
(
tooltip
[
0
],
'
events
'
).
mouseover
&&
$
.
_data
(
tooltip
[
0
],
'
events
'
).
mouseout
,
'
tooltip has hover event
'
)
.
on
(
'
click.foo
'
,
function
()
{})
ok
(
$
.
_data
(
tooltip
[
0
],
'
events
'
).
click
[
0
].
namespace
==
'
foo
'
,
'
tooltip has extra click.foo event
'
)
tooltip
.
bootstrapTooltip
(
'
show
'
)
ok
(
$tooltip
.
data
(
'
bs.tooltip
'
),
'
tooltip has data
'
)
tooltip
.
bootstrapTooltip
(
'
destroy
'
)
ok
(
$
.
_data
(
$tooltip
[
0
],
'
events
'
).
mouseover
&&
$
.
_data
(
$tooltip
[
0
],
'
events
'
).
mouseout
,
'
tooltip has hover events
'
)
ok
(
!
tooltip
.
hasClass
(
'
in
'
),
'
tooltip is hidden
'
)
equal
(
$
.
_data
(
$tooltip
[
0
],
'
events
'
).
click
[
0
].
namespace
,
'
foo
'
,
'
tooltip has extra click.foo event
'
)
ok
(
!
$
.
_data
(
tooltip
[
0
],
'
bs.tooltip
'
),
'
tooltip does not have data
'
)
ok
(
$
.
_data
(
tooltip
[
0
],
'
events
'
).
click
[
0
].
namespace
==
'
foo
'
,
'
tooltip still has click.foo
'
)
$tooltip
.
bootstrapTooltip
(
'
show
'
)
ok
(
!
$
.
_data
(
tooltip
[
0
],
'
events
'
).
mouseover
&&
!
$
.
_data
(
tooltip
[
0
],
'
events
'
).
mouseout
,
'
tooltip does not have any events
'
)
$tooltip
.
bootstrapTooltip
(
'
destroy
'
)
ok
(
!
$tooltip
.
hasClass
(
'
in
'
),
'
tooltip is hidden
'
)
ok
(
!
$
.
_data
(
$tooltip
[
0
],
'
bs.tooltip
'
),
'
tooltip does not have data
'
)
equal
(
$
.
_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 hover events
'
)
})
})
test
(
'
should show tooltip with delegate selector on click
'
,
function
()
{
test
(
'
should show tooltip with delegate selector on click
'
,
function
()
{
var
div
=
$
(
'
<div><a href="#" rel="tooltip" title="Another tooltip"></a></div>
'
)
var
$div
=
$
(
'
<div><a href="#" rel="tooltip" title="Another tooltip"/></div>
'
)
div
.
appendTo
(
'
#qunit-fixture
'
).
bootstrapTooltip
({
.
appendTo
(
'
#qunit-fixture
'
)
selector
:
'
a[rel="tooltip"]
'
,
trigger
:
'
click
'
.
bootstrapTooltip
({
})
selector
:
'
a[rel="tooltip"]
'
,
div
.
find
(
'
a
'
).
trigger
(
'
click
'
)
trigger
:
'
click
'
})
$div
.
find
(
'
a
'
).
click
()
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is faded in
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is faded in
'
)
$div
.
find
(
'
a
'
).
click
()
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip was removed from dom
'
)
})
})
test
(
'
should show tooltip when toggle is called
'
,
function
()
{
test
(
'
should show tooltip when toggle is called
'
,
function
()
{
$
(
'
<a href="#" rel="tooltip" title="tooltip on toggle"
></a
>
'
)
$
(
'
<a href="#" rel="tooltip" title="tooltip on toggle"
/
>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
trigger
:
'
manual
'
})
.
bootstrapTooltip
({
trigger
:
'
manual
'
})
.
bootstrapTooltip
(
'
toggle
'
)
.
bootstrapTooltip
(
'
toggle
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip should be toggled in
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is faded in
'
)
})
})
test
(
'
should hide shown tooltip when toggle is called on tooltip
'
,
function
()
{
test
(
'
should hide
previously
shown tooltip when toggle is called on tooltip
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="tooltip on toggle">@ResentedHook</a>
'
)
$
(
'
<a href="#" rel="tooltip" title="tooltip on toggle">@ResentedHook</a>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
trigger
:
'
manual
'
})
.
bootstrapTooltip
({
trigger
:
'
manual
'
})
.
bootstrapTooltip
(
'
toggle
'
)
.
bootstrapTooltip
(
'
show
'
)
$
(
'
.tooltip
'
,
'
#qunit-fixture
'
).
bootstrapTooltip
(
'
toggle
'
)
ok
(
$
(
'
.tooltip
'
).
not
(
'
.fade.in
'
),
'
tooltip should be toggled out
'
)
$
(
'
.tooltip
'
).
bootstrapTooltip
(
'
toggle
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
ok
(
$
(
'
.tooltip
'
).
not
(
'
.fade.in
'
),
'
tooltip was faded out
'
)
$
(
'
#qunit-fixture
'
).
empty
()
})
})
test
(
'
should place tooltips inside
the
body
'
,
function
()
{
test
(
'
should place tooltips inside
body when container is
body
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
></a
>
'
)
var
$
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
/
>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
container
:
'
body
'
})
.
bootstrapTooltip
({
container
:
'
body
'
})
.
bootstrapTooltip
(
'
show
'
)
.
bootstrapTooltip
(
'
show
'
)
ok
(
$
(
'
body > .tooltip
'
).
length
,
'
inside the body
'
)
ok
(
!
$
(
'
#qunit-fixture > .tooltip
'
).
length
,
'
not found in parent
'
)
notEqual
(
$
(
'
body > .tooltip
'
).
length
,
0
,
'
tooltip is direct descendant of body
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
#qunit-fixture > .tooltip
'
).
length
,
0
,
'
tooltip is not in parent
'
)
$tooltip
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
body > .tooltip
'
).
length
,
0
,
'
tooltip was removed from dom
'
)
})
})
test
(
'
should place tooltip inside window
'
,
function
()
{
test
(
'
should place tooltip inside viewport
'
,
function
()
{
var
container
=
$
(
'
<div />
'
).
appendTo
(
'
body
'
)
stop
()
.
css
({
position
:
'
absolute
'
,
width
:
200
,
height
:
200
,
bottom
:
0
,
left
:
0
})
var
$container
=
$
(
'
<div/>
'
)
.
css
({
position
:
'
absolute
'
,
width
:
200
,
height
:
200
,
bottom
:
0
,
left
:
0
})
.
appendTo
(
document
.
body
)
$
(
'
<a href="#" title="Very very very very very very very very long tooltip">Hover me</a>
'
)
$
(
'
<a href="#" title="Very very very very very very very very long tooltip">Hover me</a>
'
)
.
css
({
position
:
'
absolute
'
,
top
:
0
,
left
:
0
})
.
css
({
.
appendTo
(
container
)
position
:
'
absolute
'
,
.
bootstrapTooltip
({
placement
:
'
top
'
,
animate
:
false
})
top
:
0
,
left
:
0
})
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
top
'
,
animate
:
false
})
.
bootstrapTooltip
(
'
show
'
)
.
bootstrapTooltip
(
'
show
'
)
stop
()
setTimeout
(
function
()
{
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
offset
().
left
>=
0
)
ok
(
$
(
'
.tooltip
'
).
offset
().
left
>=
0
)
$container
.
remove
()
start
()
start
()
container
.
remove
()
},
100
)
},
100
)
})
})
test
(
'
should place tooltip on top of element
'
,
function
()
{
test
(
'
should place tooltip on top of element
'
,
function
()
{
var
container
=
$
(
'
<div />
'
).
appendTo
(
'
body
'
)
.
css
({
position
:
'
absolute
'
,
bottom
:
0
,
left
:
0
,
textAlign
:
'
right
'
,
width
:
300
,
height
:
300
})
var
p
=
$
(
'
<p style="margin-top:200px" />
'
).
appendTo
(
container
)
var
tooltiped
=
$
(
'
<a href="#" title="very very very very very very very long tooltip">Hover me</a>
'
)
.
css
({
marginTop
:
200
})
.
appendTo
(
p
)
.
bootstrapTooltip
({
placement
:
'
top
'
,
animate
:
false
})
.
bootstrapTooltip
(
'
show
'
)
stop
()
stop
()
setTimeout
(
function
()
{
var
containerHTML
=
'
<div>
'
+
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
'
<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
(
document
.
body
)
var
$trigger
=
$container
.
find
(
'
a
'
)
.
css
(
'
margin-top
'
,
200
)
.
bootstrapTooltip
({
placement
:
'
top
'
,
animate
:
false
})
.
bootstrapTooltip
(
'
show
'
)
var
$tooltip
=
$container
.
find
(
'
.tooltip
'
)
setTimeout
(
function
()
{
ok
(
Math
.
round
(
$tooltip
.
offset
().
top
+
$tooltip
.
outerHeight
())
<=
Math
.
round
(
$trigger
.
offset
().
top
))
$container
.
remove
()
start
()
start
()
ok
(
Math
.
round
(
tooltip
.
offset
().
top
+
tooltip
.
outerHeight
())
<=
Math
.
round
(
tooltiped
.
offset
().
top
))
container
.
remove
()
},
100
)
},
100
)
})
})
test
(
'
should add position class before positioning so that position-specific styles are taken into account
'
,
function
()
{
test
(
'
should add position class before positioning so that position-specific styles are taken into account
'
,
function
()
{
$
(
'
head
'
).
append
(
'
<style id="test"> .tooltip.right { white-space: nowrap; } .tooltip.right .tooltip-inner { max-width: none; } </style>
'
)
var
styles
=
'
<style>
'
+
'
.tooltip.right { white-space: nowrap; }
'
+
var
container
=
$
(
'
<div />
'
).
appendTo
(
'
body
'
)
'
.tooltip.right .tooltip-inner { max-width: none; }
'
+
var
target
=
$
(
'
<a href="#" rel="tooltip" title="very very very very very very very very long tooltip in one line"></a>
'
)
'
</style>
'
.
appendTo
(
container
)
var
$styles
=
$
(
styles
).
appendTo
(
document
.
head
)
.
bootstrapTooltip
({
placement
:
'
right
'
,
viewport
:
null
})
.
bootstrapTooltip
(
'
show
'
)
var
$container
=
$
(
'
<div/>
'
).
appendTo
(
document
.
body
)
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
var
$target
=
$
(
'
<a href="#" rel="tooltip" title="very very very very very very very very long tooltip in one line"/>
'
)
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
right
'
,
viewport
:
null
})
.
bootstrapTooltip
(
'
show
'
)
var
$tooltip
=
$container
.
find
(
'
.tooltip
'
)
// this is some dumb hack shit because sub pixels in firefox
// 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
top
=
Math
.
round
(
$
target
.
offset
().
top
+
(
$
target
[
0
].
offsetHeight
/
2
)
-
(
$
tooltip
[
0
].
offsetHeight
/
2
))
var
top2
=
Math
.
round
(
tooltip
.
offset
().
top
)
var
top2
=
Math
.
round
(
$
tooltip
.
offset
().
top
)
var
topDiff
=
top
-
top2
var
topDiff
=
top
-
top2
ok
(
topDiff
<=
1
&&
topDiff
>=
-
1
)
ok
(
topDiff
<=
1
&&
topDiff
>=
-
1
)
target
.
bootstrapTooltip
(
'
hide
'
)
$target
.
bootstrapTooltip
(
'
hide
'
)
$
(
'
head #test
'
).
remove
()
$container
.
remove
()
$styles
.
remove
()
})
})
test
(
'
tooltip title test #1
'
,
function
()
{
test
(
'
should use title attribute for tooltip text
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Simple tooltip"
style="display: inline-block; position: absolute; top: 0; left: 0;"></a
>
'
)
var
$
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Simple tooltip"
/
>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({})
.
bootstrapTooltip
()
.
bootstrapTooltip
(
'
show
'
)
$tooltip
.
bootstrapTooltip
(
'
show
'
)
equal
(
$
(
'
.tooltip
'
).
children
(
'
.tooltip-inner
'
).
text
(),
'
Simple tooltip
'
,
'
title from title attribute is set
'
)
equal
(
$
(
'
.tooltip
'
).
children
(
'
.tooltip-inner
'
).
text
(),
'
Simple tooltip
'
,
'
title from title attribute is set
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
ok
(
!
$
(
'
.tooltip
'
).
length
,
'
tooltip removed
'
)
$tooltip
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
})
})
test
(
'
tooltip title test #2
'
,
function
()
{
test
(
'
should prefer title attribute over title option
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Simple tooltip"
style="display: inline-block; position: absolute; top: 0; left: 0;"></a
>
'
)
var
$
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Simple tooltip"
/
>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
.
bootstrapTooltip
({
title
:
'
This is a tooltip with some content
'
title
:
'
This is a tooltip with some content
'
})
})
.
bootstrapTooltip
(
'
show
'
)
$tooltip
.
bootstrapTooltip
(
'
show
'
)
equal
(
$
(
'
.tooltip
'
).
children
(
'
.tooltip-inner
'
).
text
(),
'
Simple tooltip
'
,
'
title is set from title attribute while prefered over title option
'
)
equal
(
$
(
'
.tooltip
'
).
children
(
'
.tooltip-inner
'
).
text
(),
'
Simple tooltip
'
,
'
title is set from title attribute while prefered over title option
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
ok
(
!
$
(
'
.tooltip
'
).
length
,
'
tooltip removed
'
)
$tooltip
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
})
})
test
(
'
tooltip title test #3
'
,
function
()
{
test
(
'
should use title option
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip"
style="display: inline-block; position: absolute; top: 0; left: 0;"></a
>
'
)
var
$
tooltip
=
$
(
'
<a href="#" rel="tooltip"
/
>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
.
bootstrapTooltip
({
title
:
'
This is a tooltip with some content
'
title
:
'
This is a tooltip with some content
'
})
})
.
bootstrapTooltip
(
'
show
'
)
$tooltip
.
bootstrapTooltip
(
'
show
'
)
equal
(
$
(
'
.tooltip
'
).
children
(
'
.tooltip-inner
'
).
text
(),
'
This is a tooltip with some content
'
,
'
title from title option is set
'
)
equal
(
$
(
'
.tooltip
'
).
children
(
'
.tooltip-inner
'
).
text
(),
'
This is a tooltip with some content
'
,
'
title from title option is set
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
ok
(
!
$
(
'
.tooltip
'
).
length
,
'
tooltip removed
'
)
$tooltip
.
bootstrapTooltip
(
'
hide
'
)
})
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
})
test
(
'
tooltips should be placed dynamically, with the dynamic placement option
'
,
function
()
{
$
.
support
.
transition
=
false
test
(
'
should be placed dynamically with the dynamic placement option
'
,
function
()
{
var
ttContainer
=
$
(
'
<div id="dynamic-tt-test"/>
'
).
css
({
var
$style
=
$
(
'
<style> a[rel="tooltip"] { display: inline-block; position: absolute; } </style>
'
)
height
:
400
,
var
$container
=
$
(
'
<div/>
'
)
overflow
:
'
hidden
'
,
.
css
({
position
:
'
absolute
'
,
position
:
'
absolute
'
,
top
:
0
,
overflow
:
'
hidden
'
,
left
:
0
,
width
:
600
,
width
:
600
height
:
400
,
})
top
:
0
,
.
appendTo
(
'
body
'
)
left
:
0
})
var
topTooltip
=
$
(
'
<div style="display: inline-block; position: absolute; left: 0; top: 0;" rel="tooltip" title="Top tooltip">Top Dynamic Tooltip</div>
'
)
.
appendTo
(
document
.
body
)
.
appendTo
(
'
#dynamic-tt-test
'
)
var
$topTooltip
=
$
(
'
<div style="left: 0; top: 0;" rel="tooltip" title="Top tooltip">Top Dynamic Tooltip</div>
'
)
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
auto
'
})
.
bootstrapTooltip
({
placement
:
'
auto
'
})
.
bootstrapTooltip
(
'
show
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.bottom
'
),
'
top positioned tooltip is dynamically positioned bottom
'
)
$topTooltip
.
bootstrapTooltip
(
'
show
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.bottom
'
),
'
top positioned tooltip is dynamically positioned to bottom
'
)
topTooltip
.
bootstrapTooltip
(
'
hide
'
)
$topTooltip
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
top positioned tooltip removed from dom
'
)
var
rightTooltip
=
$
(
'
<div style="
display: inline-block; position: absolute;
right: 0;" rel="tooltip" title="Right tooltip">Right Dynamic Tooltip</div>
'
)
var
$
rightTooltip
=
$
(
'
<div style="right: 0;" rel="tooltip" title="Right tooltip">Right Dynamic Tooltip</div>
'
)
.
appendTo
(
'
#dynamic-tt-test
'
)
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
right auto
'
})
.
bootstrapTooltip
({
placement
:
'
right auto
'
})
.
bootstrapTooltip
(
'
show
'
)
$rightTooltip
.
bootstrapTooltip
(
'
show
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.left
'
),
'
right positioned tooltip is dynamically positioned left
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.left
'
),
'
right positioned tooltip is dynamically positioned left
'
)
rightTooltip
.
bootstrapTooltip
(
'
hide
'
)
var
leftTooltip
=
$
(
'
<div style="display: inline-block; position: absolute; left: 0;" rel="tooltip" title="Left tooltip">Left Dynamic Tooltip</div>
'
)
$rightTooltip
.
bootstrapTooltip
(
'
hide
'
)
.
appendTo
(
'
#dynamic-tt-test
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
right positioned tooltip removed from dom
'
)
var
$leftTooltip
=
$
(
'
<div style="left: 0;" rel="tooltip" title="Left tooltip">Left Dynamic Tooltip</div>
'
)
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
auto left
'
})
.
bootstrapTooltip
({
placement
:
'
auto left
'
})
.
bootstrapTooltip
(
'
show
'
)
$leftTooltip
.
bootstrapTooltip
(
'
show
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.right
'
),
'
left positioned tooltip is dynamically positioned right
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.right
'
),
'
left positioned tooltip is dynamically positioned right
'
)
leftTooltip
.
bootstrapTooltip
(
'
hide
'
)
ttContainer
.
remove
()
$leftTooltip
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
left positioned tooltip removed from dom
'
)
$container
.
remove
()
$style
.
remove
()
})
})
test
(
'
should adjust the tip
\'
s top when up against the top of the viewport
'
,
function
()
{
test
(
'
should adjust the tip
\'
s top position 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
styles
=
'
<style>
'
+
'
.tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; }
'
+
'
a[rel="tooltip"] { position: fixed; }
'
+
'
</style>
'
var
$styles
=
$
(
styles
).
appendTo
(
document
.
head
)
var
$container
=
$
(
'
<div/>
'
).
appendTo
(
document
.
body
)
var
$target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="top: 0px; left: 0px;"/>
'
)
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
right
'
,
viewport
:
{
selector
:
'
body
'
,
padding
:
12
}
})
$target
.
bootstrapTooltip
(
'
show
'
)
equal
(
Math
.
round
(
$container
.
find
(
'
.tooltip
'
).
offset
().
top
),
12
)
var
container
=
$
(
'
<div />
'
).
appendTo
(
'
body
'
)
$target
.
bootstrapTooltip
(
'
hide
'
)
var
target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
.
appendTo
(
container
)
.
bootstrapTooltip
({
placement
:
'
right
'
,
viewport
:
{
selector
:
'
body
'
,
padding
:
12
}})
.
bootstrapTooltip
(
'
show
'
)
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
ok
(
Math
.
round
(
tooltip
.
offset
().
top
)
===
12
)
$container
.
remove
()
target
.
bootstrapTooltip
(
'
hide
'
)
$styles
.
remove
()
$
(
'
head #test
'
).
remove
()
})
})
test
(
'
should adjust the tip
\'
s top when up against the bottom of the viewport
'
,
function
()
{
test
(
'
should adjust the tip
\'
s top position 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
styles
=
'
<style>
'
+
'
.tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; }
'
+
'
a[rel="tooltip"] { position: fixed; }
'
+
'
</style>
'
var
$styles
=
$
(
styles
).
appendTo
(
document
.
head
)
var
$container
=
$
(
'
<div/>
'
).
appendTo
(
document
.
body
)
var
$target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="bottom: 0px; left: 0px;"/>
'
)
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
right
'
,
viewport
:
{
selector
:
'
body
'
,
padding
:
12
}
})
var
container
=
$
(
'
<div />
'
).
appendTo
(
'
body
'
)
$target
.
bootstrapTooltip
(
'
show
'
)
var
target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="position: fixed; bottom: 0px; left: 0px;"></a>
'
)
var
$tooltip
=
$container
.
find
(
'
.tooltip
'
)
.
appendTo
(
container
)
strictEqual
(
Math
.
round
(
$tooltip
.
offset
().
top
),
Math
.
round
(
$
(
window
).
height
()
-
12
-
$tooltip
[
0
].
offsetHeight
))
.
bootstrapTooltip
({
placement
:
'
right
'
,
viewport
:
{
selector
:
'
body
'
,
padding
:
12
}})
.
bootstrapTooltip
(
'
show
'
)
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
ok
(
Math
.
round
(
tooltip
.
offset
().
top
)
===
Math
.
round
(
$
(
window
).
height
()
-
12
-
tooltip
[
0
].
offsetHeight
))
$target
.
bootstrapTooltip
(
'
hide
'
)
target
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
$
(
'
head #test
'
).
remove
()
$container
.
remove
()
$styles
.
remove
()
})
})
test
(
'
should adjust the tip
\'
s left when up against the left of the viewport
'
,
function
()
{
test
(
'
should adjust the tip
\'
s left position 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
styles
=
'
<style>
'
+
'
.tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; }
'
+
'
a[rel="tooltip"] { position: fixed; }
'
+
'
</style>
'
var
$styles
=
$
(
styles
).
appendTo
(
document
.
head
)
var
$container
=
$
(
'
<div/>
'
).
appendTo
(
document
.
body
)
var
$target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="top: 0px; left: 0px;"/>
'
)
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
bottom
'
,
viewport
:
{
selector
:
'
body
'
,
padding
:
12
}
})
$target
.
bootstrapTooltip
(
'
show
'
)
strictEqual
(
Math
.
round
(
$container
.
find
(
'
.tooltip
'
).
offset
().
left
),
12
)
var
container
=
$
(
'
<div />
'
).
appendTo
(
'
body
'
)
$target
.
bootstrapTooltip
(
'
hide
'
)
var
target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
.
appendTo
(
container
)
.
bootstrapTooltip
({
placement
:
'
bottom
'
,
viewport
:
{
selector
:
'
body
'
,
padding
:
12
}})
.
bootstrapTooltip
(
'
show
'
)
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
ok
(
Math
.
round
(
tooltip
.
offset
().
left
)
===
12
)
$container
.
remove
()
target
.
bootstrapTooltip
(
'
hide
'
)
$styles
.
remove
()
$
(
'
head #test
'
).
remove
()
})
})
test
(
'
should adjust the tip
\'
s left when up against the right of the viewport
'
,
function
()
{
test
(
'
should adjust the tip
\'
s left position 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
styles
=
'
<style>
'
+
'
.tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; }
'
+
'
a[rel="tooltip"] { position: fixed; }
'
+
'
</style>
'
var
$styles
=
$
(
styles
).
appendTo
(
document
.
head
)
var
container
=
$
(
'
<div />
'
).
appendTo
(
'
body
'
)
var
$container
=
$
(
'
<div/>
'
).
appendTo
(
'
body
'
)
var
target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; right: 0px;"></a>
'
)
var
$target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="top: 0px; right: 0px;"/>
'
)
.
appendTo
(
container
)
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
bottom
'
,
viewport
:
{
selector
:
'
body
'
,
padding
:
12
}})
.
bootstrapTooltip
({
.
bootstrapTooltip
(
'
show
'
)
placement
:
'
bottom
'
,
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
viewport
:
{
selector
:
'
body
'
,
padding
:
12
}
})
$target
.
bootstrapTooltip
(
'
show
'
)
var
$tooltip
=
$container
.
find
(
'
.tooltip
'
)
strictEqual
(
Math
.
round
(
$tooltip
.
offset
().
left
),
Math
.
round
(
$
(
window
).
width
()
-
12
-
$tooltip
[
0
].
offsetWidth
))
ok
(
Math
.
round
(
tooltip
.
offset
().
left
)
===
Math
.
round
(
$
(
window
).
width
()
-
12
-
tooltip
[
0
].
offsetWidth
))
$target
.
bootstrapTooltip
(
'
hide
'
)
target
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
$
(
'
head #test
'
).
remove
()
$container
.
remove
()
$styles
.
remove
()
})
})
test
(
'
should adjust the tip when up against the right of an arbitrary viewport
'
,
function
()
{
test
(
'
should adjust the tip when up against the right of an arbitrary viewport
'
,
function
()
{
$
(
'
head
'
).
append
(
'
<style id="test"> .tooltip, .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>
'
)
var
styles
=
'
<style>
'
+
$
(
'
head
'
).
append
(
'
<style id="viewport-style"> .container-viewport { position: absolute; top: 50px; left: 60px; width: 300px; height: 300px; } </style>
'
)
'
.tooltip, .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; }
'
+
'
.container-viewport { position: absolute; top: 50px; left: 60px; width: 300px; height: 300px; }
'
+
'
a[rel="tooltip"] { position: fixed; }
'
+
'
</style>
'
var
$styles
=
$
(
styles
).
appendTo
(
document
.
head
)
var
$container
=
$
(
'
<div class="container-viewport"/>
'
).
appendTo
(
document
.
body
)
var
$target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="top: 50px; left: 350px;"/>
'
)
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
bottom
'
,
viewport
:
'
.container-viewport
'
})
$target
.
bootstrapTooltip
(
'
show
'
)
var
$tooltip
=
$container
.
find
(
'
.tooltip
'
)
strictEqual
(
Math
.
round
(
$tooltip
.
offset
().
left
),
Math
.
round
(
60
+
$container
.
width
()
-
$tooltip
[
0
].
offsetWidth
))
var
container
=
$
(
'
<div />
'
,
{
'
class
'
:
'
container-viewport
'
}).
appendTo
(
'
body
'
)
$target
.
bootstrapTooltip
(
'
hide
'
)
var
target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 50px; left: 350px;"></a>
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
.
appendTo
(
container
)
.
bootstrapTooltip
({
placement
:
'
bottom
'
,
viewport
:
'
.container-viewport
'
})
.
bootstrapTooltip
(
'
show
'
)
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
ok
(
Math
.
round
(
tooltip
.
offset
().
left
)
===
Math
.
round
(
60
+
container
.
width
()
-
tooltip
[
0
].
offsetWidth
))
$container
.
remove
()
target
.
bootstrapTooltip
(
'
hide
'
)
$styles
.
remove
()
$
(
'
head #test
'
).
remove
()
$
(
'
head #viewport-style
'
).
remove
()
})
})
test
(
'
should not error when trying to show an auto-placed tooltip that has been removed from the dom
'
,
function
()
{
test
(
'
should not error when trying to show an auto-placed tooltip that has been removed from the dom
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
).
appendTo
(
'
#qunit-fixture
'
)
var
passed
=
true
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
tooltip
.
appendTo
(
'
#qunit-fixture
'
)
.
one
(
'
show.bs.tooltip
'
,
function
()
{
.
one
(
'
show.bs.tooltip
'
,
function
()
{
tooltip
.
remove
()
$
(
this
)
.
remove
()
})
})
.
bootstrapTooltip
({
placement
:
'
auto
'
})
.
bootstrapTooltip
({
placement
:
'
auto
'
})
var
passed
=
true
try
{
try
{
tooltip
.
bootstrapTooltip
(
'
show
'
)
$tooltip
.
bootstrapTooltip
(
'
show
'
)
}
}
catch
(
err
)
{
catch
(
err
)
{
passed
=
false
passed
=
false
console
.
log
(
err
)
console
.
log
(
err
)
}
}
ok
(
passed
,
'
.tooltip(
\'
show
\'
) should not throw an error in this case
'
)
try
{
ok
(
passed
,
'
.tooltip(
\'
show
\'
) should not throw an error if element no longer is in dom
'
)
tooltip
.
remove
()
}
catch
(
err
)
{
// tooltip may have already been removed
}
})
})
})
})
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Snippets