1
1
/// <reference path="../index.d.ts" />
2
2
import { renderHook , act } from '@testing-library/react-hooks'
3
- import { createStore , useModel } from '../../src'
3
+ import { createStore , useModel , Model } from '../../src'
4
4
5
5
describe ( 'lane model' , ( ) => {
6
6
test ( 'single model' , async ( ) => {
@@ -14,16 +14,49 @@ describe('lane model', () => {
14
14
renderTimes += 1
15
15
return { renderTimes, count, setCount }
16
16
} )
17
- await act ( async ( ) => {
17
+
18
+ act ( ( ) => {
19
+ expect ( result . current . renderTimes ) . toEqual ( 1 )
20
+ expect ( result . current . count ) . toBe ( 1 )
21
+ } )
22
+
23
+ act ( ( ) => {
24
+ result . current . setCount ( 5 )
25
+ } )
26
+
27
+ act ( ( ) => {
28
+ expect ( renderTimes ) . toEqual ( 2 )
29
+ expect ( result . current . count ) . toBe ( 5 )
30
+ } )
31
+ } )
32
+
33
+ test ( 'create store with namespace' , async ( ) => {
34
+ const { useStore } = Model ( { } )
35
+ createStore ( 'Shared' , ( ) => {
36
+ const [ count , setCount ] = useModel ( 1 )
37
+ return { count, setCount }
38
+ } )
39
+
40
+ let renderTimes = 0
41
+ const { result } = renderHook ( ( ) => {
42
+ // @ts -ignore
43
+ const { count, setCount } = useStore ( 'Shared' )
44
+ console . group ( 'count: ' , count )
45
+ console . group ( 'setCount: ' , setCount )
46
+ renderTimes += 1
47
+ return { renderTimes, count, setCount }
48
+ } )
49
+ act ( ( ) => {
18
50
expect ( renderTimes ) . toEqual ( 1 )
19
51
expect ( result . current . count ) . toBe ( 1 )
20
52
} )
21
53
22
- await act ( async ( ) => {
23
- await result . current . setCount ( 5 )
54
+ act ( ( ) => {
55
+ // @ts -ignore
56
+ result . current . setCount ( 5 )
24
57
} )
25
58
26
- await act ( ( ) => {
59
+ act ( ( ) => {
27
60
expect ( renderTimes ) . toEqual ( 2 )
28
61
expect ( result . current . count ) . toBe ( 5 )
29
62
} )
@@ -40,16 +73,17 @@ describe('lane model', () => {
40
73
renderTimes += 1
41
74
return { renderTimes, count, setCount }
42
75
} )
43
- await act ( async ( ) => {
76
+
77
+ act ( ( ) => {
44
78
expect ( renderTimes ) . toEqual ( 1 )
45
79
expect ( result . current . count ) . toBe ( 1 )
46
80
} )
47
81
48
- await act ( async ( ) => {
49
- await result . current . setCount ( ( count ) => count + 1 )
82
+ act ( ( ) => {
83
+ result . current . setCount ( ( count ) => count + 1 )
50
84
} )
51
85
52
- await act ( ( ) => {
86
+ act ( ( ) => {
53
87
expect ( renderTimes ) . toEqual ( 2 )
54
88
expect ( result . current . count ) . toBe ( 2 )
55
89
} )
@@ -67,25 +101,25 @@ describe('lane model', () => {
67
101
renderTimes += 1
68
102
return { renderTimes, count, setCount }
69
103
} )
70
- await act ( async ( ) => {
104
+ act ( ( ) => {
71
105
expect ( renderTimes ) . toEqual ( 1 )
72
106
expect ( result . current . count ) . toBe ( true )
73
107
} )
74
108
75
- await act ( async ( ) => {
76
- await result . current . setCount ( false )
109
+ act ( ( ) => {
110
+ result . current . setCount ( false )
77
111
} )
78
112
79
- await act ( ( ) => {
113
+ act ( ( ) => {
80
114
expect ( renderTimes ) . toEqual ( 2 )
81
115
expect ( result . current . count ) . toBe ( false )
82
116
} )
83
117
84
- await act ( ( ) => {
118
+ act ( ( ) => {
85
119
rerender ( )
86
120
} )
87
121
88
- await act ( ( ) => {
122
+ act ( ( ) => {
89
123
expect ( renderTimes ) . toEqual ( 3 )
90
124
expect ( result . current . count ) . toBe ( false )
91
125
} )
@@ -103,26 +137,26 @@ describe('lane model', () => {
103
137
renderTimes += 1
104
138
return { renderTimes, count, setCount, name, setName }
105
139
} )
106
- await act ( async ( ) => {
140
+ act ( ( ) => {
107
141
expect ( renderTimes ) . toEqual ( 1 )
108
142
expect ( result . current . count ) . toBe ( 1 )
109
143
} )
110
144
111
- await act ( async ( ) => {
112
- await result . current . setCount ( 5 )
145
+ act ( ( ) => {
146
+ result . current . setCount ( 5 )
113
147
} )
114
148
115
- await act ( ( ) => {
149
+ act ( ( ) => {
116
150
expect ( renderTimes ) . toEqual ( 2 )
117
151
expect ( result . current . count ) . toBe ( 5 )
118
152
expect ( result . current . name ) . toBe ( 'Jane' )
119
153
} )
120
154
121
- await act ( async ( ) => {
122
- await result . current . setName ( 'Bob' )
155
+ act ( ( ) => {
156
+ result . current . setName ( 'Bob' )
123
157
} )
124
158
125
- await act ( ( ) => {
159
+ act ( ( ) => {
126
160
expect ( renderTimes ) . toEqual ( 3 )
127
161
expect ( result . current . name ) . toBe ( 'Bob' )
128
162
expect ( result . current . count ) . toBe ( 5 )
@@ -147,26 +181,27 @@ describe('lane model', () => {
147
181
renderTimes += 1
148
182
return { renderTimes, count, setCount, name, setName }
149
183
} )
150
- await act ( async ( ) => {
184
+
185
+ act ( ( ) => {
151
186
expect ( renderTimes ) . toEqual ( 1 )
152
187
expect ( result . current . count ) . toBe ( 1 )
153
188
} )
154
189
155
- await act ( async ( ) => {
156
- await result . current . setCount ( 5 )
190
+ act ( ( ) => {
191
+ result . current . setCount ( 5 )
157
192
} )
158
193
159
- await act ( ( ) => {
194
+ act ( ( ) => {
160
195
expect ( renderTimes ) . toEqual ( 2 )
161
196
expect ( result . current . count ) . toBe ( 5 )
162
197
expect ( result . current . name ) . toBe ( 'Jane' )
163
198
} )
164
199
165
- await act ( async ( ) => {
166
- await result . current . setName ( 'Bob' )
200
+ act ( ( ) => {
201
+ result . current . setName ( 'Bob' )
167
202
} )
168
203
169
- await act ( ( ) => {
204
+ act ( ( ) => {
170
205
expect ( renderTimes ) . toEqual ( 3 )
171
206
expect ( result . current . name ) . toBe ( 'Bob' )
172
207
expect ( result . current . count ) . toBe ( 5 )
@@ -190,16 +225,16 @@ describe('lane model', () => {
190
225
renderTimes += 1
191
226
return { renderTimes, count, setCount }
192
227
} )
193
- await act ( async ( ) => {
228
+ act ( ( ) => {
194
229
expect ( renderTimes ) . toEqual ( 2 )
195
230
expect ( mirrorResult . current . count ) . toBe ( 1 )
196
231
} )
197
232
198
- await act ( async ( ) => {
199
- await result . current . setCount ( 5 )
233
+ act ( ( ) => {
234
+ result . current . setCount ( 5 )
200
235
} )
201
236
202
- await act ( ( ) => {
237
+ act ( ( ) => {
203
238
expect ( renderTimes ) . toEqual ( 4 )
204
239
expect ( mirrorResult . current . count ) . toBe ( 5 )
205
240
} )
@@ -234,46 +269,46 @@ describe('lane model', () => {
234
269
renderTimes += 1
235
270
return { renderTimes, data, setName, name, status, set }
236
271
} )
237
- await act ( async ( ) => {
272
+ act ( ( ) => {
238
273
expect ( renderTimes ) . toEqual ( 2 )
239
274
expect ( mirrorResult . current . name ) . toBe ( 'Jane' )
240
275
} )
241
276
242
- await act ( async ( ) => {
243
- await result . current . setData ( { status : 'SUCCESS' } )
277
+ act ( ( ) => {
278
+ result . current . setData ( { status : 'SUCCESS' } )
244
279
} )
245
280
246
281
// Both component will rerender
247
282
// TODO: Only rerender second FC
248
- await act ( ( ) => {
283
+ act ( ( ) => {
249
284
expect ( renderTimes ) . toEqual ( 4 )
250
285
expect ( mirrorResult . current . data ) . toEqual ( { status : 'SUCCESS' } )
251
286
} )
252
287
253
- await act ( async ( ) => {
254
- await mirrorResult . current . setName ( 'Bob' )
288
+ act ( ( ) => {
289
+ mirrorResult . current . setName ( 'Bob' )
255
290
} )
256
291
257
- await act ( ( ) => {
292
+ act ( ( ) => {
258
293
expect ( renderTimes ) . toEqual ( 6 )
259
294
expect ( mirrorResult . current . name ) . toBe ( 'Bob' )
260
295
expect ( mirrorResult . current . status ) . toBe ( false )
261
296
} )
262
297
263
- await act ( async ( ) => {
264
- await mirrorResult . current . set ( true )
298
+ act ( ( ) => {
299
+ mirrorResult . current . set ( true )
265
300
} )
266
301
267
- await act ( ( ) => {
302
+ act ( ( ) => {
268
303
expect ( renderTimes ) . toEqual ( 7 )
269
304
expect ( mirrorResult . current . status ) . toBe ( true )
270
305
} )
271
306
272
- await act ( async ( ) => {
273
- await mirrorResult . current . setName ( 'Jane' )
307
+ act ( ( ) => {
308
+ mirrorResult . current . setName ( 'Jane' )
274
309
} )
275
310
276
- await act ( ( ) => {
311
+ act ( ( ) => {
277
312
expect ( renderTimes ) . toEqual ( 9 )
278
313
expect ( mirrorResult . current . name ) . toBe ( 'Jane' )
279
314
expect ( mirrorResult . current . status ) . toBe ( true )
0 commit comments