modal.js 6 KB
Newer Older
1
2
$(function () {

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

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

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

XhmikosR's avatar
XhmikosR committed
16
17
    test('should return element', function () {
      var div = $('<div id="modal-test"></div>')
Jacob Thornton's avatar
Jacob Thornton committed
18
19
20
      ok(div.modal() == div, 'document.body returned')
      $('#modal-test').remove()
    })
21

XhmikosR's avatar
XhmikosR committed
22
    test('should expose defaults var for settings', function () {
Jacob Thornton's avatar
Jacob Thornton committed
23
24
      ok($.fn.modal.Constructor.DEFAULTS, 'default object exposed')
    })
25

XhmikosR's avatar
XhmikosR committed
26
    test('should insert into dom when show method is called', function () {
Jacob Thornton's avatar
Jacob Thornton committed
27
28
      stop()
      $.support.transition = false
XhmikosR's avatar
XhmikosR committed
29
30
      $('<div id="modal-test"></div>')
        .on('shown.bs.modal', function () {
Jacob Thornton's avatar
Jacob Thornton committed
31
32
33
34
          ok($('#modal-test').length, 'modal inserted into dom')
          $(this).remove()
          start()
        })
XhmikosR's avatar
XhmikosR committed
35
        .modal('show')
Jacob Thornton's avatar
Jacob Thornton committed
36
    })
37

XhmikosR's avatar
XhmikosR committed
38
    test('should fire show event', function () {
Jacob Thornton's avatar
Jacob Thornton committed
39
40
      stop()
      $.support.transition = false
XhmikosR's avatar
XhmikosR committed
41
42
43
      $('<div id="modal-test"></div>')
        .on('show.bs.modal', function () {
          ok(true, 'show was called')
Jacob Thornton's avatar
Jacob Thornton committed
44
        })
XhmikosR's avatar
XhmikosR committed
45
        .on('shown.bs.modal', function () {
Jacob Thornton's avatar
Jacob Thornton committed
46
47
48
          $(this).remove()
          start()
        })
XhmikosR's avatar
XhmikosR committed
49
        .modal('show')
Jacob Thornton's avatar
Jacob Thornton committed
50
    })
51

XhmikosR's avatar
XhmikosR committed
52
    test('should not fire shown when default prevented', function () {
Jacob Thornton's avatar
Jacob Thornton committed
53
54
      stop()
      $.support.transition = false
XhmikosR's avatar
XhmikosR committed
55
56
      $('<div id="modal-test"></div>')
        .on('show.bs.modal', function (e) {
Jacob Thornton's avatar
Jacob Thornton committed
57
          e.preventDefault()
XhmikosR's avatar
XhmikosR committed
58
          ok(true, 'show was called')
Jacob Thornton's avatar
Jacob Thornton committed
59
60
          start()
        })
XhmikosR's avatar
XhmikosR committed
61
62
        .on('shown.bs.modal', function () {
          ok(false, 'shown was called')
Jacob Thornton's avatar
Jacob Thornton committed
63
        })
XhmikosR's avatar
XhmikosR committed
64
        .modal('show')
Jacob Thornton's avatar
Jacob Thornton committed
65
    })
66

XhmikosR's avatar
XhmikosR committed
67
    test('should hide modal when hide is called', function () {
Jacob Thornton's avatar
Jacob Thornton committed
68
69
      stop()
      $.support.transition = false
70

XhmikosR's avatar
XhmikosR committed
71
72
73
      $('<div id="modal-test"></div>')
        .on('shown.bs.modal', function () {
          ok($('#modal-test').is(':visible'), 'modal visible')
Jacob Thornton's avatar
Jacob Thornton committed
74
          ok($('#modal-test').length, 'modal inserted into dom')
XhmikosR's avatar
XhmikosR committed
75
          $(this).modal('hide')
Jacob Thornton's avatar
Jacob Thornton committed
76
        })
XhmikosR's avatar
XhmikosR committed
77
78
        .on('hidden.bs.modal', function () {
          ok(!$('#modal-test').is(':visible'), 'modal hidden')
Jacob Thornton's avatar
Jacob Thornton committed
79
80
81
          $('#modal-test').remove()
          start()
        })
XhmikosR's avatar
XhmikosR committed
82
        .modal('show')
Jacob Thornton's avatar
Jacob Thornton committed
83
    })
84

XhmikosR's avatar
XhmikosR committed
85
    test('should toggle when toggle is called', function () {
Jacob Thornton's avatar
Jacob Thornton committed
86
87
      stop()
      $.support.transition = false
XhmikosR's avatar
XhmikosR committed
88
      var div = $('<div id="modal-test"></div>')
Jacob Thornton's avatar
Jacob Thornton committed
89
      div
XhmikosR's avatar
XhmikosR committed
90
91
        .on('shown.bs.modal', function () {
          ok($('#modal-test').is(':visible'), 'modal visible')
Jacob Thornton's avatar
Jacob Thornton committed
92
          ok($('#modal-test').length, 'modal inserted into dom')
XhmikosR's avatar
XhmikosR committed
93
          div.modal('toggle')
Jacob Thornton's avatar
Jacob Thornton committed
94
        })
XhmikosR's avatar
XhmikosR committed
95
96
        .on('hidden.bs.modal', function () {
          ok(!$('#modal-test').is(':visible'), 'modal hidden')
Jacob Thornton's avatar
Jacob Thornton committed
97
98
99
          div.remove()
          start()
        })
XhmikosR's avatar
XhmikosR committed
100
        .modal('toggle')
Jacob Thornton's avatar
Jacob Thornton committed
101
    })
102

XhmikosR's avatar
XhmikosR committed
103
    test('should remove from dom when click [data-dismiss=modal]', function () {
Jacob Thornton's avatar
Jacob Thornton committed
104
105
      stop()
      $.support.transition = false
XhmikosR's avatar
XhmikosR committed
106
      var div = $('<div id="modal-test"><span class="close" data-dismiss="modal"></span></div>')
Jacob Thornton's avatar
Jacob Thornton committed
107
      div
XhmikosR's avatar
XhmikosR committed
108
109
        .on('shown.bs.modal', function () {
          ok($('#modal-test').is(':visible'), 'modal visible')
Jacob Thornton's avatar
Jacob Thornton committed
110
111
112
          ok($('#modal-test').length, 'modal inserted into dom')
          div.find('.close').click()
        })
XhmikosR's avatar
XhmikosR committed
113
114
        .on('hidden.bs.modal', function () {
          ok(!$('#modal-test').is(':visible'), 'modal hidden')
Jacob Thornton's avatar
Jacob Thornton committed
115
116
117
          div.remove()
          start()
        })
XhmikosR's avatar
XhmikosR committed
118
        .modal('toggle')
Jacob Thornton's avatar
Jacob Thornton committed
119
    })
fat's avatar
shiiiit    
fat committed
120

XhmikosR's avatar
XhmikosR committed
121
    test('should allow modal close with "backdrop:false"', function () {
Jacob Thornton's avatar
Jacob Thornton committed
122
123
      stop()
      $.support.transition = false
XhmikosR's avatar
XhmikosR committed
124
      var div = $('<div>', { id: 'modal-test', 'data-backdrop': false })
Jacob Thornton's avatar
Jacob Thornton committed
125
      div
XhmikosR's avatar
XhmikosR committed
126
127
128
        .on('shown.bs.modal', function () {
          ok($('#modal-test').is(':visible'), 'modal visible')
          div.modal('hide')
Jacob Thornton's avatar
Jacob Thornton committed
129
        })
XhmikosR's avatar
XhmikosR committed
130
131
        .on('hidden.bs.modal', function () {
          ok(!$('#modal-test').is(':visible'), 'modal hidden')
Jacob Thornton's avatar
Jacob Thornton committed
132
133
134
          div.remove()
          start()
        })
XhmikosR's avatar
XhmikosR committed
135
        .modal('show')
Jacob Thornton's avatar
Jacob Thornton committed
136
    })
fat's avatar
fat committed
137

XhmikosR's avatar
XhmikosR committed
138
    test('should close modal when clicking outside of modal-content', function () {
Jacob Thornton's avatar
Jacob Thornton committed
139
140
      stop()
      $.support.transition = false
XhmikosR's avatar
XhmikosR committed
141
      var div = $('<div id="modal-test"><div class="contents"></div></div>')
Jacob Thornton's avatar
Jacob Thornton committed
142
      div
XhmikosR's avatar
XhmikosR committed
143
        .bind('shown.bs.modal', function () {
Jacob Thornton's avatar
Jacob Thornton committed
144
145
          ok($('#modal-test').length, 'modal insterted into dom')
          $('.contents').click()
XhmikosR's avatar
XhmikosR committed
146
          ok($('#modal-test').is(':visible'), 'modal visible')
Jacob Thornton's avatar
Jacob Thornton committed
147
148
          $('#modal-test').click()
        })
XhmikosR's avatar
XhmikosR committed
149
150
        .bind('hidden.bs.modal', function () {
          ok(!$('#modal-test').is(':visible'), 'modal hidden')
Jacob Thornton's avatar
Jacob Thornton committed
151
152
153
          div.remove()
          start()
        })
XhmikosR's avatar
XhmikosR committed
154
        .modal('show')
Jacob Thornton's avatar
Jacob Thornton committed
155
156
    })

XhmikosR's avatar
XhmikosR committed
157
    test('should trigger hide event once when clicking outside of modal-content', function () {
Jacob Thornton's avatar
Jacob Thornton committed
158
159
      stop()
      $.support.transition = false
XhmikosR's avatar
XhmikosR committed
160
      var div = $('<div id="modal-test"><div class="contents"></div></div>')
Jacob Thornton's avatar
Jacob Thornton committed
161
162
      var triggered
      div
XhmikosR's avatar
XhmikosR committed
163
        .bind('shown.bs.modal', function () {
Jacob Thornton's avatar
Jacob Thornton committed
164
165
166
          triggered = 0
          $('#modal-test').click()
        })
XhmikosR's avatar
XhmikosR committed
167
168
        .one('hidden.bs.modal', function () {
          div.modal('show')
Jacob Thornton's avatar
Jacob Thornton committed
169
        })
XhmikosR's avatar
XhmikosR committed
170
        .bind('hide.bs.modal', function () {
Jacob Thornton's avatar
Jacob Thornton committed
171
172
173
174
          triggered += 1
          ok(triggered === 1, 'modal hide triggered once')
          start()
        })
XhmikosR's avatar
XhmikosR committed
175
        .modal('show')
Jacob Thornton's avatar
Jacob Thornton committed
176
    })
fat's avatar
fat committed
177

XhmikosR's avatar
XhmikosR committed
178
    test('should close reopened modal with [data-dismiss=modal] click', function () {
fat's avatar
fat committed
179
180
      stop()
      $.support.transition = false
XhmikosR's avatar
XhmikosR committed
181
      var div = $('<div id="modal-test"><div class="contents"><div id="close" data-dismiss="modal"></div></div></div>')
fat's avatar
fat committed
182
      div
XhmikosR's avatar
XhmikosR committed
183
        .bind('shown.bs.modal', function () {
fat's avatar
fat committed
184
          $('#close').click()
XhmikosR's avatar
XhmikosR committed
185
          ok(!$('#modal-test').is(':visible'), 'modal hidden')
fat's avatar
fat committed
186
        })
XhmikosR's avatar
XhmikosR committed
187
        .one('hidden.bs.modal', function () {
fat's avatar
fat committed
188
189
          div.one('hidden.bs.modal', function () {
            start()
XhmikosR's avatar
XhmikosR committed
190
          }).modal('show')
fat's avatar
fat committed
191
        })
XhmikosR's avatar
XhmikosR committed
192
        .modal('show')
fat's avatar
fat committed
193
194
195

      div.remove()
    })
196
})