1
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-08-08 14:46:34 +02:00

Add getOrCreateInstance method in base-component (#33276)

Co-authored-by: Rohit Sharma <rohit2sharma95@gmail.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
This commit is contained in:
GeoSot
2021-06-03 18:53:27 +03:00
committed by GitHub
parent 4a5029ea29
commit c98657b830
39 changed files with 744 additions and 124 deletions

View File

@@ -1202,6 +1202,60 @@ describe('Carousel', () => {
})
})
describe('getOrCreateInstance', () => {
it('should return carousel instance', () => {
fixtureEl.innerHTML = '<div></div>'
const div = fixtureEl.querySelector('div')
const carousel = new Carousel(div)
expect(Carousel.getOrCreateInstance(div)).toEqual(carousel)
expect(Carousel.getInstance(div)).toEqual(Carousel.getOrCreateInstance(div, {}))
expect(Carousel.getOrCreateInstance(div)).toBeInstanceOf(Carousel)
})
it('should return new instance when there is no carousel instance', () => {
fixtureEl.innerHTML = '<div></div>'
const div = fixtureEl.querySelector('div')
expect(Carousel.getInstance(div)).toEqual(null)
expect(Carousel.getOrCreateInstance(div)).toBeInstanceOf(Carousel)
})
it('should return new instance when there is no carousel instance with given configuration', () => {
fixtureEl.innerHTML = '<div></div>'
const div = fixtureEl.querySelector('div')
expect(Carousel.getInstance(div)).toEqual(null)
const carousel = Carousel.getOrCreateInstance(div, {
interval: 1
})
expect(carousel).toBeInstanceOf(Carousel)
expect(carousel._config.interval).toEqual(1)
})
it('should return the instance when exists without given configuration', () => {
fixtureEl.innerHTML = '<div></div>'
const div = fixtureEl.querySelector('div')
const carousel = new Carousel(div, {
interval: 1
})
expect(Carousel.getInstance(div)).toEqual(carousel)
const carousel2 = Carousel.getOrCreateInstance(div, {
interval: 2
})
expect(carousel).toBeInstanceOf(Carousel)
expect(carousel2).toEqual(carousel)
expect(carousel2._config.interval).toEqual(1)
})
})
describe('jQueryInterface', () => {
it('should create a carousel', () => {
fixtureEl.innerHTML = '<div></div>'