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

3
    module("bootstrap-tooltip")
Jacob Thornton's avatar
Jacob Thornton committed
4
5
6

      test("should be defined on jquery object", function () {
        var div = $("<div></div>")
7
        ok(div.tooltip, 'popover method is defined')
Jacob Thornton's avatar
Jacob Thornton committed
8
9
10
11
      })

      test("should return element", function () {
        var div = $("<div></div>")
12
        ok(div.tooltip() == div, 'document.body returned')
Jacob Thornton's avatar
Jacob Thornton committed
13
14
15
      })

      test("should expose default settings", function () {
16
        ok(!!$.fn.tooltip.defaults, 'defaults is defined')
Jacob Thornton's avatar
Jacob Thornton committed
17
18
19
      })

      test("should remove title attribute", function () {
20
21
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').tooltip()
        ok(!tooltip.attr('title'), 'title tag was removed')
Jacob Thornton's avatar
Jacob Thornton committed
22
23
24
      })

      test("should add data attribute for referencing original title", function () {
25
26
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').tooltip()
        equals(tooltip.attr('data-original-title'), 'Another tooltip', 'original title preserved in data attribute')
Jacob Thornton's avatar
Jacob Thornton committed
27
28
29
30
      })

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

36
        ok($(".tooltip").is('.fade.bottom.in'), 'has correct classes applied')
37
        tooltip.tooltip('hide')
Jacob Thornton's avatar
Jacob Thornton committed
38
39
      })

40
      test("should always allow html entities", function () {
Jacob Thornton's avatar
Jacob Thornton committed
41
        $.support.transition = false
42
        var tooltip = $('<a href="#" rel="tooltip" title="<b>@fat</b>"></a>')
43
          .appendTo('#qunit-fixture')
44
          .tooltip('show')
Jacob Thornton's avatar
Jacob Thornton committed
45

46
47
48
        ok($('.tooltip b').length, 'b tag was inserted')
        tooltip.tooltip('hide')
        ok(!$(".tooltip").length, 'tooltip removed')
Jacob Thornton's avatar
Jacob Thornton committed
49
50
      })

51
      test("should respect custom classes", function () {
52
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
53
          .appendTo('#qunit-fixture')
54
55
          .tooltip({ template: '<div class="tooltip some-class"><div class="tooltip-arrow"/><div class="tooltip-inner"/></div>'})
          .tooltip('show')
56

57
58
59
        ok($('.tooltip').hasClass('some-class'), 'custom class is present')
        tooltip.tooltip('hide')
        ok(!$(".tooltip").length, 'tooltip removed')
60
61
      })

62
63
64
65
66
67
68
69
70
71
      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')
          .tooltip({ delay: 200 })

        stop()

        tooltip.trigger('mouseenter')

        setTimeout(function () {
72
          ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
73
74
          tooltip.trigger('mouseout')
          setTimeout(function () {
75
            ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
76
77
78
79
80
            start()
          }, 200)
        }, 100)
      })

81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
      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')
          .tooltip({ delay: { show: 200, hide: 0} })

        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()
          }, 200)
        }, 100)
      })

100
101
102
103
104
105
106
      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')
          .tooltip({ delay: 100 })
        stop()
        tooltip.trigger('mouseenter')
        setTimeout(function () {
107
          ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
108
109
          tooltip.trigger('mouseout')
          setTimeout(function () {
110
            ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
111
112
113
114
115
116
117
118
119
120
121
122
            start()
          }, 100)
        }, 50)
      })

      test("should show tooltip if leave event hasn't occured before delay expires", function () {
        var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
          .appendTo('#qunit-fixture')
          .tooltip({ delay: 200 })
        stop()
        tooltip.trigger('mouseenter')
        setTimeout(function () {
123
          ok(!$(".tooltip").is('.fade.in'), 'tooltip is not faded in')
124
          setTimeout(function () {
125
            ok(!$(".tooltip").is('.fade.in'), 'tooltip has faded in')
126
127
128
129
130
            start()
          }, 200)
        }, 100)
      })

131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
      test("should detect if title string is html or text: foo", function () {
        ok(!$.fn.tooltip.Constructor.prototype.isHTML('foo'), 'correctly detected html')
      })

      test("should detect if title string is html or text: &amp;lt;foo&amp;gt;", function () {
        ok(!$.fn.tooltip.Constructor.prototype.isHTML('&lt;foo&gt;'), 'correctly detected html')
      })

      test("should detect if title string is html or text: &lt;div>foo&lt;/div>", function () {
        ok($.fn.tooltip.Constructor.prototype.isHTML('<div>foo</div>'), 'correctly detected html')
      })

      test("should detect if title string is html or text: asdfa&lt;div>foo&lt;/div>asdfasdf", function () {
        ok($.fn.tooltip.Constructor.prototype.isHTML('asdfa<div>foo</div>asdfasdf'), 'correctly detected html')
      })

      test("should detect if title string is html or text: document.createElement('div')", function () {
        ok($.fn.tooltip.Constructor.prototype.isHTML(document.createElement('div')), 'correctly detected html')
      })

      test("should detect if title string is html or text: $('&lt;div />)", function () {
        ok($.fn.tooltip.Constructor.prototype.isHTML($('<div></div>')), 'correctly detected html')
      })

155
})