diff --git a/components/carousel/__tests__/index.test.js b/components/carousel/__tests__/index.test.js index dc6e18ebed..18b530ffc3 100644 --- a/components/carousel/__tests__/index.test.js +++ b/components/carousel/__tests__/index.test.js @@ -3,6 +3,14 @@ import { mount } from 'enzyme'; import Carousel from '..'; describe('Carousel', () => { + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + it('should has innerSlider', () => { const wrapper = mount(
); const { innerSlider } = wrapper.instance(); @@ -10,4 +18,42 @@ describe('Carousel', () => { expect(innerSlider).toBe(innerSliderFromRefs); expect(typeof innerSlider.slickNext).toBe('function'); }); + + it('should has prev, next and go function', () => { + const wrapper = mount(
1
2
3
); + const { prev, next, goTo } = wrapper.instance(); + expect(typeof prev).toBe('function'); + expect(typeof next).toBe('function'); + expect(typeof goTo).toBe('function'); + expect(wrapper.instance().slick.innerSlider.state.currentSlide).toBe(0); + wrapper.instance().goTo(2); + jest.runAllTimers(); + expect(wrapper.instance().slick.innerSlider.state.currentSlide).toBe(2); + wrapper.instance().prev(); + jest.runAllTimers(); + expect(wrapper.instance().slick.innerSlider.state.currentSlide).toBe(1); + wrapper.instance().next(); + jest.runAllTimers(); + expect(wrapper.instance().slick.innerSlider.state.currentSlide).toBe(2); + }); + + it('should trigger autoPlay after window resize', async () => { + jest.useRealTimers(); + const wrapper = mount(
1
2
3
); + const spy = jest.spyOn(wrapper.instance().slick.innerSlider, 'autoPlay'); + window.resizeTo(1000); + expect(spy).not.toBeCalled(); + await new Promise(resolve => setTimeout(resolve, 500)); + expect(spy).toBeCalled(); + }); + + it('cancel resize listener when unmount', async () => { + const wrapper = mount(
1
2
3
); + const onWindowResized = wrapper.instance().onWindowResized; + const spy = jest.spyOn(wrapper.instance().onWindowResized, 'cancel'); + const spy2 = jest.spyOn(window, 'removeEventListener'); + wrapper.unmount(); + expect(spy).toBeCalled(); + expect(spy2).toBeCalledWith('resize', onWindowResized); + }); });