Skip to content
GitLab
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
"docs/assets/js/src/application.js" did not exist on "b9527acc4539d112514dc4a539ac0f228966ba1e"
Commit
e341355d
authored
10 years ago
by
Heinrich Fenkart
Browse files
Options
Download
Email Patches
Plain Diff
Clean tooltip unit tests up
parent
b3a125e9
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