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 () {
module
(
'
tooltip plugin
'
)
test
(
'
should be defined on jquery object
'
,
function
()
{
var
div
=
$
(
'
<div></div>
'
)
ok
(
div
.
tooltip
,
'
popover method is defined
'
)
ok
(
$
(
document
.
body
).
tooltip
,
'
popover method is defined
'
)
})
module
(
'
tooltip
'
,
{
...
...
@@ -20,97 +19,108 @@ $(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
()
{
var
div
=
$
(
'
<div></div>
'
)
ok
(
div
.
bootstrapTooltip
()
==
div
,
'
document.body returned
'
)
test
(
'
should return jquery collection containing the element
'
,
function
()
{
var
$el
=
$
(
'
<div/>
'
)
var
$tooltip
=
$el
.
bootstrapTooltip
()
ok
(
$tooltip
instanceof
$
,
'
returns jquery collection
'
)
strictEqual
(
$tooltip
[
0
],
$el
[
0
],
'
collection contains element
'
)
})
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
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
></a
>
'
).
bootstrapTooltip
()
ok
(
tooltip
.
attr
(
'
title
'
)
===
''
,
'
title attribute was emptied
'
)
var
$trigger
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
/
>
'
).
bootstrapTooltip
()
strictEqual
(
$trigger
.
attr
(
'
title
'
)
,
''
,
'
title attribute was emptied
'
)
})
test
(
'
should add data attribute for referencing original title
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
></a
>
'
).
bootstrapTooltip
()
equal
(
tooltip
.
attr
(
'
data-original-title
'
),
'
Another tooltip
'
,
'
original title preserved in data attribute
'
)
var
$trigger
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
/
>
'
).
bootstrapTooltip
()
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
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
).
bootstrapTooltip
()
test
(
'
should add aria-describedby to the trigger on show
'
,
function
()
{
var
$trigger
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
bootstrapTooltip
()
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
(
'
show
'
)
ok
(
tooltip
.
attr
(
'
aria-describedby
'
),
'
has the right attributes
'
)
var
id
=
$
(
'
.tooltip
'
).
attr
(
'
id
'
)
ok
(
$
(
'
#
'
+
id
).
length
==
1
,
'
has a unique id
'
)
ok
(
$
(
'
.tooltip
'
).
attr
(
'
aria-describedby
'
)
===
tooltip
.
attr
(
'
id
'
),
'
t
hey
match
!
'
)
ok
(
tooltip
.
attr
(
'
aria-describedby
'
)
!==
undefined
,
'
has the right attributes
'
)
strictEqual
(
$
(
'
#
'
+
id
).
length
,
1
,
'
has a unique id
'
)
strictEqual
(
$
(
'
.tooltip
'
).
attr
(
'
aria-describedby
'
)
,
$trigger
.
attr
(
'
id
'
),
'
t
ooltip id and aria-describedby on trigger
match
'
)
ok
(
$trigger
[
0
].
hasAttribute
(
'
aria-describedby
'
),
'
trigger has aria-describedby
'
)
})
test
(
'
should remove the aria-describedby attributes on hide
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
).
bootstrapTooltip
()
test
(
'
should remove aria-describedby from trigger on hide
'
,
function
()
{
var
$trigger
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
bootstrapTooltip
()
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
(
'
show
'
)
ok
(
tooltip
.
attr
(
'
aria-describedby
'
),
'
has the right attributes
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
ok
(
!
tooltip
.
attr
(
'
aria-describedby
'
),
'
removed the attributes on hide
'
)
$trigger
.
bootstrapTooltip
(
'
show
'
)
ok
(
$trigger
[
0
].
hasAttribute
(
'
aria-describedby
'
),
'
trigger has aria-describedby
'
)
$trigger
.
bootstrapTooltip
(
'
hide
'
)
ok
(
!
$trigger
[
0
].
hasAttribute
(
'
aria-describedby
'
),
'
trigger does not have aria-describedby
'
)
})
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
'
)
.
bootstrapTooltip
(
'
show
'
)
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
()
{
$
.
support
.
transition
=
false
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
placement
:
'
bottom
'
})
.
bootstrapTooltip
(
'
show
'
)
$tooltip
.
bootstrapTooltip
(
'
show
'
)
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
()
{
$
.
support
.
transition
=
false
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="<b>@fat</b>"></a>
'
)
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="<b>@fat</b>"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
html
:
true
})
.
bootstrapTooltip
(
'
show
'
)
ok
(
$
(
'
.tooltip b
'
).
length
,
'
b tag was inserted
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
ok
(
!
$
(
'
.tooltip
'
).
length
,
'
tooltip removed
'
)
$tooltip
.
bootstrapTooltip
(
'
show
'
)
notEqual
(
$
(
'
.tooltip b
'
).
length
,
0
,
'
b tag was inserted
'
)
$tooltip
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed
'
)
})
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
'
)
.
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
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
ok
(
!
$
(
'
.tooltip
'
).
length
,
'
tooltip removed
'
)
$tooltip
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed
'
)
})
test
(
'
should fire show event
'
,
function
()
{
stop
()
$
(
'
<div title="tooltip title"></div>
'
)
$
(
'
<div title="tooltip title"/>
'
)
.
on
(
'
show.bs.tooltip
'
,
function
()
{
ok
(
true
,
'
show
was call
ed
'
)
ok
(
true
,
'
show
event fir
ed
'
)
start
()
})
.
bootstrapTooltip
(
'
show
'
)
...
...
@@ -118,40 +128,41 @@ $(function () {
test
(
'
should fire shown event
'
,
function
()
{
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
()
{
ok
(
true
,
'
shown was called
'
)
tooltip
.
remove
()
start
()
})
.
bootstrapTooltip
(
'
show
'
)
})
test
(
'
should not fire shown event when
default
prevented
'
,
function
()
{
test
(
'
should not fire shown event when
show was
prevented
'
,
function
()
{
stop
()
$
(
'
<div title="tooltip title"></div>
'
)
$
(
'
<div title="tooltip title"/>
'
)
.
on
(
'
show.bs.tooltip
'
,
function
(
e
)
{
e
.
preventDefault
()
ok
(
true
,
'
show
was call
ed
'
)
ok
(
true
,
'
show
event fir
ed
'
)
start
()
})
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
ok
(
false
,
'
shown
was call
ed
'
)
ok
(
false
,
'
shown
event fir
ed
'
)
})
.
bootstrapTooltip
(
'
show
'
)
})
test
(
'
should fire hide event
'
,
function
()
{
stop
()
var
tooltip
=
$
(
'
<div title="tooltip title"></div>
'
).
appendTo
(
'
#qunit-fixture
'
)
tooltip
$
(
'
<div title="tooltip title"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
$
(
this
).
bootstrapTooltip
(
'
hide
'
)
})
.
on
(
'
hide.bs.tooltip
'
,
function
()
{
ok
(
true
,
'
hide was called
'
)
tooltip
.
remove
()
ok
(
true
,
'
hide event fired
'
)
start
()
})
.
bootstrapTooltip
(
'
show
'
)
...
...
@@ -159,437 +170,573 @@ $(function () {
test
(
'
should fire hidden event
'
,
function
()
{
stop
()
var
tooltip
=
$
(
'
<div title="tooltip title"></div>
'
).
appendTo
(
'
#qunit-fixture
'
)
tooltip
$
(
'
<div title="tooltip title"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
$
(
this
).
bootstrapTooltip
(
'
hide
'
)
})
.
on
(
'
hidden.bs.tooltip
'
,
function
()
{
ok
(
true
,
'
hidden was called
'
)
tooltip
.
remove
()
ok
(
true
,
'
hidden event fired
'
)
start
()
})
.
bootstrapTooltip
(
'
show
'
)
})
test
(
'
should not fire hidden event when
default
prevented
'
,
function
()
{
test
(
'
should not fire hidden event when
hide was
prevented
'
,
function
()
{
stop
()
var
tooltip
=
$
(
'
<div title="tooltip title"></div>
'
).
appendTo
(
'
#qunit-fixture
'
)
tooltip
$
(
'
<div title="tooltip title"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
on
(
'
shown.bs.tooltip
'
,
function
()
{
$
(
this
).
bootstrapTooltip
(
'
hide
'
)
})
.
on
(
'
hide.bs.tooltip
'
,
function
(
e
)
{
e
.
preventDefault
()
ok
(
true
,
'
hide was called
'
)
tooltip
.
remove
()
ok
(
true
,
'
hide event fired
'
)
start
()
})
.
on
(
'
hidden.bs.tooltip
'
,
function
()
{
ok
(
false
,
'
hidden
was call
ed
'
)
ok
(
false
,
'
hidden
event fir
ed
'
)
})
.
bootstrapTooltip
(
'
show
'
)
})
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
()
tooltip
.
trigger
(
'
mouseenter
'
)
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
delay
:
200
})
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
tooltip
.
trigger
(
'
mouseout
'
)
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
start
()
},
200
)
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms: tooltip not faded in
'
)
$tooltip
.
trigger
(
'
mouseout
'
)
},
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
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
delay
:
{
show
:
200
,
hide
:
0
}})
stop
()
tooltip
.
trigger
(
'
mouseenter
'
)
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
delay
:
{
show
:
200
,
hide
:
0
}})
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
tooltip
.
trigger
(
'
mouseout
'
)
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
start
()
},
200
)
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms: tooltip not faded in
'
)
$tooltip
.
trigger
(
'
mouseout
'
)
},
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
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
test
(
'
should wait 200 ms before hiding the tooltip
'
,
function
()
{
stop
()
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
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
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is faded in
'
)
tooltip
.
trigger
(
'
mouseout
'
)
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms:tooltip is still faded in
'
)
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.in
'
),
'
tooltip removed
'
)
start
()
},
150
)
},
100
)
},
1
)
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.in
'
),
'
250ms: tooltip removed
'
)
start
()
},
250
)
$tooltip
.
trigger
(
'
mouseenter
'
)
})
test
(
'
should not hide tooltip if leave event occurs, then tooltip is show immediately again
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
test
(
'
should not hide tooltip if leave event occurs and enter event occurs within the hide delay
'
,
function
()
{
stop
()
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
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
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is faded in
'
)
tooltip
.
trigger
(
'
mouseout
'
)
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms:tooltip is still faded in
'
)
tooltip
.
trigger
(
'
mouseenter
'
)
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.in
'
),
'
tooltip removed
'
)
start
()
},
150
)
},
100
)
},
1
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
250ms: tooltip still faded in
'
)
start
()
},
250
)
$tooltip
.
trigger
(
'
mouseenter
'
)
})
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
'
)
.
bootstrapTooltip
({
delay
:
100
})
stop
()
tooltip
.
trigger
(
'
mouseenter
'
)
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
tooltip
.
trigger
(
'
mouseout
'
)
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
start
()
},
100
)
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
50ms: tooltip not faded in
'
)
$tooltip
.
trigger
(
'
mouseout
'
)
},
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
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
stop
()
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
delay
:
150
})
stop
()
tooltip
.
trigger
(
'
mouseenter
'
)
setTimeout
(
function
()
{
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip is not faded in
'
)
ok
(
!
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
100ms:
tooltip is not faded in
'
)
},
100
)
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
tooltip
ha
s faded in
'
)
ok
(
$
(
'
.tooltip
'
).
is
(
'
.fade.in
'
),
'
200ms:
tooltip
i
s faded in
'
)
start
()
},
200
)
$tooltip
.
trigger
(
'
mouseenter
'
)
})
test
(
'
should destroy tooltip
'
,
function
()
{
var
tooltip
=
$
(
'
<div/>
'
).
bootstrapTooltip
().
on
(
'
click.foo
'
,
function
()
{})
ok
(
tooltip
.
data
(
'
bs.tooltip
'
),
'
tooltip has data
'
)
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
'
)
tooltip
.
bootstrapTooltip
(
'
show
'
)
tooltip
.
bootstrapTooltip
(
'
destroy
'
)
ok
(
!
tooltip
.
hasClass
(
'
in
'
),
'
tooltip is hidden
'
)
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
'
)
ok
(
!
$
.
_data
(
tooltip
[
0
],
'
events
'
).
mouseover
&&
!
$
.
_data
(
tooltip
[
0
],
'
events
'
).
mouseout
,
'
tooltip does not have any events
'
)
var
$tooltip
=
$
(
'
<div/>
'
)
.
bootstrapTooltip
()
.
on
(
'
click.foo
'
,
function
()
{})
ok
(
$tooltip
.
data
(
'
bs.tooltip
'
),
'
tooltip has data
'
)
ok
(
$
.
_data
(
$tooltip
[
0
],
'
events
'
).
mouseover
&&
$
.
_data
(
$tooltip
[
0
],
'
events
'
).
mouseout
,
'
tooltip has hover events
'
)
equal
(
$
.
_data
(
$tooltip
[
0
],
'
events
'
).
click
[
0
].
namespace
,
'
foo
'
,
'
tooltip has extra click.foo event
'
)
$tooltip
.
bootstrapTooltip
(
'
show
'
)
$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
()
{
var
div
=
$
(
'
<div><a href="#" rel="tooltip" title="Another tooltip"></a></div>
'
)
div
.
appendTo
(
'
#qunit-fixture
'
).
bootstrapTooltip
({
selector
:
'
a[rel="tooltip"]
'
,
trigger
:
'
click
'
})
div
.
find
(
'
a
'
).
trigger
(
'
click
'
)
var
$div
=
$
(
'
<div><a href="#" rel="tooltip" title="Another tooltip"/></div>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
selector
:
'
a[rel="tooltip"]
'
,
trigger
:
'
click
'
})
$div
.
find
(
'
a
'
).
click
()
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
()
{
$
(
'
<a href="#" rel="tooltip" title="tooltip on toggle"
></a
>
'
)
$
(
'
<a href="#" rel="tooltip" title="tooltip on toggle"
/
>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
trigger
:
'
manual
'
})
.
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
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="tooltip on toggle">@ResentedHook</a>
'
)
test
(
'
should hide
previously
shown tooltip when toggle is called on tooltip
'
,
function
()
{
$
(
'
<a href="#" rel="tooltip" title="tooltip on toggle">@ResentedHook</a>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
trigger
:
'
manual
'
})
.
bootstrapTooltip
(
'
toggle
'
)
$
(
'
.tooltip
'
,
'
#qunit-fixture
'
).
bootstrapTooltip
(
'
toggle
'
)
ok
(
$
(
'
.tooltip
'
).
not
(
'
.fade.in
'
),
'
tooltip should be toggled out
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
$
(
'
#qunit-fixture
'
).
empty
()
.
bootstrapTooltip
(
'
show
'
)
$
(
'
.tooltip
'
).
bootstrapTooltip
(
'
toggle
'
)
ok
(
$
(
'
.tooltip
'
).
not
(
'
.fade.in
'
),
'
tooltip was faded out
'
)
})
test
(
'
should place tooltips inside
the
body
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
></a
>
'
)
test
(
'
should place tooltips inside
body when container is
body
'
,
function
()
{
var
$
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"
/
>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
container
:
'
body
'
})
.
bootstrapTooltip
(
'
show
'
)
ok
(
$
(
'
body > .tooltip
'
).
length
,
'
inside the body
'
)
ok
(
!
$
(
'
#qunit-fixture > .tooltip
'
).
length
,
'
not found in parent
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
notEqual
(
$
(
'
body > .tooltip
'
).
length
,
0
,
'
tooltip is direct descendant of body
'
)
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
()
{
var
container
=
$
(
'
<div />
'
).
appendTo
(
'
body
'
)
.
css
({
position
:
'
absolute
'
,
width
:
200
,
height
:
200
,
bottom
:
0
,
left
:
0
})
test
(
'
should place tooltip inside viewport
'
,
function
()
{
stop
()
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>
'
)
.
css
({
position
:
'
absolute
'
,
top
:
0
,
left
:
0
})
.
appendTo
(
container
)
.
bootstrapTooltip
({
placement
:
'
top
'
,
animate
:
false
})
.
css
({
position
:
'
absolute
'
,
top
:
0
,
left
:
0
})
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
top
'
,
animate
:
false
})
.
bootstrapTooltip
(
'
show
'
)
stop
()
setTimeout
(
function
()
{
ok
(
$
(
'
.tooltip
'
).
offset
().
left
>=
0
)
$container
.
remove
()
start
()
container
.
remove
()
},
100
)
})
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
()
setTimeout
(
function
()
{
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
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
(
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
()
ok
(
Math
.
round
(
tooltip
.
offset
().
top
+
tooltip
.
outerHeight
())
<=
Math
.
round
(
tooltiped
.
offset
().
top
))
container
.
remove
()
},
100
)
})
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
container
=
$
(
'
<div />
'
).
appendTo
(
'
body
'
)
var
target
=
$
(
'
<a href="#" rel="tooltip" title="very very very very very very very very long tooltip in one line"></a>
'
)
.
appendTo
(
container
)
.
bootstrapTooltip
({
placement
:
'
right
'
,
viewport
:
null
})
.
bootstrapTooltip
(
'
show
'
)
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
var
styles
=
'
<style>
'
+
'
.tooltip.right { white-space: nowrap; }
'
+
'
.tooltip.right .tooltip-inner { max-width: none; }
'
+
'
</style>
'
var
$styles
=
$
(
styles
).
appendTo
(
document
.
head
)
var
$container
=
$
(
'
<div/>
'
).
appendTo
(
document
.
body
)
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
var
top
=
Math
.
round
(
target
.
offset
().
top
+
(
target
[
0
].
offsetHeight
/
2
)
-
(
tooltip
[
0
].
offsetHeight
/
2
))
var
top2
=
Math
.
round
(
tooltip
.
offset
().
top
)
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
)
target
.
bootstrapTooltip
(
'
hide
'
)
$
(
'
head #test
'
).
remove
()
$target
.
bootstrapTooltip
(
'
hide
'
)
$container
.
remove
()
$styles
.
remove
()
})
test
(
'
tooltip title test #1
'
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Simple tooltip"
style="display: inline-block; position: absolute; top: 0; left: 0;"></a
>
'
)
test
(
'
should use title attribute for tooltip text
'
,
function
()
{
var
$
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Simple tooltip"
/
>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({})
.
bootstrapTooltip
(
'
show
'
)
.
bootstrapTooltip
()
$tooltip
.
bootstrapTooltip
(
'
show
'
)
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
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Simple tooltip"
style="display: inline-block; position: absolute; top: 0; left: 0;"></a
>
'
)
test
(
'
should prefer title attribute over title option
'
,
function
()
{
var
$
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Simple tooltip"
/
>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
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
'
)
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
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip"
style="display: inline-block; position: absolute; top: 0; left: 0;"></a
>
'
)
test
(
'
should use title option
'
,
function
()
{
var
$
tooltip
=
$
(
'
<a href="#" rel="tooltip"
/
>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
bootstrapTooltip
({
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
'
)
tooltip
.
bootstrapTooltip
(
'
hide
'
)
ok
(
!
$
(
'
.tooltip
'
).
length
,
'
tooltip removed
'
)
})
test
(
'
tooltips should be placed dynamically, with the dynamic placement option
'
,
function
()
{
$
.
support
.
transition
=
false
var
ttContainer
=
$
(
'
<div id="dynamic-tt-test"/>
'
).
css
({
height
:
400
,
overflow
:
'
hidden
'
,
position
:
'
absolute
'
,
top
:
0
,
left
:
0
,
width
:
600
})
.
appendTo
(
'
body
'
)
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
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
})
test
(
'
should be placed dynamically with the dynamic placement option
'
,
function
()
{
var
$style
=
$
(
'
<style> a[rel="tooltip"] { display: inline-block; position: absolute; } </style>
'
)
var
$container
=
$
(
'
<div/>
'
)
.
css
({
position
:
'
absolute
'
,
overflow
:
'
hidden
'
,
width
:
600
,
height
:
400
,
top
:
0
,
left
:
0
})
.
appendTo
(
document
.
body
)
var
$topTooltip
=
$
(
'
<div style="left: 0; top: 0;" rel="tooltip" title="Top tooltip">Top Dynamic Tooltip</div>
'
)
.
appendTo
(
$container
)
.
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>
'
)
.
appendTo
(
'
#dynamic-tt-test
'
)
var
$
rightTooltip
=
$
(
'
<div style="right: 0;" rel="tooltip" title="Right tooltip">Right Dynamic Tooltip</div>
'
)
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
right auto
'
})
.
bootstrapTooltip
(
'
show
'
)
$rightTooltip
.
bootstrapTooltip
(
'
show
'
)
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>
'
)
.
appendTo
(
'
#dynamic-tt-test
'
)
$rightTooltip
.
bootstrapTooltip
(
'
hide
'
)
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
(
'
show
'
)
$leftTooltip
.
bootstrapTooltip
(
'
show
'
)
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
()
{
$
(
'
head
'
).
append
(
'
<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>
'
)
test
(
'
should adjust the tip
\'
s top position when up against the top of the viewport
'
,
function
()
{
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
'
)
var
target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>
'
)
.
appendTo
(
container
)
.
bootstrapTooltip
({
placement
:
'
right
'
,
viewport
:
{
selector
:
'
body
'
,
padding
:
12
}})
.
bootstrapTooltip
(
'
show
'
)
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
$target
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
ok
(
Math
.
round
(
tooltip
.
offset
().
top
)
===
12
)
target
.
bootstrapTooltip
(
'
hide
'
)
$
(
'
head #test
'
).
remove
()
$container
.
remove
()
$styles
.
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>
'
)
test
(
'
should adjust the tip
\'
s top position when up against the bottom of the viewport
'
,
function
()
{
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
'
)
var
target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="position: fixed; bottom: 0px; left: 0px;"></a>
'
)
.
appendTo
(
container
)
.
bootstrapTooltip
({
placement
:
'
right
'
,
viewport
:
{
selector
:
'
body
'
,
padding
:
12
}})
.
bootstrapTooltip
(
'
show
'
)
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
$target
.
bootstrapTooltip
(
'
show
'
)
var
$tooltip
=
$container
.
find
(
'
.tooltip
'
)
strictEqual
(
Math
.
round
(
$tooltip
.
offset
().
top
),
Math
.
round
(
$
(
window
).
height
()
-
12
-
$tooltip
[
0
].
offsetHeight
))
ok
(
Math
.
round
(
tooltip
.
offset
().
top
)
===
Math
.
round
(
$
(
window
).
height
()
-
12
-
tooltip
[
0
].
offsetHeight
))
target
.
bootstrapTooltip
(
'
hide
'
)
$
(
'
head #test
'
).
remove
()
$target
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
$container
.
remove
()
$styles
.
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>
'
)
test
(
'
should adjust the tip
\'
s left position when up against the left of the viewport
'
,
function
()
{
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
'
)
var
target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>
'
)
.
appendTo
(
container
)
.
bootstrapTooltip
({
placement
:
'
bottom
'
,
viewport
:
{
selector
:
'
body
'
,
padding
:
12
}})
.
bootstrapTooltip
(
'
show
'
)
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
$target
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
ok
(
Math
.
round
(
tooltip
.
offset
().
left
)
===
12
)
target
.
bootstrapTooltip
(
'
hide
'
)
$
(
'
head #test
'
).
remove
()
$container
.
remove
()
$styles
.
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>
'
)
test
(
'
should adjust the tip
\'
s left position when up against the right of the viewport
'
,
function
()
{
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
target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; right: 0px;"></a>
'
)
.
appendTo
(
container
)
.
bootstrapTooltip
({
placement
:
'
bottom
'
,
viewport
:
{
selector
:
'
body
'
,
padding
:
12
}})
.
bootstrapTooltip
(
'
show
'
)
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
var
$container
=
$
(
'
<div/>
'
).
appendTo
(
'
body
'
)
var
$target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="top: 0px; right: 0px;"/>
'
)
.
appendTo
(
$container
)
.
bootstrapTooltip
({
placement
:
'
bottom
'
,
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
'
)
$
(
'
head #test
'
).
remove
()
$target
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
$container
.
remove
()
$styles
.
remove
()
})
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>
'
)
$
(
'
head
'
).
append
(
'
<style id="viewport-style"> .container-viewport { position: absolute; top: 50px; left: 60px; width: 300px; height: 300px; } </style>
'
)
var
styles
=
'
<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
'
)
var
target
=
$
(
'
<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 50px; left: 350px;"></a>
'
)
.
appendTo
(
container
)
.
bootstrapTooltip
({
placement
:
'
bottom
'
,
viewport
:
'
.container-viewport
'
})
.
bootstrapTooltip
(
'
show
'
)
var
tooltip
=
container
.
find
(
'
.tooltip
'
)
$target
.
bootstrapTooltip
(
'
hide
'
)
equal
(
$
(
'
.tooltip
'
).
length
,
0
,
'
tooltip removed from dom
'
)
ok
(
Math
.
round
(
tooltip
.
offset
().
left
)
===
Math
.
round
(
60
+
container
.
width
()
-
tooltip
[
0
].
offsetWidth
))
target
.
bootstrapTooltip
(
'
hide
'
)
$
(
'
head #test
'
).
remove
()
$
(
'
head #viewport-style
'
).
remove
()
$container
.
remove
()
$styles
.
remove
()
})
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
'
)
tooltip
var
passed
=
true
var
$tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"/>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
one
(
'
show.bs.tooltip
'
,
function
()
{
tooltip
.
remove
()
$
(
this
)
.
remove
()
})
.
bootstrapTooltip
({
placement
:
'
auto
'
})
var
passed
=
true
try
{
tooltip
.
bootstrapTooltip
(
'
show
'
)
}
catch
(
err
)
{
$tooltip
.
bootstrapTooltip
(
'
show
'
)
}
catch
(
err
)
{
passed
=
false
console
.
log
(
err
)
}
ok
(
passed
,
'
.tooltip(
\'
show
\'
) should not throw an error in this case
'
)
try
{
tooltip
.
remove
()
}
catch
(
err
)
{
// tooltip may have already been removed
}
ok
(
passed
,
'
.tooltip(
\'
show
\'
) should not throw an error if element no longer is in dom
'
)
})
})
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