1
1
import 'regenerator-runtime/runtime' ;
2
2
import { isDone , isLoading , isReloading , LState , useLoadingSteps } from "../index" ;
3
3
import React , { useMemo } from "react" ;
4
- import { createTestComponent , noop , wait } from "../test_util" ;
4
+ import { createTestComponent , neverCalled , wait } from "../test_util" ;
5
5
6
6
describe ( 'no delay' , ( ) => {
7
7
it ( 'initial loaded = true' , async ( ) => {
@@ -37,7 +37,7 @@ describe('no delay', () => {
37
37
38
38
it ( 'single step' , async ( ) => {
39
39
let expectedState : LState ;
40
- let setStepDoneCb : ( s : string ) => void = noop ;
40
+ let setStepDoneCb : ( s : string ) => void = neverCalled ;
41
41
42
42
// Do before creating test component
43
43
const doSteps = async ( ) => {
@@ -58,12 +58,13 @@ describe('no delay', () => {
58
58
it ( 'multiple steps' , async ( ) => {
59
59
const stepCnt = 3 ;
60
60
let expectedState : LState ;
61
- let setStepDoneCb : ( s : string ) => void = noop ;
61
+ let setStepDoneCb : ( s : string ) => void = neverCalled ;
62
62
63
63
// Do before creating test component
64
64
const doSteps = async ( ) => {
65
65
expectedState = LState . LOADING ;
66
66
67
+ await wait ( 10 ) ;
67
68
for ( let i = 0 ; i < stepCnt ; i ++ ) {
68
69
if ( i == stepCnt - 1 ) {
69
70
expectedState = LState . DONE ;
@@ -80,6 +81,39 @@ describe('no delay', () => {
80
81
useMemo ( ( ) => expect ( loadingState ) . toEqual ( expectedState ) , [ loadingState ] ) ;
81
82
} ) ;
82
83
} ) ;
84
+
85
+ it ( 'multiple steps: skip step' , async ( ) => {
86
+ const stepCnt = 3 ;
87
+ let expectedState : LState ;
88
+ let setStepDoneCb : ( s : string ) => void = neverCalled ;
89
+ let skipStepCb : ( s : string ) => void = neverCalled ;
90
+
91
+ // Do before creating test component
92
+ const doSteps = async ( ) => {
93
+ expectedState = LState . LOADING ;
94
+
95
+ await wait ( 10 ) ;
96
+ for ( let i = 0 ; i < stepCnt ; i ++ ) {
97
+ if ( i == stepCnt - 1 ) {
98
+ expectedState = LState . DONE ;
99
+ }
100
+ if ( i % 2 === 0 ) {
101
+ setStepDoneCb ( `step${ i + 1 } ` ) ;
102
+ } else {
103
+ skipStepCb ( `step${ i + 1 } ` ) ;
104
+ }
105
+ await wait ( 10 ) ; // pause shortly for event loop to run component logics
106
+ }
107
+ }
108
+ doSteps ( ) . then ( ) ;
109
+
110
+ await createTestComponent ( ( ) => {
111
+ const [ loadingState , setStepDone , _ , skipStep ] = useLoadingSteps ( stepCnt , false ) ;
112
+ setStepDoneCb = setStepDone ;
113
+ skipStepCb = skipStep ;
114
+ useMemo ( ( ) => expect ( loadingState ) . toEqual ( expectedState ) , [ loadingState ] ) ;
115
+ } ) ;
116
+ } ) ;
83
117
} ) ;
84
118
85
119
describe ( 'with render delay' , ( ) => {
@@ -96,7 +130,7 @@ describe('with render delay', () => {
96
130
97
131
it ( 'single step' , async ( ) => {
98
132
let expectedState : LState ;
99
- let setStepDoneCb : ( s : string ) => void = noop ;
133
+ let setStepDoneCb : ( s : string ) => void = neverCalled ;
100
134
101
135
// Do before creating test component
102
136
const doSteps = async ( ) => {
@@ -122,7 +156,7 @@ describe('with render delay', () => {
122
156
123
157
it ( 'multiple steps' , async ( ) => {
124
158
let expectedState : LState ;
125
- let setStepDoneCb : ( s : string ) => void = noop ;
159
+ let setStepDoneCb : ( s : string ) => void = neverCalled ;
126
160
127
161
// Do before creating test component
128
162
const doSteps = async ( ) => {
@@ -151,7 +185,7 @@ describe('with render delay', () => {
151
185
152
186
it ( 'multiple steps: done before render delay timeout' , async ( ) => {
153
187
let expectedState : LState ;
154
- let setStepDoneCb : ( s : string ) => void = noop ;
188
+ let setStepDoneCb : ( s : string ) => void = neverCalled ;
155
189
156
190
// Do before creating test component
157
191
const doSteps = async ( ) => {
@@ -183,8 +217,8 @@ describe('with reset delay', () => {
183
217
184
218
it ( 'multiple steps' , async ( ) => {
185
219
let expectedState : LState ;
186
- let setStepDoneCb : ( s : string ) => void = noop ;
187
- let resetLoadingCb : ( ) => void = noop ;
220
+ let setStepDoneCb : ( s : string ) => void = neverCalled ;
221
+ let resetLoadingCb : ( ) => void = neverCalled ;
188
222
189
223
// Do before creating test component
190
224
const doSteps = async ( ) => {
@@ -228,8 +262,8 @@ describe('with render delay + reset delay', () => {
228
262
229
263
it ( 'multiple steps' , async ( ) => {
230
264
let expectedState : LState ;
231
- let setStepDoneCb : ( s : string ) => void = noop ;
232
- let resetLoadingCb : ( ) => void = noop ;
265
+ let setStepDoneCb : ( s : string ) => void = neverCalled ;
266
+ let resetLoadingCb : ( ) => void = neverCalled ;
233
267
234
268
// Do before creating test component
235
269
const doSteps = async ( ) => {
@@ -276,7 +310,7 @@ describe('with done delay', () => {
276
310
277
311
it ( 'multiple steps' , async ( ) => {
278
312
let expectedState : LState ;
279
- let setStepDoneCb : ( s : string ) => void = noop ;
313
+ let setStepDoneCb : ( s : string ) => void = neverCalled ;
280
314
281
315
// Do before creating test component
282
316
const doSteps = async ( ) => {
0 commit comments