alert.js 3.86 KB
Newer Older
1
$(function () {
2
  'use strict'
3

4
  QUnit.module('alert plugin')
XhmikosR's avatar
XhmikosR committed
5

6
  QUnit.test('should be defined on jquery object', function (assert) {
7
    assert.expect(1)
8
    assert.ok($(document.body).alert, 'alert method is defined')
XhmikosR's avatar
XhmikosR committed
9
10
  })

11
  QUnit.module('alert', {
12
    beforeEach: function () {
13
14
15
      // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
      $.fn.bootstrapAlert = $.fn.alert.noConflict()
    },
16
    afterEach: function () {
17
18
      $.fn.alert = $.fn.bootstrapAlert
      delete $.fn.bootstrapAlert
19
      $('#qunit-fixture').html('')
20
21
22
    }
  })

23
  QUnit.test('should provide no conflict', function (assert) {
24
    assert.expect(1)
XhmikosR's avatar
XhmikosR committed
25
    assert.strictEqual(typeof $.fn.alert, 'undefined', 'alert was set back to undefined (org value)')
26
27
  })

28
  QUnit.test('should return jquery collection containing the element', function (assert) {
29
    assert.expect(2)
Heinrich Fenkart's avatar
Heinrich Fenkart committed
30
31
    var $el = $('<div/>')
    var $alert = $el.bootstrapAlert()
32
33
    assert.ok($alert instanceof $, 'returns jquery collection')
    assert.strictEqual($alert[0], $el[0], 'collection contains element')
XhmikosR's avatar
XhmikosR committed
34
35
  })

36
  QUnit.test('should fade element out on clicking .close', function (assert) {
37
    assert.expect(1)
XhmikosR's avatar
XhmikosR committed
38
39
40
41
    var alertHTML = '<div class="alert alert-danger fade show">' +
        '<a class="close" href="#" data-dismiss="alert">×</a>' +
        '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' +
        '</div>'
fat's avatar
fat committed
42
43

    var $alert = $(alertHTML).bootstrapAlert().appendTo($('#qunit-fixture'))
XhmikosR's avatar
XhmikosR committed
44

45
    $alert.find('.close').trigger('click')
XhmikosR's avatar
XhmikosR committed
46

Starsam80's avatar
Starsam80 committed
47
    assert.strictEqual($alert.hasClass('show'), false, 'remove .show class on .close click')
XhmikosR's avatar
XhmikosR committed
48
49
  })

50
  QUnit.test('should remove element when clicking .close', function (assert) {
51
    assert.expect(2)
52
    var done = assert.async()
XhmikosR's avatar
XhmikosR committed
53
54
55
56
    var alertHTML = '<div class="alert alert-danger fade show">' +
        '<a class="close" href="#" data-dismiss="alert">×</a>' +
        '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' +
        '</div>'
Heinrich Fenkart's avatar
Heinrich Fenkart committed
57
    var $alert = $(alertHTML).appendTo('#qunit-fixture').bootstrapAlert()
XhmikosR's avatar
XhmikosR committed
58

59
    assert.notEqual($('#qunit-fixture').find('.alert').length, 0, 'element added to dom')
XhmikosR's avatar
XhmikosR committed
60

61
62
63
64
65
66
67
    $alert
      .one('closed.bs.alert', function () {
        assert.strictEqual($('#qunit-fixture').find('.alert').length, 0, 'element removed from dom')
        done()
      })
      .find('.close')
      .trigger('click')
XhmikosR's avatar
XhmikosR committed
68
69
  })

70
  QUnit.test('should not fire closed when close is prevented', function (assert) {
71
    assert.expect(1)
72
    var done = assert.async()
Johann-S's avatar
Johann-S committed
73
74
75
76
77
78
79
80
81
82
83
84
85
    var $alert = $('<div class="alert"/>')
    $alert.appendTo('#qunit-fixture')

    EventHandler.on($alert[0], 'close.bs.alert', function (e) {
      e.preventDefault()
      assert.ok(true, 'close event fired')
      done()
    })
    EventHandler.on($alert[0], 'closed.bs.alert', function () {
      assert.ok(false, 'closed event fired')
    })

    $alert.bootstrapAlert('close')
XhmikosR's avatar
XhmikosR committed
86
  })
Johann-S's avatar
Johann-S committed
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125

  QUnit.test('close should use internal _element if no element provided', function (assert) {
    assert.expect(1)

    var done = assert.async()
    var $el = $('<div/>')
    var $alert = $el.bootstrapAlert()
    var alertInstance = $alert.data('bs.alert')

    $alert.one('closed.bs.alert', function () {
      assert.ok('alert closed')
      done()
    })

    alertInstance.close()
  })

  QUnit.test('dispose should remove data and the element', function (assert) {
    assert.expect(2)

    var $el = $('<div/>')
    var $alert = $el.bootstrapAlert()

    assert.ok(typeof $alert.data('bs.alert') !== 'undefined')

    $alert.data('bs.alert').dispose()

    assert.ok(typeof $alert.data('bs.button') === 'undefined')
  })

  QUnit.test('should return alert version', function (assert) {
    assert.expect(1)

    if (typeof Alert !== 'undefined') {
      assert.ok(typeof Alert.VERSION === 'string')
    } else {
      assert.notOk()
    }
  })
126
})