1
1
import { useState } from 'react' ;
2
2
3
- import { testHook } from '../.jest/helpers' ;
3
+ import { runHooks } from '../.jest/helpers' ;
4
4
import { useDebouncedUpdates , useDebouncedReducer , useDebouncedState } from '../src' ;
5
5
6
6
describe ( 'useDebouncedUpdates hook' , ( ) => {
@@ -11,23 +11,10 @@ describe('useDebouncedUpdates hook', () => {
11
11
} ) ;
12
12
13
13
it ( 'returns a debounced state updater' , ( ) => {
14
- let valueA ;
15
- let valueB ;
16
- let valueC ;
17
- const [ , debouncedSetValue ] = testHook (
18
- ( ) => useDebouncedUpdates ( useState ( 0 ) , delay ) ,
19
- ( [ value , debouncedSetValue ] ) => {
20
- valueA = value ;
21
- debouncedSetValue ( ( value ) => value + 1 ) ;
22
- } ,
23
- ( [ value ] ) => {
24
- valueB = value ;
25
- jest . runAllTimers ( ) ;
26
- } ,
27
- ( [ value ] ) => {
28
- valueC = value ;
29
- }
30
- ) ;
14
+ const [ [ valueA , debouncedSetValue ] , [ valueB ] , [ valueC ] ] = runHooks ( ( ) => useDebouncedUpdates ( useState ( 0 ) , delay ) , [
15
+ ( [ , setValue ] ) => setValue ( ( value ) => value + 1 ) ,
16
+ ( ) => jest . runAllTimers ( ) ,
17
+ ] ) ;
31
18
32
19
expect ( debouncedSetValue ) . toBeInstanceOf ( Function ) ;
33
20
expect ( debouncedSetValue . flush ) . toBeInstanceOf ( Function ) ;
@@ -39,55 +26,46 @@ describe('useDebouncedUpdates hook', () => {
39
26
40
27
describe ( 'useDebouncedReducer hook' , ( ) => {
41
28
it ( 'is a debounced state updater' , ( ) => {
42
- const initialState = { } ;
43
- const newState = { } ;
29
+ const initialState = Symbol ( ) ;
30
+ const newState = Symbol ( ) ;
44
31
const reducer = jest . fn ( ( ) => newState ) ;
45
32
const initializerArg = initialState ;
46
33
const initializer = jest . fn ( ( state ) => state ) ;
47
- let stateA ;
48
- let stateB ;
49
- testHook (
50
- ( ) => useDebouncedReducer ( reducer , initializerArg , initializer , delay ) ,
51
- ( [ , dispatch ] ) => {
52
- dispatch ( ) ;
53
- } ,
54
- ( [ state ] ) => {
55
- stateA = state ;
56
- jest . runAllTimers ( ) ;
57
- } ,
58
- ( [ state ] ) => {
59
- stateB = state ;
60
- }
61
- ) ;
34
+
35
+ const [
36
+ [ stateA ] , [ stateB ] , [ stateC ] ,
37
+ ] = runHooks ( ( ) => useDebouncedReducer ( reducer , initializerArg , initializer , delay ) , [
38
+ ( [ , dispatch ] ) => dispatch ( ) ,
39
+ ( ) => jest . runAllTimers ( ) ,
40
+ ] ) ;
62
41
63
42
expect ( reducer ) . toHaveBeenCalledWith ( initialState , undefined ) ;
64
43
expect ( initializer ) . toHaveBeenCalledWith ( initializerArg ) ;
65
44
expect ( stateA ) . toBe ( initialState ) ;
66
- expect ( stateB ) . toBe ( newState ) ;
45
+ expect ( stateB ) . toBe ( initialState ) ;
46
+ expect ( stateC ) . toBe ( newState ) ;
67
47
} ) ;
68
48
} ) ;
69
49
70
50
describe ( 'useDebouncedState hook' , ( ) => {
71
51
it ( 'is a debounced state updater' , ( ) => {
72
- const initialValue = { } ;
73
- const newValue = { } ;
74
- let valueA ;
75
- let valueB ;
76
- testHook (
77
- ( ) => useDebouncedState ( initialValue , delay ) ,
52
+ const initialValue = Symbol ( ) ;
53
+ const newValue = Symbol ( ) ;
54
+
55
+ const [
56
+ [ valueA ] , [ valueB ] , [ valueC ] ,
57
+ ] = runHooks ( ( ) => useDebouncedState ( initialValue , delay ) , [
78
58
( [ , setValue ] ) => {
79
59
setValue ( newValue ) ;
80
60
} ,
81
- ( [ state ] ) => {
82
- valueA = state ;
61
+ ( ) => {
83
62
jest . runAllTimers ( ) ;
84
63
} ,
85
- ( [ state ] ) => {
86
- valueB = state ;
87
- }
88
- ) ;
64
+ ] ) ;
65
+
89
66
expect ( valueA ) . toBe ( initialValue ) ;
90
- expect ( valueB ) . toBe ( newValue ) ;
67
+ expect ( valueB ) . toBe ( initialValue ) ;
68
+ expect ( valueC ) . toBe ( newValue ) ;
91
69
} ) ;
92
70
} ) ;
93
71
} ) ;
0 commit comments