@@ -175,6 +175,56 @@ describe("useInterval", () => {
175175 expect ( count ) . toBe ( 3 ) ;
176176 } ) ;
177177
178+ it ( "options: autoRun" , ( ) => {
179+ const fn = jest . fn ( ) ;
180+ const { rerender, result, unmount } = renderHook ( ( ) =>
181+ useInterval ( fn , 100 , { autorun : false } )
182+ ) ;
183+
184+ rerender ( ) ;
185+ expect ( fn ) . toHaveBeenCalledTimes ( 0 ) ;
186+ expect ( result . current . state ) . toEqual ( "idle" ) ;
187+
188+ jest . advanceTimersByTime ( 100 ) ;
189+ expect ( fn ) . toHaveBeenCalledTimes ( 0 ) ;
190+ expect ( result . current . state ) . toEqual ( "idle" ) ;
191+
192+ rerender ( ) ;
193+ rerender ( ) ;
194+ rerender ( ) ;
195+ jest . advanceTimersByTime ( 100 ) ;
196+ expect ( fn ) . toHaveBeenCalledTimes ( 0 ) ;
197+ expect ( result . current . state ) . toEqual ( "idle" ) ;
198+
199+ act ( ( ) => {
200+ result . current . run ( ) ;
201+ } ) ;
202+
203+ expect ( fn ) . toHaveBeenCalledTimes ( 0 ) ;
204+ expect ( result . current . state ) . toEqual ( "running" ) ;
205+ jest . advanceTimersByTime ( 100 ) ;
206+ expect ( fn ) . toHaveBeenCalledTimes ( 1 ) ;
207+ expect ( result . current . state ) . toEqual ( "running" ) ;
208+ jest . advanceTimersByTime ( 100 ) ;
209+ expect ( fn ) . toHaveBeenCalledTimes ( 2 ) ;
210+ expect ( result . current . state ) . toEqual ( "running" ) ;
211+
212+ act ( ( ) => {
213+ result . current . cancel ( ) ;
214+ } ) ;
215+ expect ( result . current . state ) . toEqual ( "idle" ) ;
216+
217+ jest . advanceTimersByTime ( 100 ) ;
218+ expect ( fn ) . toHaveBeenCalledTimes ( 2 ) ;
219+ expect ( result . current . state ) . toEqual ( "idle" ) ;
220+
221+ unmount ( ) ;
222+
223+ jest . advanceTimersByTime ( 100 ) ;
224+ expect ( fn ) . toHaveBeenCalledTimes ( 2 ) ;
225+ expect ( result . current . state ) . toEqual ( "idle" ) ;
226+ } ) ;
227+
178228 it ( "Unmount" , ( ) => {
179229 const fn = jest . fn ( ) ;
180230 const { result, rerender, unmount } = renderHook ( ( ) =>
0 commit comments