]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
add unit tests for our carousel
authorJohann-S <johann.servoire@gmail.com>
Mon, 29 Oct 2018 13:27:19 +0000 (14:27 +0100)
committerJohann-S <johann.servoire@gmail.com>
Mon, 29 Oct 2018 13:49:29 +0000 (14:49 +0100)
js/src/carousel.js
js/tests/unit/carousel.js

index 989390aa0a467a75394f9c8b9c79db7af43bce4a..3c7e2b2d9164116102c126a59b2c81de9b73b05d 100644 (file)
@@ -289,15 +289,13 @@ class Carousel {
     }
 
     const move = (event) => {
-      if (!this._pointerEvent) {
-        event.preventDefault()
+      event.preventDefault()
 
-        // ensure swiping with one touch and not pinching
-        if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
-          this.touchDeltaX = 0
-        } else {
-          this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX
-        }
+      // ensure swiping with one touch and not pinching
+      if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
+        this.touchDeltaX = 0
+      } else {
+        this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX
       }
     }
 
@@ -307,7 +305,6 @@ class Carousel {
       }
 
       this._handleSwipe()
-
       if (this._config.pause === 'hover') {
         // If it's a touch-enabled device, mouseenter/leave are fired as
         // part of the mouse compatibility events on first tap - the carousel
index d7d9ad2508676cc34bd3e0c0aa916dbbf66439e2..d6fea2f34ee1ced731feaa320f9e76360bed6967 100644 (file)
@@ -1226,4 +1226,48 @@ $(function () {
       done()
     })
   })
+
+  QUnit.test('should not call _slide if the carousel is sliding', function (assert) {
+    assert.expect(1)
+
+    var carouselHTML = '<div class="carousel" data-interval="false"></div>'
+    var $carousel = $(carouselHTML)
+    $carousel.appendTo('#qunit-fixture')
+    $carousel.bootstrapCarousel()
+
+    var carousel = $carousel.data('bs.carousel')
+
+    var spy = sinon.spy(carousel, '_slide')
+
+    carousel._isSliding = true
+
+    carousel.next()
+
+    assert.strictEqual(spy.called, false)
+  })
+
+  QUnit.test('should call next when the page is visible', function (assert) {
+    assert.expect(1)
+
+    var carouselHTML = '<div class="carousel" data-interval="false"></div>'
+    var $carousel = $(carouselHTML)
+    $carousel.appendTo('#qunit-fixture')
+    $carousel.bootstrapCarousel()
+
+    var carousel = $carousel.data('bs.carousel')
+
+    var spy = sinon.spy(carousel, 'next')
+    var sandbox = sinon.createSandbox()
+
+    sandbox.replaceGetter(document, 'hidden', function () {
+      return false
+    })
+    sandbox.stub($carousel, 'is').returns(true)
+    sandbox.stub($carousel, 'css').returns('block')
+
+    carousel.nextWhenVisible()
+
+    assert.strictEqual(spy.called, true)
+    sandbox.restore()
+  })
 })