$(function () { 'use strict' QUnit.module('modal plugin') QUnit.test('should be defined on jquery object', function (assert) { assert.expect(1) assert.ok($(document.body).modal, 'modal method is defined') }) QUnit.module('modal', { beforeEach: function () { // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode $.fn.bootstrapModal = $.fn.modal.noConflict() }, afterEach: function () { $.fn.modal = $.fn.bootstrapModal delete $.fn.bootstrapModal } }) QUnit.test('should provide no conflict', function (assert) { assert.expect(1) assert.strictEqual($.fn.modal, undefined, 'modal was set back to undefined (orig value)') }) QUnit.test('should throw explicit error on undefined method', function (assert) { assert.expect(1) var $el = $('
') $el.bootstrapModal() try { $el.bootstrapModal('noMethod') } catch (err) { assert.strictEqual(err.message, 'No method named "noMethod"') } }) QUnit.test('should return jquery collection containing the element', function (assert) { assert.expect(2) var $el = $('') var $modal = $el.bootstrapModal() assert.ok($modal instanceof $, 'returns jquery collection') assert.strictEqual($modal[0], $el[0], 'collection contains element') }) QUnit.test('should expose defaults var for settings', function (assert) { assert.expect(1) assert.ok($.fn.bootstrapModal.Constructor.Default, 'default object exposed') }) QUnit.test('should insert into dom when show method is called', function (assert) { assert.expect(1) var done = assert.async() $('') .on('shown.bs.modal', function () { assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') done() }) .bootstrapModal('show') }) QUnit.test('should fire show event', function (assert) { assert.expect(1) var done = assert.async() $('') .on('show.bs.modal', function () { assert.ok(true, 'show event fired') done() }) .bootstrapModal('show') }) QUnit.test('should not fire shown when show was prevented', function (assert) { assert.expect(1) var done = assert.async() $('') .on('show.bs.modal', function (e) { e.preventDefault() assert.ok(true, 'show event fired') done() }) .on('shown.bs.modal', function () { assert.ok(false, 'shown event fired') }) .bootstrapModal('show') }) QUnit.test('should hide modal when hide is called', function (assert) { assert.expect(3) var done = assert.async() $('') .on('shown.bs.modal', function () { assert.ok($('#modal-test').is(':visible'), 'modal visible') assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') $(this).bootstrapModal('hide') }) .on('hidden.bs.modal', function () { assert.ok(!$('#modal-test').is(':visible'), 'modal hidden') done() }) .bootstrapModal('show') }) QUnit.test('should toggle when toggle is called', function (assert) { assert.expect(3) var done = assert.async() $('') .on('shown.bs.modal', function () { assert.ok($('#modal-test').is(':visible'), 'modal visible') assert.notEqual($('#modal-test').length, 0, 'modal inserted into dom') $(this).bootstrapModal('toggle') }) .on('hidden.bs.modal', function () { assert.ok(!$('#modal-test').is(':visible'), 'modal hidden') done() }) .bootstrapModal('toggle') }) QUnit.test('should remove from dom when click [data-dismiss="modal"]', function (assert) { assert.expect(3) var done = assert.async() $('