$(function () { 'use strict'; QUnit.module('modal plugin') QUnit.test('should be defined on jquery object', function (assert) { assert.ok($(document.body).modal, 'modal method is defined') }) QUnit.module('modal', { setup: 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() }, teardown: function () { $.fn.modal = $.fn.bootstrapModal delete $.fn.bootstrapModal } }) QUnit.test('should provide no conflict', function (assert) { assert.strictEqual($.fn.modal, undefined, 'modal was set back to undefined (orig value)') }) QUnit.test('should return jquery collection containing the element', function (assert) { 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.ok($.fn.bootstrapModal.Constructor.DEFAULTS, 'default object exposed') }) QUnit.test('should insert into dom when show method is called', function (assert) { 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 set aria-hidden to false when show method is called', function (assert) { var done = assert.async() $('') .on('shown.bs.modal', function () { assert.strictEqual($('#modal-test').attr('aria-hidden'), 'false', 'aria-hidden is set to string "false" when modal shown') done() }) .bootstrapModal('show') }) QUnit.test('should fire show event', function (assert) { 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) { 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) { 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 set aria-hidden to true when hide is called', function (assert) { var done = assert.async() $('') .on('shown.bs.modal', function () { assert.strictEqual($('#modal-test').length, 1, 'modal has been inserted into the dom') $(this).bootstrapModal('hide') }) .on('hidden.bs.modal', function () { assert.strictEqual($('#modal-test').attr('aria-hidden'), 'true', 'aria-hidden is set to string "true" when modal shown') done() }) .bootstrapModal('show') }) QUnit.test('should toggle when toggle is called', function (assert) { 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) { var done = assert.async() $('