UNPKG

react-native-reanimated-carousel

Version:

Simple carousel component.fully implemented using Reanimated 2.Infinitely scrolling, very smooth.

2 lines 4.03 kB
var _reactHooks=require("@testing-library/react-hooks");var _useAutoPlay=require("./useAutoPlay");describe("useAutoPlay",function(){beforeEach(function(){jest.useFakeTimers();jest.clearAllMocks();});afterEach(function(){jest.clearAllTimers();jest.useRealTimers();});var mockCarouselController={prev:jest.fn(),next:jest.fn(),getCurrentIndex:jest.fn(),getSharedIndex:jest.fn(),scrollTo:jest.fn()};it("should start autoplay when autoPlay is true",function(){(0,_reactHooks.renderHook)(function(){return(0,_useAutoPlay.useAutoPlay)({autoPlay:true,autoPlayInterval:1000,carouselController:mockCarouselController});});(0,_reactHooks.act)(function(){jest.runOnlyPendingTimers();});expect(mockCarouselController.next).toHaveBeenCalledTimes(1);expect(mockCarouselController.next).toHaveBeenCalledWith(expect.objectContaining({onFinished:expect.any(Function)}));});it("should not start autoplay when autoPlay is false",function(){(0,_reactHooks.renderHook)(function(){return(0,_useAutoPlay.useAutoPlay)({autoPlay:false,autoPlayInterval:1000,carouselController:mockCarouselController});});(0,_reactHooks.act)(function(){jest.runOnlyPendingTimers();});expect(mockCarouselController.next).not.toHaveBeenCalled();});it("should play in reverse when autoPlayReverse is true",function(){(0,_reactHooks.renderHook)(function(){return(0,_useAutoPlay.useAutoPlay)({autoPlay:true,autoPlayReverse:true,autoPlayInterval:1000,carouselController:mockCarouselController});});(0,_reactHooks.act)(function(){jest.runOnlyPendingTimers();});expect(mockCarouselController.prev).toHaveBeenCalledTimes(1);expect(mockCarouselController.next).not.toHaveBeenCalled();});it("should clear timer on unmount",function(){var _renderHook=(0,_reactHooks.renderHook)(function(){return(0,_useAutoPlay.useAutoPlay)({autoPlay:true,autoPlayInterval:1000,carouselController:mockCarouselController});}),unmount=_renderHook.unmount;(0,_reactHooks.act)(function(){jest.runOnlyPendingTimers();});mockCarouselController.next.mockClear();(0,_reactHooks.act)(function(){unmount();jest.runOnlyPendingTimers();});expect(mockCarouselController.next).not.toHaveBeenCalled();});it("should pause and resume autoplay",function(){var _renderHook2=(0,_reactHooks.renderHook)(function(){return(0,_useAutoPlay.useAutoPlay)({autoPlay:true,autoPlayInterval:1000,carouselController:mockCarouselController});}),result=_renderHook2.result;(0,_reactHooks.act)(function(){jest.runOnlyPendingTimers();});mockCarouselController.next.mockClear();(0,_reactHooks.act)(function(){result.current.pause();jest.runOnlyPendingTimers();});expect(mockCarouselController.next).not.toHaveBeenCalled();(0,_reactHooks.act)(function(){result.current.start();jest.runOnlyPendingTimers();});expect(mockCarouselController.next).toHaveBeenCalledTimes(1);});it("should respect autoPlayInterval timing",function(){(0,_reactHooks.renderHook)(function(){return(0,_useAutoPlay.useAutoPlay)({autoPlay:true,autoPlayInterval:2000,carouselController:mockCarouselController});});(0,_reactHooks.act)(function(){jest.advanceTimersByTime(1500);});expect(mockCarouselController.next).not.toHaveBeenCalled();(0,_reactHooks.act)(function(){jest.advanceTimersByTime(500);});expect(mockCarouselController.next).toHaveBeenCalledTimes(1);});it("should chain autoplay calls correctly",function(){(0,_reactHooks.renderHook)(function(){return(0,_useAutoPlay.useAutoPlay)({autoPlay:true,autoPlayInterval:1000,carouselController:mockCarouselController});});(0,_reactHooks.act)(function(){jest.runOnlyPendingTimers();});expect(mockCarouselController.next).toHaveBeenCalledTimes(1);var onFinished=mockCarouselController.next.mock.calls[0][0].onFinished;(0,_reactHooks.act)(function(){onFinished();jest.runOnlyPendingTimers();});expect(mockCarouselController.next).toHaveBeenCalledTimes(2);var onFinished2=mockCarouselController.next.mock.calls[1][0].onFinished;(0,_reactHooks.act)(function(){onFinished2();jest.runOnlyPendingTimers();});expect(mockCarouselController.next).toHaveBeenCalledTimes(3);});}); //# sourceMappingURL=useAutoPlay.test.js.map