alert.js 2.69 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
19
20
21
      $.fn.alert = $.fn.bootstrapAlert
      delete $.fn.bootstrapAlert
    }
  })

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

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

35
  QUnit.test('should fade element out on clicking .close', function (assert) {
36
    assert.expect(1)
Starsam80's avatar
Starsam80 committed
37
    var alertHTML = '<div class="alert alert-danger fade show">'
Heinrich Fenkart's avatar
Heinrich Fenkart committed
38
39
40
        + '<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
41
42

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

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

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

49
  QUnit.test('should remove element when clicking .close', function (assert) {
50
    assert.expect(2)
Starsam80's avatar
Starsam80 committed
51
    var alertHTML = '<div class="alert alert-danger fade show">'
Heinrich Fenkart's avatar
Heinrich Fenkart committed
52
53
54
        + '<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
55
    var $alert = $(alertHTML).appendTo('#qunit-fixture').bootstrapAlert()
XhmikosR's avatar
XhmikosR committed
56

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

59
    $alert.find('.close').trigger('click')
XhmikosR's avatar
XhmikosR committed
60

61
    assert.strictEqual($('#qunit-fixture').find('.alert').length, 0, 'element removed from dom')
XhmikosR's avatar
XhmikosR committed
62
63
  })

64
  QUnit.test('should not fire closed when close is prevented', function (assert) {
65
    assert.expect(1)
66
    var done = assert.async()
XhmikosR's avatar
XhmikosR committed
67
68
    $('<div class="alert"/>')
      .on('close.bs.alert', function (e) {
69
        e.preventDefault()
70
        assert.ok(true, 'close event fired')
71
        done()
72
      })
XhmikosR's avatar
XhmikosR committed
73
      .on('closed.bs.alert', function () {
74
        assert.ok(false, 'closed event fired')
75
      })
76
      .bootstrapAlert('close')
XhmikosR's avatar
XhmikosR committed
77
  })
78

79
})