aboutsummaryrefslogtreecommitdiff
path: root/js/tests/unit/offcanvas.spec.js
diff options
context:
space:
mode:
authorGeoSot <[email protected]>2021-06-03 18:53:27 +0300
committerGitHub <[email protected]>2021-06-03 18:53:27 +0300
commitc98657b8303150bfda3bdea750055b83a29b27a3 (patch)
tree6f7b347461e3fdd380f0d4e990440e6fc427af61 /js/tests/unit/offcanvas.spec.js
parent4a5029ea29ac75243dfec68153051292fc70f5cf (diff)
downloadbootstrap-c98657b8303150bfda3bdea750055b83a29b27a3.tar.xz
bootstrap-c98657b8303150bfda3bdea750055b83a29b27a3.zip
Add `getOrCreateInstance` method in base-component (#33276)
Co-authored-by: Rohit Sharma <[email protected]> Co-authored-by: XhmikosR <[email protected]>
Diffstat (limited to 'js/tests/unit/offcanvas.spec.js')
-rw-r--r--js/tests/unit/offcanvas.spec.js88
1 files changed, 54 insertions, 34 deletions
diff --git a/js/tests/unit/offcanvas.spec.js b/js/tests/unit/offcanvas.spec.js
index dfb6c429e..0f67fef9d 100644
--- a/js/tests/unit/offcanvas.spec.js
+++ b/js/tests/unit/offcanvas.spec.js
@@ -620,38 +620,6 @@ describe('Offcanvas', () => {
}).toThrowError(TypeError, `No method named "${action}"`)
})
- it('should throw error on protected method', () => {
- fixtureEl.innerHTML = '<div></div>'
-
- const div = fixtureEl.querySelector('div')
- const action = '_getConfig'
-
- jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface
- jQueryMock.elements = [div]
-
- try {
- jQueryMock.fn.offcanvas.call(jQueryMock, action)
- } catch (error) {
- expect(error.message).toEqual(`No method named "${action}"`)
- }
- })
-
- it('should throw error if method "constructor" is being called', () => {
- fixtureEl.innerHTML = '<div></div>'
-
- const div = fixtureEl.querySelector('div')
- const action = 'constructor'
-
- jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface
- jQueryMock.elements = [div]
-
- try {
- jQueryMock.fn.offcanvas.call(jQueryMock, action)
- } catch (error) {
- expect(error.message).toEqual(`No method named "${action}"`)
- }
- })
-
it('should call offcanvas method', () => {
fixtureEl.innerHTML = '<div></div>'
@@ -675,8 +643,6 @@ describe('Offcanvas', () => {
jQueryMock.elements = [div]
jQueryMock.fn.offcanvas.call(jQueryMock, { scroll: true })
- spyOn(Offcanvas.prototype, 'constructor')
- expect(Offcanvas.prototype.constructor).not.toHaveBeenCalledWith(div, { scroll: true })
const offcanvas = Offcanvas.getInstance(div)
expect(offcanvas).not.toBeNull()
@@ -703,4 +669,58 @@ describe('Offcanvas', () => {
expect(Offcanvas.getInstance(div)).toBeNull()
})
})
+
+ describe('getOrCreateInstance', () => {
+ it('should return offcanvas instance', () => {
+ fixtureEl.innerHTML = '<div></div>'
+
+ const div = fixtureEl.querySelector('div')
+ const offcanvas = new Offcanvas(div)
+
+ expect(Offcanvas.getOrCreateInstance(div)).toEqual(offcanvas)
+ expect(Offcanvas.getInstance(div)).toEqual(Offcanvas.getOrCreateInstance(div, {}))
+ expect(Offcanvas.getOrCreateInstance(div)).toBeInstanceOf(Offcanvas)
+ })
+
+ it('should return new instance when there is no Offcanvas instance', () => {
+ fixtureEl.innerHTML = '<div></div>'
+
+ const div = fixtureEl.querySelector('div')
+
+ expect(Offcanvas.getInstance(div)).toEqual(null)
+ expect(Offcanvas.getOrCreateInstance(div)).toBeInstanceOf(Offcanvas)
+ })
+
+ it('should return new instance when there is no offcanvas instance with given configuration', () => {
+ fixtureEl.innerHTML = '<div></div>'
+
+ const div = fixtureEl.querySelector('div')
+
+ expect(Offcanvas.getInstance(div)).toEqual(null)
+ const offcanvas = Offcanvas.getOrCreateInstance(div, {
+ scroll: true
+ })
+ expect(offcanvas).toBeInstanceOf(Offcanvas)
+
+ expect(offcanvas._config.scroll).toEqual(true)
+ })
+
+ it('should return the instance when exists without given configuration', () => {
+ fixtureEl.innerHTML = '<div></div>'
+
+ const div = fixtureEl.querySelector('div')
+ const offcanvas = new Offcanvas(div, {
+ scroll: true
+ })
+ expect(Offcanvas.getInstance(div)).toEqual(offcanvas)
+
+ const offcanvas2 = Offcanvas.getOrCreateInstance(div, {
+ scroll: false
+ })
+ expect(offcanvas).toBeInstanceOf(Offcanvas)
+ expect(offcanvas2).toEqual(offcanvas)
+
+ expect(offcanvas2._config.scroll).toEqual(true)
+ })
+ })
})