aboutsummaryrefslogtreecommitdiff
path: root/js/tests/unit
diff options
context:
space:
mode:
authorJohann-S <[email protected]>2018-03-03 23:04:11 +0200
committerXhmikosR <[email protected]>2018-10-20 15:32:09 +0300
commitcaefd7046372e954d21550bbdadcabf98b2a86f0 (patch)
tree9e1835a7d61a8302c4dcaaff5b5a023efcae96b1 /js/tests/unit
parentbf573896472c83e2b85b52f6cbf606765b73cb3e (diff)
downloadbootstrap-caefd7046372e954d21550bbdadcabf98b2a86f0.tar.xz
bootstrap-caefd7046372e954d21550bbdadcabf98b2a86f0.zip
Add touch support in our carousel with HammerJS.
Diffstat (limited to 'js/tests/unit')
-rw-r--r--js/tests/unit/.eslintrc.json4
-rw-r--r--js/tests/unit/carousel.js127
2 files changed, 130 insertions, 1 deletions
diff --git a/js/tests/unit/.eslintrc.json b/js/tests/unit/.eslintrc.json
index 0896f406d..a7fa64af0 100644
--- a/js/tests/unit/.eslintrc.json
+++ b/js/tests/unit/.eslintrc.json
@@ -9,7 +9,9 @@
"sinon": false,
"Util": false,
"Alert": false,
- "Button": false
+ "Button": false,
+ "Carousel": false,
+ "Simulator": false
},
"parserOptions": {
"ecmaVersion": 5,
diff --git a/js/tests/unit/carousel.js b/js/tests/unit/carousel.js
index 20b12f4b0..0bc52219e 100644
--- a/js/tests/unit/carousel.js
+++ b/js/tests/unit/carousel.js
@@ -1,6 +1,10 @@
$(function () {
'use strict'
+ window.Carousel = typeof bootstrap !== 'undefined' ? bootstrap.Carousel : Carousel
+
+ var touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0
+
QUnit.module('carousel plugin')
QUnit.test('should be defined on jQuery object', function (assert) {
@@ -25,6 +29,20 @@ $(function () {
assert.strictEqual(typeof $.fn.carousel, 'undefined', 'carousel was set back to undefined (orig value)')
})
+ QUnit.test('should return version', function (assert) {
+ assert.expect(1)
+
+ assert.strictEqual(typeof Carousel.VERSION, 'string')
+ })
+
+ QUnit.test('should return default parameters', function (assert) {
+ assert.expect(1)
+
+ var defaultConfig = Carousel.Default
+
+ assert.strictEqual(defaultConfig.touch, true)
+ })
+
QUnit.test('should throw explicit error on undefined method', function (assert) {
assert.expect(1)
var $el = $('<div/>')
@@ -989,4 +1007,113 @@ $(function () {
}, 80)
}, 80)
})
+
+ QUnit.test('should allow swiperight and call prev', function (assert) {
+ if (!touchSupported) {
+ assert.expect(0)
+
+ return
+ }
+
+ assert.expect(2)
+ var done = assert.async()
+ document.documentElement.ontouchstart = $.noop
+
+ var carouselHTML =
+ '<div class="carousel" data-interval="false">' +
+ ' <div class="carousel-inner">' +
+ ' <div id="item" class="carousel-item">' +
+ ' <img alt="">' +
+ ' </div>' +
+ ' <div class="carousel-item active">' +
+ ' <img alt="">' +
+ ' </div>' +
+ ' </div>' +
+ '</div>'
+
+ var $carousel = $(carouselHTML)
+ $carousel.appendTo('#qunit-fixture')
+ var $item = $('#item')
+ $carousel.bootstrapCarousel()
+
+ $carousel.one('slid.bs.carousel', function () {
+ assert.ok(true, 'slid event fired')
+ assert.ok($item.hasClass('active'))
+ delete document.documentElement.ontouchstart
+ done()
+ })
+
+ Simulator.gestures.swipe($carousel[0], {
+ deltaX: 300,
+ deltaY: 0
+ })
+ })
+
+ QUnit.test('should not use HammerJS when touch option is false', function (assert) {
+ assert.expect(1)
+
+ var $carousel = $('<div></div>').appendTo('#qunit-fixture')
+ $carousel.bootstrapCarousel({
+ touch: false
+ })
+
+ var carousel = $carousel.data('bs.carousel')
+
+ assert.strictEqual(carousel.hammer, null)
+ })
+
+ QUnit.test('should use HammerJS when touch option is true', function (assert) {
+ assert.expect(1)
+
+ document.documentElement.ontouchstart = $.noop
+
+ var $carousel = $('<div></div>').appendTo('#qunit-fixture')
+ $carousel.bootstrapCarousel()
+
+ var carousel = $carousel.data('bs.carousel')
+
+ assert.ok(carousel.hammer !== null)
+ })
+
+ QUnit.test('should allow swipeleft and call next', function (assert) {
+ if (!touchSupported) {
+ assert.expect(0)
+
+ return
+ }
+
+ assert.expect(2)
+ var done = assert.async()
+ document.documentElement.ontouchstart = $.noop
+
+ var carouselHTML =
+ '<div class="carousel" data-interval="false">' +
+ ' <div class="carousel-inner">' +
+ ' <div id="item" class="carousel-item active">' +
+ ' <img alt="">' +
+ ' </div>' +
+ ' <div class="carousel-item">' +
+ ' <img alt="">' +
+ ' </div>' +
+ ' </div>' +
+ '</div>'
+
+ var $carousel = $(carouselHTML)
+ $carousel.appendTo('#qunit-fixture')
+ var $item = $('#item')
+ $carousel.bootstrapCarousel()
+
+ $carousel.one('slid.bs.carousel', function () {
+ assert.ok(true, 'slid event fired')
+ assert.ok(!$item.hasClass('active'))
+ delete document.documentElement.ontouchstart
+ done()
+ })
+
+ Simulator.gestures.swipe($carousel[0], {
+ pos: [300, 10],
+ deltaX: -300,
+ deltaY: 0
+ })
+ })
})