aboutsummaryrefslogtreecommitdiff
path: root/js/tests/unit
diff options
context:
space:
mode:
Diffstat (limited to 'js/tests/unit')
-rw-r--r--js/tests/unit/button.js10
-rw-r--r--js/tests/unit/carousel.js42
-rw-r--r--js/tests/unit/collapse.js72
-rw-r--r--js/tests/unit/dropdown.js41
4 files changed, 138 insertions, 27 deletions
diff --git a/js/tests/unit/button.js b/js/tests/unit/button.js
index 73747cdd4..320996483 100644
--- a/js/tests/unit/button.js
+++ b/js/tests/unit/button.js
@@ -33,9 +33,9 @@ $(function () {
var $btn = $('<button class="btn" data-loading-text="fat">mdo</button>')
equal($btn.html(), 'mdo', 'btn text equals mdo')
$btn.bootstrapButton('loading')
- equal($btn.html(), 'fat', 'btn text equals fat')
stop()
setTimeout(function () {
+ equal($btn.html(), 'fat', 'btn text equals fat')
ok($btn[0].hasAttribute('disabled'), 'btn is disabled')
ok($btn.hasClass('disabled'), 'btn has disabled class')
start()
@@ -46,16 +46,16 @@ $(function () {
var $btn = $('<button class="btn" data-loading-text="fat">mdo</button>')
equal($btn.html(), 'mdo', 'btn text equals mdo')
$btn.bootstrapButton('loading')
- equal($btn.html(), 'fat', 'btn text equals fat')
stop()
setTimeout(function () {
+ equal($btn.html(), 'fat', 'btn text equals fat')
ok($btn[0].hasAttribute('disabled'), 'btn is disabled')
ok($btn.hasClass('disabled'), 'btn has disabled class')
start()
stop()
$btn.bootstrapButton('reset')
- equal($btn.html(), 'mdo', 'btn text equals mdo')
setTimeout(function () {
+ equal($btn.html(), 'mdo', 'btn text equals mdo')
ok(!$btn[0].hasAttribute('disabled'), 'btn is not disabled')
ok(!$btn.hasClass('disabled'), 'btn does not have disabled class')
start()
@@ -67,16 +67,16 @@ $(function () {
var $btn = $('<button class="btn" data-loading-text="fat"/>')
equal($btn.html(), '', 'btn text equals ""')
$btn.bootstrapButton('loading')
- equal($btn.html(), 'fat', 'btn text equals fat')
stop()
setTimeout(function () {
+ equal($btn.html(), 'fat', 'btn text equals fat')
ok($btn[0].hasAttribute('disabled'), 'btn is disabled')
ok($btn.hasClass('disabled'), 'btn has disabled class')
start()
stop()
$btn.bootstrapButton('reset')
- equal($btn.html(), '', 'btn text equals ""')
setTimeout(function () {
+ equal($btn.html(), '', 'btn text equals ""')
ok(!$btn[0].hasAttribute('disabled'), 'btn is not disabled')
ok(!$btn.hasClass('disabled'), 'btn does not have disabled class')
start()
diff --git a/js/tests/unit/carousel.js b/js/tests/unit/carousel.js
index 6f0b9642f..5998abe6a 100644
--- a/js/tests/unit/carousel.js
+++ b/js/tests/unit/carousel.js
@@ -478,6 +478,48 @@ $(function () {
strictEqual($template.find('.item')[0], $template.find('.active')[0], 'first item still active after left arrow press')
})
+ test('should ignore keyboard events within <input>s and <textarea>s', function () {
+ var templateHTML = '<div id="myCarousel" class="carousel" data-interval="false">'
+ + '<div class="carousel-inner">'
+ + '<div id="first" class="item active">'
+ + '<img alt="">'
+ + '<input type="text" id="in-put">'
+ + '<textarea id="text-area"></textarea>'
+ + '</div>'
+ + '<div id="second" class="item">'
+ + '<img alt="">'
+ + '</div>'
+ + '<div id="third" class="item">'
+ + '<img alt="">'
+ + '</div>'
+ + '</div>'
+ + '</div>'
+ var $template = $(templateHTML)
+ var $input = $template.find('#in-put')
+ var $textarea = $template.find('#text-area')
+
+ strictEqual($input.length, 1, 'found <input>')
+ strictEqual($textarea.length, 1, 'found <textarea>')
+
+ $template.bootstrapCarousel()
+
+ strictEqual($template.find('.item')[0], $template.find('.active')[0], 'first item active')
+
+
+ $input.trigger($.Event('keydown', { which: 39 }))
+ strictEqual($template.find('.item')[0], $template.find('.active')[0], 'first item still active after right arrow press in <input>')
+
+ $input.trigger($.Event('keydown', { which: 37 }))
+ strictEqual($template.find('.item')[0], $template.find('.active')[0], 'first item still active after left arrow press in <input>')
+
+
+ $textarea.trigger($.Event('keydown', { which: 39 }))
+ strictEqual($template.find('.item')[0], $template.find('.active')[0], 'first item still active after right arrow press in <textarea>')
+
+ $textarea.trigger($.Event('keydown', { which: 37 }))
+ strictEqual($template.find('.item')[0], $template.find('.active')[0], 'first item still active after left arrow press in <textarea>')
+ })
+
test('should only add mouseenter and mouseleave listeners when not on mobile', function () {
var isMobile = 'ontouchstart' in document.documentElement
var templateHTML = '<div id="myCarousel" class="carousel" data-interval="false" data-pause="hover">'
diff --git a/js/tests/unit/collapse.js b/js/tests/unit/collapse.js
index c1d78575c..30d00e413 100644
--- a/js/tests/unit/collapse.js
+++ b/js/tests/unit/collapse.js
@@ -79,7 +79,7 @@ $(function () {
$('<div id="test1"/>')
.appendTo('#qunit-fixture')
- .on('show.bs.collapse', function () {
+ .on('shown.bs.collapse', function () {
ok(!$target.hasClass('collapsed'))
start()
})
@@ -94,7 +94,7 @@ $(function () {
$('<div id="test1" class="in"/>')
.appendTo('#qunit-fixture')
- .on('hide.bs.collapse', function () {
+ .on('hidden.bs.collapse', function () {
ok($target.hasClass('collapsed'))
start()
})
@@ -137,12 +137,12 @@ $(function () {
test('should remove "collapsed" class from active accordion target', function () {
stop()
- var accordionHTML = '<div id="accordion">'
- + '<div class="accordion-group"/>'
- + '<div class="accordion-group"/>'
- + '<div class="accordion-group"/>'
+ var accordionHTML = '<div class="panel-group" id="accordion">'
+ + '<div class="panel"/>'
+ + '<div class="panel"/>'
+ + '<div class="panel"/>'
+ '</div>'
- var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.accordion-group')
+ var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.panel')
var $target1 = $('<a data-toggle="collapse" href="#body1" data-parent="#accordion"/>').appendTo($groups.eq(0))
@@ -156,7 +156,7 @@ $(function () {
$('<div id="body3"/>')
.appendTo($groups.eq(2))
- .on('show.bs.collapse', function () {
+ .on('shown.bs.collapse', function () {
ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"')
ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"')
ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"')
@@ -170,12 +170,12 @@ $(function () {
test('should allow dots in data-parent', function () {
stop()
- var accordionHTML = '<div class="accordion">'
- + '<div class="accordion-group"/>'
- + '<div class="accordion-group"/>'
- + '<div class="accordion-group"/>'
+ var accordionHTML = '<div class="panel-group accordion">'
+ + '<div class="panel"/>'
+ + '<div class="panel"/>'
+ + '<div class="panel"/>'
+ '</div>'
- var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.accordion-group')
+ var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.panel')
var $target1 = $('<a data-toggle="collapse" href="#body1" data-parent=".accordion"/>').appendTo($groups.eq(0))
@@ -189,7 +189,7 @@ $(function () {
$('<div id="body3"/>')
.appendTo($groups.eq(2))
- .on('show.bs.collapse', function () {
+ .on('shown.bs.collapse', function () {
ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"')
ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"')
ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"')
@@ -207,7 +207,7 @@ $(function () {
$('<div id="test1"/>')
.appendTo('#qunit-fixture')
- .on('show.bs.collapse', function () {
+ .on('shown.bs.collapse', function () {
equal($target.attr('aria-expanded'), 'true', 'aria-expanded on target is "true"')
start()
})
@@ -222,7 +222,7 @@ $(function () {
$('<div id="test1" class="in"/>')
.appendTo('#qunit-fixture')
- .on('hide.bs.collapse', function () {
+ .on('hidden.bs.collapse', function () {
equal($target.attr('aria-expanded'), 'false', 'aria-expanded on target is "false"')
start()
})
@@ -233,12 +233,12 @@ $(function () {
test('should change aria-expanded from active accordion target to "false" and set the newly active one to "true"', function () {
stop()
- var accordionHTML = '<div id="accordion">'
- + '<div class="accordion-group"/>'
- + '<div class="accordion-group"/>'
- + '<div class="accordion-group"/>'
+ var accordionHTML = '<div class="panel-group" id="accordion">'
+ + '<div class="panel"/>'
+ + '<div class="panel"/>'
+ + '<div class="panel"/>'
+ '</div>'
- var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.accordion-group')
+ var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.panel')
var $target1 = $('<a data-toggle="collapse" href="#body1" data-parent="#accordion"/>').appendTo($groups.eq(0))
@@ -252,7 +252,7 @@ $(function () {
$('<div id="body3" aria-expanded="false"/>')
.appendTo($groups.eq(2))
- .on('show.bs.collapse', function () {
+ .on('shown.bs.collapse', function () {
equal($target1.attr('aria-expanded'), 'false', 'inactive target 1 has aria-expanded="false"')
equal($target2.attr('aria-expanded'), 'false', 'inactive target 2 has aria-expanded="false"')
equal($target3.attr('aria-expanded'), 'true', 'active target 3 has aria-expanded="false"')
@@ -298,4 +298,32 @@ $(function () {
}, 1)
})
+ test('should add "collapsed" class to target when collapse is hidden via manual invocation', function () {
+ stop()
+
+ var $target = $('<a data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
+
+ $('<div id="test1" class="in"/>')
+ .appendTo('#qunit-fixture')
+ .on('hidden.bs.collapse', function () {
+ ok($target.hasClass('collapsed'))
+ start()
+ })
+ .bootstrapCollapse('hide')
+ })
+
+ test('should remove "collapsed" class from target when collapse is shown via manual invocation', function () {
+ stop()
+
+ var $target = $('<a data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
+
+ $('<div id="test1"/>')
+ .appendTo('#qunit-fixture')
+ .on('shown.bs.collapse', function () {
+ ok(!$target.hasClass('collapsed'))
+ start()
+ })
+ .bootstrapCollapse('show')
+ })
+
})
diff --git a/js/tests/unit/dropdown.js b/js/tests/unit/dropdown.js
index 335795fde..3cdf637ee 100644
--- a/js/tests/unit/dropdown.js
+++ b/js/tests/unit/dropdown.js
@@ -224,4 +224,45 @@ $(function () {
$(document.body).click()
})
+ test('should ignore keyboard events within <input>s and <textarea>s', function () {
+ stop()
+
+ var dropdownHTML = '<ul class="tabs">'
+ + '<li class="dropdown">'
+ + '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
+ + '<ul class="dropdown-menu" role="menu">'
+ + '<li><a href="#">Secondary link</a></li>'
+ + '<li><a href="#">Something else here</a></li>'
+ + '<li class="divider"/>'
+ + '<li><a href="#">Another link</a></li>'
+ + '<li><input type="text" id="input"></li>'
+ + '<li><textarea id="textarea"/></li>'
+ + '</ul>'
+ + '</li>'
+ + '</ul>'
+ var $dropdown = $(dropdownHTML)
+ .appendTo('#qunit-fixture')
+ .find('[data-toggle="dropdown"]')
+ .bootstrapDropdown()
+
+ var $input = $('#input')
+ var $textarea = $('#textarea')
+
+ $dropdown
+ .parent('.dropdown')
+ .on('shown.bs.dropdown', function () {
+ ok(true, 'shown was fired')
+
+ $input.focus().trigger($.Event('keydown', { which: 38 }))
+ ok($(document.activeElement).is($input), 'input still focused')
+
+ $textarea.focus().trigger($.Event('keydown', { which: 38 }))
+ ok($(document.activeElement).is($textarea), 'textarea still focused')
+
+ start()
+ })
+
+ $dropdown.click()
+ })
+
})