aboutsummaryrefslogtreecommitdiff
path: root/js/tests/unit/alert.spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/tests/unit/alert.spec.js')
-rw-r--r--js/tests/unit/alert.spec.js58
1 files changed, 43 insertions, 15 deletions
diff --git a/js/tests/unit/alert.spec.js b/js/tests/unit/alert.spec.js
index 916c7fd07..72cd23d89 100644
--- a/js/tests/unit/alert.spec.js
+++ b/js/tests/unit/alert.spec.js
@@ -2,7 +2,7 @@ import Alert from '../../src/alert'
import { getTransitionDurationFromElement } from '../../src/util/index'
/** Test helpers */
-import { getFixture, clearFixture, jQueryMock } from '../helpers/fixture'
+import { clearFixture, getFixture, jQueryMock } from '../helpers/fixture'
describe('Alert', () => {
let fixtureEl
@@ -15,6 +15,17 @@ describe('Alert', () => {
clearFixture()
})
+ it('should take care of element either passed as a CSS selector or DOM element', () => {
+ fixtureEl.innerHTML = '<div class="alert"></div>'
+
+ const alertEl = fixtureEl.querySelector('.alert')
+ const alertBySelector = new Alert('.alert')
+ const alertByElement = new Alert(alertEl)
+
+ expect(alertBySelector._element).toEqual(alertEl)
+ expect(alertByElement._element).toEqual(alertEl)
+ })
+
it('should return version', () => {
expect(typeof Alert.VERSION).toEqual('string')
})
@@ -91,25 +102,20 @@ describe('Alert', () => {
it('should not remove alert if close event is prevented', done => {
fixtureEl.innerHTML = '<div class="alert"></div>'
- const alertEl = document.querySelector('.alert')
+ const getAlert = () => document.querySelector('.alert')
+ const alertEl = getAlert()
const alert = new Alert(alertEl)
- const endTest = () => {
+ alertEl.addEventListener('close.bs.alert', event => {
+ event.preventDefault()
setTimeout(() => {
- expect(alert._removeElement).not.toHaveBeenCalled()
+ expect(getAlert()).not.toBeNull()
done()
}, 10)
- }
-
- spyOn(alert, '_removeElement')
-
- alertEl.addEventListener('close.bs.alert', event => {
- event.preventDefault()
- endTest()
})
alertEl.addEventListener('closed.bs.alert', () => {
- endTest()
+ throw new Error('should not fire closed event')
})
alert.close()
@@ -123,7 +129,7 @@ describe('Alert', () => {
const alertEl = document.querySelector('.alert')
const alert = new Alert(alertEl)
- expect(Alert.getInstance(alertEl)).toBeDefined()
+ expect(Alert.getInstance(alertEl)).not.toBeNull()
alert.dispose()
@@ -156,9 +162,9 @@ describe('Alert', () => {
jQueryMock.fn.alert = Alert.jQueryInterface
jQueryMock.elements = [alertEl]
+ expect(Alert.getInstance(alertEl)).toBeNull()
jQueryMock.fn.alert.call(jQueryMock, 'close')
- expect(Alert.getInstance(alertEl)).toBeDefined()
expect(fixtureEl.querySelector('.alert')).toBeNull()
})
@@ -172,7 +178,7 @@ describe('Alert', () => {
jQueryMock.fn.alert.call(jQueryMock)
- expect(Alert.getInstance(alertEl)).toBeDefined()
+ expect(Alert.getInstance(alertEl)).not.toBeNull()
expect(fixtureEl.querySelector('.alert')).not.toBeNull()
})
})
@@ -196,4 +202,26 @@ describe('Alert', () => {
expect(Alert.getInstance(div)).toEqual(null)
})
})
+
+ describe('getOrCreateInstance', () => {
+ it('should return alert instance', () => {
+ fixtureEl.innerHTML = '<div></div>'
+
+ const div = fixtureEl.querySelector('div')
+ const alert = new Alert(div)
+
+ expect(Alert.getOrCreateInstance(div)).toEqual(alert)
+ expect(Alert.getInstance(div)).toEqual(Alert.getOrCreateInstance(div, {}))
+ expect(Alert.getOrCreateInstance(div)).toBeInstanceOf(Alert)
+ })
+
+ it('should return new instance when there is no alert instance', () => {
+ fixtureEl.innerHTML = '<div></div>'
+
+ const div = fixtureEl.querySelector('div')
+
+ expect(Alert.getInstance(div)).toEqual(null)
+ expect(Alert.getOrCreateInstance(div)).toBeInstanceOf(Alert)
+ })
+ })
})