popover.js 5.3 KB
Newer Older
1
2
$(function () {

XhmikosR's avatar
XhmikosR committed
3
    module('popover')
4

XhmikosR's avatar
XhmikosR committed
5
      test('should provide no conflict', function () {
6
7
8
9
10
        var popover = $.fn.popover.noConflict()
        ok(!$.fn.popover, 'popover was set back to undefined (org value)')
        $.fn.popover = popover
      })

XhmikosR's avatar
XhmikosR committed
11
      test('should be defined on jquery object', function () {
12
13
14
15
        var div = $('<div></div>')
        ok(div.popover, 'popover method is defined')
      })

XhmikosR's avatar
XhmikosR committed
16
      test('should return element', function () {
17
18
19
20
        var div = $('<div></div>')
        ok(div.popover() == div, 'document.body returned')
      })

XhmikosR's avatar
XhmikosR committed
21
      test('should render popover element', function () {
22
        $.support.transition = false
Jacob Thornton's avatar
Jacob Thornton committed
23
        var popover = $('<a href="#" title="mdo" data-content="http://twitter.com/mdo">@mdo</a>')
24
          .appendTo('#qunit-fixture')
Jacob Thornton's avatar
Jacob Thornton committed
25
          .popover('show')
26
27

        ok($('.popover').length, 'popover was inserted')
Jacob Thornton's avatar
Jacob Thornton committed
28
        popover.popover('hide')
XhmikosR's avatar
XhmikosR committed
29
        ok(!$('.popover').length, 'popover removed')
30
31
      })

XhmikosR's avatar
XhmikosR committed
32
      test('should store popover instance in popover data object', function () {
33
        $.support.transition = false
Jacob Thornton's avatar
Jacob Thornton committed
34
        var popover = $('<a href="#" title="mdo" data-content="http://twitter.com/mdo">@mdo</a>')
35
36
          .popover()

37
        ok(!!popover.data('bs.popover'), 'popover instance exists')
38
39
      })

XhmikosR's avatar
XhmikosR committed
40
      test('should get title and content from options', function () {
41
42
        $.support.transition = false
        var popover = $('<a href="#">@fat</a>')
43
          .appendTo('#qunit-fixture')
44
          .popover({
Jacob Thornton's avatar
Jacob Thornton committed
45
46
            title: function () {
              return '@fat'
Zlatan Vasović's avatar
Zlatan Vasović committed
47
48
            },
            content: function () {
Jacob Thornton's avatar
Jacob Thornton committed
49
50
              return 'loves writing tests (╯°□°)╯︵ ┻━┻'
            }
51
          })
Jacob Thornton's avatar
Jacob Thornton committed
52
53

        popover.popover('show')
54
55

        ok($('.popover').length, 'popover was inserted')
56
57
        equal($('.popover .popover-title').text(), '@fat', 'title correctly inserted')
        equal($('.popover .popover-content').text(), 'loves writing tests (╯°□°)╯︵ ┻━┻', 'content correctly inserted')
58

Jacob Thornton's avatar
Jacob Thornton committed
59
        popover.popover('hide')
60
        ok(!$('.popover').length, 'popover was removed')
61
        $('#qunit-fixture').empty()
62
63
      })

XhmikosR's avatar
XhmikosR committed
64
      test('should get title and content from attributes', function () {
65
        $.support.transition = false
Jacob Thornton's avatar
Jacob Thornton committed
66
        var popover = $('<a href="#" title="@mdo" data-content="loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻" >@mdo</a>')
67
          .appendTo('#qunit-fixture')
68
          .popover()
Jacob Thornton's avatar
Jacob Thornton committed
69
          .popover('show')
fat's avatar
fat committed
70
71

        ok($('.popover').length, 'popover was inserted')
72
        equal($('.popover .popover-title').text(), '@mdo', 'title correctly inserted')
XhmikosR's avatar
XhmikosR committed
73
        equal($('.popover .popover-content').text(), 'loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻', 'content correctly inserted')
fat's avatar
fat committed
74
75
76
77
78
79
80

        popover.popover('hide')
        ok(!$('.popover').length, 'popover was removed')
        $('#qunit-fixture').empty()
      })


XhmikosR's avatar
XhmikosR committed
81
      test('should get title and content from attributes #2', function () {
fat's avatar
fat committed
82
83
84
85
86
87
88
89
        $.support.transition = false
        var popover = $('<a href="#" title="@mdo" data-content="loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻" >@mdo</a>')
          .appendTo('#qunit-fixture')
          .popover({
              title: 'ignored title option',
              content: 'ignored content option'
          })
          .popover('show')
90
91

        ok($('.popover').length, 'popover was inserted')
92
        equal($('.popover .popover-title').text(), '@mdo', 'title correctly inserted')
XhmikosR's avatar
XhmikosR committed
93
        equal($('.popover .popover-content').text(), 'loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻', 'content correctly inserted')
94

Jacob Thornton's avatar
Jacob Thornton committed
95
        popover.popover('hide')
96
        ok(!$('.popover').length, 'popover was removed')
97
        $('#qunit-fixture').empty()
98
      })
99

XhmikosR's avatar
XhmikosR committed
100
      test('should respect custom classes', function () {
101
102
103
104
        $.support.transition = false
        var popover = $('<a href="#">@fat</a>')
          .appendTo('#qunit-fixture')
          .popover({
Zlatan Vasović's avatar
Zlatan Vasović committed
105
106
107
            title: 'Test',
            content: 'Test',
            template: '<div class="popover foobar"><div class="arrow"></div><div class="inner"><h3 class="title"></h3><div class="content"><p></p></div></div></div>'
108
          })
109

110
        popover.popover('show')
Jacob Thornton's avatar
Jacob Thornton committed
111

112
113
        ok($('.popover').length, 'popover was inserted')
        ok($('.popover').hasClass('foobar'), 'custom class is present')
114

115
116
117
118
        popover.popover('hide')
        ok(!$('.popover').length, 'popover was removed')
        $('#qunit-fixture').empty()
      })
119

XhmikosR's avatar
XhmikosR committed
120
      test('should destroy popover', function () {
121
        var popover = $('<div/>').popover({trigger: 'hover'}).on('click.foo', function () {})
122
        ok(popover.data('bs.popover'), 'popover has data')
123
        ok($._data(popover[0], 'events').mouseover && $._data(popover[0], 'events').mouseout, 'popover has hover event')
Jacob Thornton's avatar
Jacob Thornton committed
124
        ok($._data(popover[0], 'events').click[0].namespace == 'foo', 'popover has extra click.foo event')
125
        popover.popover('show')
126
        popover.popover('destroy')
127
        ok(!popover.hasClass('in'), 'popover is hidden')
128
        ok(!popover.data('popover'), 'popover does not have data')
129
130
        ok($._data(popover[0],'events').click[0].namespace == 'foo', 'popover still has click.foo')
        ok(!$._data(popover[0], 'events').mouseover && !$._data(popover[0], 'events').mouseout, 'popover does not have any events')
131
      })
132

133
})