})
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')
})
alertEl.addEventListener('closed.bs.alert', () => {
- throw new Error('should not fire closed event')
+ reject(new Error('should not fire closed event'))
})
alert.close()
})
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">',
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()
})
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')
})
collapseEl.addEventListener('shown.bs.collapse', () => {
- throw new Error('should not fire shown event')
+ reject(new Error('should not fire shown event'))
})
collapse.show()
})
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')
})
collapseEl.addEventListener('hidden.bs.collapse', () => {
- throw new Error('should not fire hidden event')
+ reject(new Error('should not fire hidden event'))
})
collapse.hide()
})
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)
})
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>',
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()
})
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>',
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()
})
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>',
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()
})
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>',
})
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()
})
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>',
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()
})
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>',
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()
})
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>',
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()
})
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>',
})
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()
})
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>',
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()
})
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>',
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()
})
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>',
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()
})
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>',
})
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()
})
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')
})
modalEl.addEventListener('shown.bs.modal', () => {
- throw new Error('shown event triggered')
+ reject(new Error('shown event triggered'))
})
modal.show()
})
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">',
})
modalEl.addEventListener('hidden.bs.modal', () => {
- throw new Error('Should not hide a modal')
+ reject(new Error('Should not hide a modal'))
})
modal.show()
})
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')
})
modalEl.addEventListener('hidden.bs.modal', () => {
- throw new Error('Should not hide a modal')
+ reject(new Error('Should not hide a modal'))
})
modal.show()
})
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')
})
modalEl.addEventListener('hidden.bs.modal', () => {
- throw new Error('Should not hide a modal')
+ reject(new Error('Should not hide a modal'))
})
modal.show()
})
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')
})
modalEl.addEventListener('hidden.bs.modal', () => {
- throw new Error('Should not hide a modal')
+ reject(new Error('Should not hide a modal'))
})
modal.show()
})
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')
})
modalEl.addEventListener('hidden.bs.modal', () => {
- throw new Error('should not trigger hidden')
+ reject(new Error('should not trigger hidden'))
})
modal.show()
})
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')
})
offCanvasEl.addEventListener('shown.bs.offcanvas', () => {
- throw new Error('should not fire shown event')
+ reject(new Error('should not fire shown event'))
})
offCanvas.show()
})
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')
})
offCanvasEl.addEventListener('hidden.bs.offcanvas', () => {
- throw new Error('should not fire hidden event')
+ reject(new Error('should not fire hidden event'))
})
offCanvas.hide()
})
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')
})
navEl.addEventListener('shown.bs.tab', () => {
- throw new Error('should not trigger shown event')
+ reject(new Error('should not trigger shown event'))
})
tab.show()
})
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>',
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()
})
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>',
})
triggerList[0].addEventListener('hidden.bs.tab', () => {
- throw new Error('should not trigger hidden')
+ reject(new Error('should not trigger hidden'))
})
firstTab.show()
})
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>',
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()
})
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>',
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()
})
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">',
})
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()
})
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">',
})
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()
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')
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()
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')
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()
})
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')
})
tooltipEl.addEventListener('shown.bs.tooltip', () => {
- throw new Error('Tooltip should not be shown')
+ reject(new Error('Tooltip should not be shown'))
})
tooltip.show()
})
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 = () => {
assertDone()
})
tooltipEl.addEventListener('hidden.bs.tooltip', () => {
- throw new Error('should not trigger hidden event')
+ reject(new Error('should not trigger hidden event'))
})
tooltip.show()