aboutsummaryrefslogtreecommitdiff
path: root/js/tests/unit/button.spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/tests/unit/button.spec.js')
-rw-r--r--js/tests/unit/button.spec.js38
1 files changed, 35 insertions, 3 deletions
diff --git a/js/tests/unit/button.spec.js b/js/tests/unit/button.spec.js
index e442fd90d..be99177e8 100644
--- a/js/tests/unit/button.spec.js
+++ b/js/tests/unit/button.spec.js
@@ -18,6 +18,16 @@ describe('Button', () => {
clearFixture()
})
+ it('should take care of element either passed as a CSS selector or DOM element', () => {
+ fixtureEl.innerHTML = '<button data-bs-toggle="button">Placeholder</button>'
+ const buttonEl = fixtureEl.querySelector('[data-bs-toggle="button"]')
+ const buttonBySelector = new Button('[data-bs-toggle="button"]')
+ const buttonByElement = new Button(buttonEl)
+
+ expect(buttonBySelector._element).toEqual(buttonEl)
+ expect(buttonByElement._element).toEqual(buttonEl)
+ })
+
describe('VERSION', () => {
it('should return plugin version', () => {
expect(Button.VERSION).toEqual(jasmine.any(String))
@@ -81,7 +91,7 @@ describe('Button', () => {
const btnEl = fixtureEl.querySelector('.btn')
const button = new Button(btnEl)
- expect(Button.getInstance(btnEl)).toBeDefined()
+ expect(Button.getInstance(btnEl)).not.toBeNull()
button.dispose()
@@ -116,7 +126,7 @@ describe('Button', () => {
jQueryMock.fn.button.call(jQueryMock, 'toggle')
- expect(Button.getInstance(btnEl)).toBeDefined()
+ expect(Button.getInstance(btnEl)).not.toBeNull()
expect(btnEl.classList.contains('active')).toEqual(true)
})
@@ -130,7 +140,7 @@ describe('Button', () => {
jQueryMock.fn.button.call(jQueryMock)
- expect(Button.getInstance(btnEl)).toBeDefined()
+ expect(Button.getInstance(btnEl)).not.toBeNull()
expect(btnEl.classList.contains('active')).toEqual(false)
})
})
@@ -154,4 +164,26 @@ describe('Button', () => {
expect(Button.getInstance(div)).toEqual(null)
})
})
+
+ describe('getOrCreateInstance', () => {
+ it('should return button instance', () => {
+ fixtureEl.innerHTML = '<div></div>'
+
+ const div = fixtureEl.querySelector('div')
+ const button = new Button(div)
+
+ expect(Button.getOrCreateInstance(div)).toEqual(button)
+ expect(Button.getInstance(div)).toEqual(Button.getOrCreateInstance(div, {}))
+ expect(Button.getOrCreateInstance(div)).toBeInstanceOf(Button)
+ })
+
+ it('should return new instance when there is no button instance', () => {
+ fixtureEl.innerHTML = '<div></div>'
+
+ const div = fixtureEl.querySelector('div')
+
+ expect(Button.getInstance(div)).toEqual(null)
+ expect(Button.getOrCreateInstance(div)).toBeInstanceOf(Button)
+ })
+ })
})