diff options
| author | Johann-S <[email protected]> | 2018-03-03 23:04:11 +0200 |
|---|---|---|
| committer | XhmikosR <[email protected]> | 2018-10-20 15:32:09 +0300 |
| commit | caefd7046372e954d21550bbdadcabf98b2a86f0 (patch) | |
| tree | 9e1835a7d61a8302c4dcaaff5b5a023efcae96b1 /js/tests/unit | |
| parent | bf573896472c83e2b85b52f6cbf606765b73cb3e (diff) | |
| download | bootstrap-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.json | 4 | ||||
| -rw-r--r-- | js/tests/unit/carousel.js | 127 |
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 + }) + }) }) |
