]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
tests: revisit all tests using Promise.reject instead of throwing an error (#35765)
authorGeoSot <geo.sotis@gmail.com>
Sat, 19 Feb 2022 14:08:16 +0000 (16:08 +0200)
committerGitHub <noreply@github.com>
Sat, 19 Feb 2022 14:08:16 +0000 (16:08 +0200)
js/tests/unit/alert.spec.js
js/tests/unit/carousel.spec.js
js/tests/unit/collapse.spec.js
js/tests/unit/dom/event-handler.spec.js
js/tests/unit/dropdown.spec.js
js/tests/unit/modal.spec.js
js/tests/unit/offcanvas.spec.js
js/tests/unit/tab.spec.js
js/tests/unit/toast.spec.js
js/tests/unit/tooltip.spec.js

index e2fe49246a8972baef2cb2f9e4d0614aec6427c5..bfe6f9a2927d31a1d653207b44da32e715da35aa 100644 (file)
@@ -102,7 +102,7 @@ describe('Alert', () => {
     })
 
     it('should not remove alert if close event is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<div class="alert"></div>'
 
         const getAlert = () => document.querySelector('.alert')
@@ -118,7 +118,7 @@ describe('Alert', () => {
         })
 
         alertEl.addEventListener('closed.bs.alert', () => {
-          throw new Error('should not fire closed event')
+          reject(new Error('should not fire closed event'))
         })
 
         alert.close()
index 1c91cebec4c92627eeb1694cca039e945cdecbbc..175f9562c66bd8467bbfff3f77c883ff2976a579 100644 (file)
@@ -270,7 +270,7 @@ describe('Carousel', () => {
     })
 
     it('should stay at the start when the prev method is called and wrap is false', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div id="myCarousel" class="carousel slide">',
           '  <div class="carousel-inner">',
@@ -286,7 +286,7 @@ describe('Carousel', () => {
         const carousel = new Carousel(carouselEl, { wrap: false })
 
         carouselEl.addEventListener('slid.bs.carousel', () => {
-          throw new Error('carousel slid when it should not have slid')
+          reject(new Error('carousel slid when it should not have slid'))
         })
 
         carousel.prev()
index e2d2864905edee94c8f878b04525567ce1d2f587..fbfb2d94ef56bb5246c01a31e348e857bf7b9569 100644 (file)
@@ -385,7 +385,7 @@ describe('Collapse', () => {
     })
 
     it('should not fire shown when show is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<div class="collapse"></div>'
 
         const collapseEl = fixtureEl.querySelector('div')
@@ -406,7 +406,7 @@ describe('Collapse', () => {
         })
 
         collapseEl.addEventListener('shown.bs.collapse', () => {
-          throw new Error('should not fire shown event')
+          reject(new Error('should not fire shown event'))
         })
 
         collapse.show()
@@ -466,7 +466,7 @@ describe('Collapse', () => {
     })
 
     it('should not fire hidden when hide is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<div class="collapse show"></div>'
 
         const collapseEl = fixtureEl.querySelector('div')
@@ -487,7 +487,7 @@ describe('Collapse', () => {
         })
 
         collapseEl.addEventListener('hidden.bs.collapse', () => {
-          throw new Error('should not fire hidden event')
+          reject(new Error('should not fire hidden event'))
         })
 
         collapse.hide()
index e5887ce70892468c34ca83e34d0caf8c313dcbef..14037929bca99aeef04a274b1555e1240975af1f 100644 (file)
@@ -373,12 +373,12 @@ describe('EventHandler', () => {
     })
 
     it('should remove a listener registered by .one', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<div></div>'
 
         const div = fixtureEl.querySelector('div')
         const handler = () => {
-          throw new Error('called')
+          reject(new Error('called'))
         }
 
         EventHandler.one(div, 'foobar', handler)
index 8a25fafa87971bc36d5289116d8f8a5371830f78..ffe76028dbf5c4349d0d03d3cb19f2e6df739823 100644 (file)
@@ -513,7 +513,7 @@ describe('Dropdown', () => {
     })
 
     it('should not toggle a dropdown if the element is disabled', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="dropdown">',
           '  <button disabled class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
@@ -527,7 +527,7 @@ describe('Dropdown', () => {
         const dropdown = new Dropdown(btnDropdown)
 
         btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          throw new Error('should not throw shown.bs.dropdown event')
+          reject(new Error('should not throw shown.bs.dropdown event'))
         })
 
         dropdown.toggle()
@@ -540,7 +540,7 @@ describe('Dropdown', () => {
     })
 
     it('should not toggle a dropdown if the element contains .disabled', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="dropdown">',
           '  <button class="btn dropdown-toggle disabled" data-bs-toggle="dropdown">Dropdown</button>',
@@ -554,7 +554,7 @@ describe('Dropdown', () => {
         const dropdown = new Dropdown(btnDropdown)
 
         btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          throw new Error('should not throw shown.bs.dropdown event')
+          reject(new Error('should not throw shown.bs.dropdown event'))
         })
 
         dropdown.toggle()
@@ -567,7 +567,7 @@ describe('Dropdown', () => {
     })
 
     it('should not toggle a dropdown if the menu is shown', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="dropdown">',
           '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
@@ -581,7 +581,7 @@ describe('Dropdown', () => {
         const dropdown = new Dropdown(btnDropdown)
 
         btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          throw new Error('should not throw shown.bs.dropdown event')
+          reject(new Error('should not throw shown.bs.dropdown event'))
         })
 
         dropdown.toggle()
@@ -594,7 +594,7 @@ describe('Dropdown', () => {
     })
 
     it('should not toggle a dropdown if show event is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="dropdown">',
           '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
@@ -612,7 +612,7 @@ describe('Dropdown', () => {
         })
 
         btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          throw new Error('should not throw shown.bs.dropdown event')
+          reject(new Error('should not throw shown.bs.dropdown event'))
         })
 
         dropdown.toggle()
@@ -650,7 +650,7 @@ describe('Dropdown', () => {
     })
 
     it('should not show a dropdown if the element is disabled', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="dropdown">',
           '  <button disabled class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
@@ -664,7 +664,7 @@ describe('Dropdown', () => {
         const dropdown = new Dropdown(btnDropdown)
 
         btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          throw new Error('should not throw shown.bs.dropdown event')
+          reject(new Error('should not throw shown.bs.dropdown event'))
         })
 
         dropdown.show()
@@ -677,7 +677,7 @@ describe('Dropdown', () => {
     })
 
     it('should not show a dropdown if the element contains .disabled', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="dropdown">',
           '  <button class="btn dropdown-toggle disabled" data-bs-toggle="dropdown">Dropdown</button>',
@@ -691,7 +691,7 @@ describe('Dropdown', () => {
         const dropdown = new Dropdown(btnDropdown)
 
         btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          throw new Error('should not throw shown.bs.dropdown event')
+          reject(new Error('should not throw shown.bs.dropdown event'))
         })
 
         dropdown.show()
@@ -704,7 +704,7 @@ describe('Dropdown', () => {
     })
 
     it('should not show a dropdown if the menu is shown', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="dropdown">',
           '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
@@ -718,7 +718,7 @@ describe('Dropdown', () => {
         const dropdown = new Dropdown(btnDropdown)
 
         btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          throw new Error('should not throw shown.bs.dropdown event')
+          reject(new Error('should not throw shown.bs.dropdown event'))
         })
 
         dropdown.show()
@@ -731,7 +731,7 @@ describe('Dropdown', () => {
     })
 
     it('should not show a dropdown if show event is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="dropdown">',
           '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
@@ -749,7 +749,7 @@ describe('Dropdown', () => {
         })
 
         btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          throw new Error('should not throw shown.bs.dropdown event')
+          reject(new Error('should not throw shown.bs.dropdown event'))
         })
 
         dropdown.show()
@@ -817,7 +817,7 @@ describe('Dropdown', () => {
     })
 
     it('should not hide a dropdown if the element is disabled', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="dropdown">',
           '  <button disabled class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
@@ -832,7 +832,7 @@ describe('Dropdown', () => {
         const dropdown = new Dropdown(btnDropdown)
 
         btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          throw new Error('should not throw hidden.bs.dropdown event')
+          reject(new Error('should not throw hidden.bs.dropdown event'))
         })
 
         dropdown.hide()
@@ -845,7 +845,7 @@ describe('Dropdown', () => {
     })
 
     it('should not hide a dropdown if the element contains .disabled', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="dropdown">',
           '  <button class="btn dropdown-toggle disabled" data-bs-toggle="dropdown">Dropdown</button>',
@@ -860,7 +860,7 @@ describe('Dropdown', () => {
         const dropdown = new Dropdown(btnDropdown)
 
         btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          throw new Error('should not throw hidden.bs.dropdown event')
+          reject(new Error('should not throw hidden.bs.dropdown event'))
         })
 
         dropdown.hide()
@@ -873,7 +873,7 @@ describe('Dropdown', () => {
     })
 
     it('should not hide a dropdown if the menu is not shown', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="dropdown">',
           '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
@@ -887,7 +887,7 @@ describe('Dropdown', () => {
         const dropdown = new Dropdown(btnDropdown)
 
         btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          throw new Error('should not throw hidden.bs.dropdown event')
+          reject(new Error('should not throw hidden.bs.dropdown event'))
         })
 
         dropdown.hide()
@@ -900,7 +900,7 @@ describe('Dropdown', () => {
     })
 
     it('should not hide a dropdown if hide event is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="dropdown">',
           '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
@@ -919,7 +919,7 @@ describe('Dropdown', () => {
         })
 
         btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          throw new Error('should not throw hidden.bs.dropdown event')
+          reject(new Error('should not throw hidden.bs.dropdown event'))
         })
 
         dropdown.hide()
index 0471a1b9f7ab6ab2f5b35af6089861d598d64750..a04eb2cc2c5961f625c201f386e8855bf6bd9ec3 100644 (file)
@@ -182,7 +182,7 @@ describe('Modal', () => {
     })
 
     it('should not fire shown event when show is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<div class="modal"><div class="modal-dialog"></div></div>'
 
         const modalEl = fixtureEl.querySelector('.modal')
@@ -200,7 +200,7 @@ describe('Modal', () => {
         })
 
         modalEl.addEventListener('shown.bs.modal', () => {
-          throw new Error('shown event triggered')
+          reject(new Error('shown event triggered'))
         })
 
         modal.show()
@@ -458,7 +458,7 @@ describe('Modal', () => {
     })
 
     it('should not close modal when clicking on modal-content', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="modal">',
           '  <div class="modal-dialog">',
@@ -484,7 +484,7 @@ describe('Modal', () => {
         })
 
         modalEl.addEventListener('hidden.bs.modal', () => {
-          throw new Error('Should not hide a modal')
+          reject(new Error('Should not hide a modal'))
         })
 
         modal.show()
@@ -492,7 +492,7 @@ describe('Modal', () => {
     })
 
     it('should not close modal when clicking outside of modal-content if backdrop = false', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<div class="modal"><div class="modal-dialog"></div></div>'
 
         const modalEl = fixtureEl.querySelector('.modal')
@@ -513,7 +513,7 @@ describe('Modal', () => {
         })
 
         modalEl.addEventListener('hidden.bs.modal', () => {
-          throw new Error('Should not hide a modal')
+          reject(new Error('Should not hide a modal'))
         })
 
         modal.show()
@@ -521,7 +521,7 @@ describe('Modal', () => {
     })
 
     it('should not close modal when clicking outside of modal-content if backdrop = static', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<div class="modal"><div class="modal-dialog"></div></div>'
 
         const modalEl = fixtureEl.querySelector('.modal')
@@ -542,7 +542,7 @@ describe('Modal', () => {
         })
 
         modalEl.addEventListener('hidden.bs.modal', () => {
-          throw new Error('Should not hide a modal')
+          reject(new Error('Should not hide a modal'))
         })
 
         modal.show()
@@ -578,7 +578,7 @@ describe('Modal', () => {
     })
 
     it('should not close modal when escape key is pressed with keyboard = false', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<div class="modal"><div class="modal-dialog"></div></div>'
 
         const modalEl = fixtureEl.querySelector('.modal')
@@ -602,7 +602,7 @@ describe('Modal', () => {
         })
 
         modalEl.addEventListener('hidden.bs.modal', () => {
-          throw new Error('Should not hide a modal')
+          reject(new Error('Should not hide a modal'))
         })
 
         modal.show()
@@ -751,7 +751,7 @@ describe('Modal', () => {
     })
 
     it('should not hide a modal if hide is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<div class="modal"><div class="modal-dialog"></div></div>'
 
         const modalEl = fixtureEl.querySelector('.modal')
@@ -774,7 +774,7 @@ describe('Modal', () => {
         })
 
         modalEl.addEventListener('hidden.bs.modal', () => {
-          throw new Error('should not trigger hidden')
+          reject(new Error('should not trigger hidden'))
         })
 
         modal.show()
index 852ffa55604f5f531850dfa573beeb98f65e225a..37f3397c791fdfb579c155105e2c385185ceddb4 100644 (file)
@@ -329,7 +329,7 @@ describe('Offcanvas', () => {
     })
 
     it('should not fire shown when show is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<div class="offcanvas"></div>'
 
         const offCanvasEl = fixtureEl.querySelector('div')
@@ -349,7 +349,7 @@ describe('Offcanvas', () => {
         })
 
         offCanvasEl.addEventListener('shown.bs.offcanvas', () => {
-          throw new Error('should not fire shown event')
+          reject(new Error('should not fire shown event'))
         })
 
         offCanvas.show()
@@ -455,7 +455,7 @@ describe('Offcanvas', () => {
     })
 
     it('should not fire hidden when hide is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<div class="offcanvas"></div>'
 
         const offCanvasEl = fixtureEl.querySelector('div')
@@ -477,7 +477,7 @@ describe('Offcanvas', () => {
         })
 
         offCanvasEl.addEventListener('hidden.bs.offcanvas', () => {
-          throw new Error('should not fire hidden event')
+          reject(new Error('should not fire hidden event'))
         })
 
         offCanvas.hide()
index 43adee53b2fdda650acc996e503d436a85da724b..a0fb89bd478063ae7ea04a2ec67cc917156d2683 100644 (file)
@@ -167,7 +167,7 @@ describe('Tab', () => {
     })
 
     it('should not fire shown when show is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<div class="nav"></div>'
 
         const navEl = fixtureEl.querySelector('div')
@@ -185,7 +185,7 @@ describe('Tab', () => {
         })
 
         navEl.addEventListener('shown.bs.tab', () => {
-          throw new Error('should not trigger shown event')
+          reject(new Error('should not trigger shown event'))
         })
 
         tab.show()
@@ -193,7 +193,7 @@ describe('Tab', () => {
     })
 
     it('should not fire shown when tab is already active', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<ul class="nav nav-tabs" role="tablist">',
           '  <li class="nav-item" role="presentation"><button type="button" data-bs-target="#home" class="nav-link active" role="tab" aria-selected="true">Home</button></li>',
@@ -209,7 +209,7 @@ describe('Tab', () => {
         const tab = new Tab(triggerActive)
 
         triggerActive.addEventListener('shown.bs.tab', () => {
-          throw new Error('should not trigger shown event')
+          reject(new Error('should not trigger shown event'))
         })
 
         tab.show()
@@ -285,7 +285,7 @@ describe('Tab', () => {
     })
 
     it('should not fire hidden when hide is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<ul class="nav" role="tablist">',
           '  <li><button type="button" data-bs-target="#home" role="tab">Home</button></li>',
@@ -313,7 +313,7 @@ describe('Tab', () => {
         })
 
         triggerList[0].addEventListener('hidden.bs.tab', () => {
-          throw new Error('should not trigger hidden')
+          reject(new Error('should not trigger hidden'))
         })
 
         firstTab.show()
@@ -751,7 +751,7 @@ describe('Tab', () => {
     })
 
     it('should not fire shown when tab has disabled attribute', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<ul class="nav nav-tabs" role="tablist">',
           '  <li class="nav-item" role="presentation"><button type="button" data-bs-target="#home" class="nav-link active" role="tab" aria-selected="true">Home</button></li>',
@@ -765,7 +765,7 @@ describe('Tab', () => {
 
         const triggerDisabled = fixtureEl.querySelector('button[disabled]')
         triggerDisabled.addEventListener('shown.bs.tab', () => {
-          throw new Error('should not trigger shown event')
+          reject(new Error('should not trigger shown event'))
         })
 
         triggerDisabled.click()
@@ -777,7 +777,7 @@ describe('Tab', () => {
     })
 
     it('should not fire shown when tab has disabled class', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<ul class="nav nav-tabs" role="tablist">',
           '  <li class="nav-item" role="presentation"><a href="#home" class="nav-link active" role="tab" aria-selected="true">Home</a></li>',
@@ -792,7 +792,7 @@ describe('Tab', () => {
         const triggerDisabled = fixtureEl.querySelector('a.disabled')
 
         triggerDisabled.addEventListener('shown.bs.tab', () => {
-          throw new Error('should not trigger shown event')
+          reject(new Error('should not trigger shown event'))
         })
 
         triggerDisabled.click()
index 9134a8410de662c369d6351071ebc138405b4148..95fe050fab19774ff86814de6e45588933c1883a 100644 (file)
@@ -160,7 +160,7 @@ describe('Toast', () => {
     })
 
     it('should not trigger shown if show is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="toast" data-bs-delay="1" data-bs-animation="false">',
           '  <div class="toast-body">',
@@ -185,7 +185,7 @@ describe('Toast', () => {
         })
 
         toastEl.addEventListener('shown.bs.toast', () => {
-          throw new Error('shown event should not be triggered if show is prevented')
+          reject(new Error('shown event should not be triggered if show is prevented'))
         })
 
         toast.show()
@@ -449,7 +449,7 @@ describe('Toast', () => {
     })
 
     it('should not trigger hidden if hide is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = [
           '<div class="toast" data-bs-delay="1" data-bs-animation="false">',
           '  <div class="toast-body">',
@@ -478,7 +478,7 @@ describe('Toast', () => {
         })
 
         toastEl.addEventListener('hidden.bs.toast', () => {
-          throw new Error('hidden event should not be triggered if hide is prevented')
+          reject(new Error('hidden event should not be triggered if hide is prevented'))
         })
 
         toast.show()
index c961744dfd9b142fcf87bf55c71756cbd940a0e4..5267305a544cddfed74ee932cf666274e9e58841 100644 (file)
@@ -211,7 +211,7 @@ describe('Tooltip', () => {
 
   describe('disable', () => {
     it('should disable tooltip', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<a href="#" rel="tooltip" title="Another tooltip">'
 
         const tooltipEl = fixtureEl.querySelector('a')
@@ -220,7 +220,7 @@ describe('Tooltip', () => {
         tooltip.disable()
 
         tooltipEl.addEventListener('show.bs.tooltip', () => {
-          throw new Error('should not show a disabled tooltip')
+          reject(new Error('should not show a disabled tooltip'))
         })
 
         tooltip.show()
@@ -250,7 +250,7 @@ describe('Tooltip', () => {
 
   describe('toggle', () => {
     it('should do nothing if disabled', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<a href="#" rel="tooltip" title="Another tooltip">'
 
         const tooltipEl = fixtureEl.querySelector('a')
@@ -259,7 +259,7 @@ describe('Tooltip', () => {
         tooltip.disable()
 
         tooltipEl.addEventListener('show.bs.tooltip', () => {
-          throw new Error('should not show a disabled tooltip')
+          reject(new Error('should not show a disabled tooltip'))
         })
 
         tooltip.toggle()
@@ -652,7 +652,7 @@ describe('Tooltip', () => {
     })
 
     it('should not show a tooltip if show.bs.tooltip is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<a href="#" rel="tooltip" title="Another tooltip">'
 
         const tooltipEl = fixtureEl.querySelector('a')
@@ -671,7 +671,7 @@ describe('Tooltip', () => {
         })
 
         tooltipEl.addEventListener('shown.bs.tooltip', () => {
-          throw new Error('Tooltip should not be shown')
+          reject(new Error('Tooltip should not be shown'))
         })
 
         tooltip.show()
@@ -1001,7 +1001,7 @@ describe('Tooltip', () => {
     })
 
     it('should not hide a tooltip if hide event is prevented', () => {
-      return new Promise(resolve => {
+      return new Promise((resolve, reject) => {
         fixtureEl.innerHTML = '<a href="#" rel="tooltip" title="Another tooltip">'
 
         const assertDone = () => {
@@ -1022,7 +1022,7 @@ describe('Tooltip', () => {
           assertDone()
         })
         tooltipEl.addEventListener('hidden.bs.tooltip', () => {
-          throw new Error('should not trigger hidden event')
+          reject(new Error('should not trigger hidden event'))
         })
 
         tooltip.show()