diff options
| author | GeoSot <[email protected]> | 2021-06-03 18:53:27 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-06-03 18:53:27 +0300 |
| commit | c98657b8303150bfda3bdea750055b83a29b27a3 (patch) | |
| tree | 6f7b347461e3fdd380f0d4e990440e6fc427af61 /js/tests/unit/offcanvas.spec.js | |
| parent | 4a5029ea29ac75243dfec68153051292fc70f5cf (diff) | |
| download | bootstrap-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.js | 88 |
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) + }) + }) }) |
