diff --git a/bootstrap-3.0.0/js/tests/unit/dropdown.js b/bootstrap-3.0.0/js/tests/unit/dropdown.js new file mode 100644 index 0000000000000000000000000000000000000000..02256965d59ffd536f77f0693ad850fbb569b9d4 --- /dev/null +++ b/bootstrap-3.0.0/js/tests/unit/dropdown.js @@ -0,0 +1,219 @@ +$(function () { + + module("dropdowns") + + test("should provide no conflict", function () { + var dropdown = $.fn.dropdown.noConflict() + ok(!$.fn.dropdown, 'dropdown was set back to undefined (org value)') + $.fn.dropdown = dropdown + }) + + test("should be defined on jquery object", function () { + ok($(document.body).dropdown, 'dropdown method is defined') + }) + + test("should return element", function () { + var el = $("
") + ok(el.dropdown()[0] === el[0], 'same element returned') + }) + + test("should not open dropdown if target is disabled", function () { + var dropdownHTML = '' + , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click() + + ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') + }) + + test("should not open dropdown if target is disabled", function () { + var dropdownHTML = '' + , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click() + + ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') + }) + + test("should add class open to menu if clicked", function () { + var dropdownHTML = '' + , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click() + + ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') + }) + + test("should test if element has a # before assuming it's a selector", function () { + var dropdownHTML = '' + , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click() + + ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') + }) + + + test("should remove open class if body clicked", function () { + var dropdownHTML = '' + , dropdown = $(dropdownHTML) + .appendTo('#qunit-fixture') + .find('[data-toggle="dropdown"]') + .dropdown() + .click() + + ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') + $('body').click() + ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class removed') + dropdown.remove() + }) + + test("should remove open class if body clicked, with multiple drop downs", function () { + var dropdownHTML = + '' + + '
' + + ' ' + + ' ' + + ' ' + + '
' + , dropdowns = $(dropdownHTML).appendTo('#qunit-fixture').find('[data-toggle="dropdown"]') + , first = dropdowns.first() + , last = dropdowns.last() + + ok(dropdowns.length == 2, "Should be two dropdowns") + + first.click() + ok(first.parents('.open').length == 1, 'open class added on click') + ok($('#qunit-fixture .open').length == 1, 'only one object is open') + $('body').click() + ok($("#qunit-fixture .open").length === 0, 'open class removed') + + last.click() + ok(last.parent('.open').length == 1, 'open class added on click') + ok($('#qunit-fixture .open').length == 1, 'only one object is open') + $('body').click() + ok($("#qunit-fixture .open").length === 0, 'open class removed') + + $("#qunit-fixture").html("") + }) + + test("should fire show and hide event", function () { + var dropdownHTML = '' + , dropdown = $(dropdownHTML) + .appendTo('#qunit-fixture') + .find('[data-toggle="dropdown"]') + .dropdown() + + stop() + + dropdown + .parent('.dropdown') + .bind('show.bs.dropdown', function () { + ok(true, 'show was called') + }) + .bind('hide.bs.dropdown', function () { + ok(true, 'hide was called') + start() + }) + + dropdown.click() + $(document.body).click() + }) + + + test("should fire shown and hiden event", function () { + var dropdownHTML = '' + , dropdown = $(dropdownHTML) + .appendTo('#qunit-fixture') + .find('[data-toggle="dropdown"]') + .dropdown() + + stop() + + dropdown + .parent('.dropdown') + .bind('shown.bs.dropdown', function () { + ok(true, 'show was called') + }) + .bind('hidden.bs.dropdown', function () { + ok(true, 'hide was called') + start() + }) + + dropdown.click() + $(document.body).click() + }) + +})