@@ -28,34 +28,34 @@ function ResponseWrapper (body, init) {
28
28
return new ActualResponse ( body , init )
29
29
}
30
30
31
- const isAPromise = obj => obj && obj . then && ( typeof obj . then === 'function' )
31
+ const isFn = unknown => typeof unknown === 'function'
32
32
33
- const resolve = ( bodyOrFunction , init ) => ( ) => isAPromise ( bodyOrFunction ) ?
34
- bodyOrFunction . then ( ( res ) => new ResponseWrapper ( res . body , res . init ) )
35
- : Promise . resolve ( new ResponseWrapper ( bodyOrFunction , init ) )
33
+ const normalizeResponse = ( bodyOrFunction , init ) => ( ) => isFn ( bodyOrFunction ) ?
34
+ bodyOrFunction ( ) . then ( ( { body, init} ) => new ResponseWrapper ( body , init ) ) :
35
+ Promise . resolve ( new ResponseWrapper ( bodyOrFunction , init ) )
36
+
37
+ const normalizeError = errorOrFunction => ( ) => isFn ( errorOrFunction ) ?
38
+ errorOrFunction :
39
+ ( ) => Promise . reject ( errorOrFunction )
36
40
37
41
const fetch = jest . fn ( )
38
42
fetch . Headers = Headers
39
43
fetch . Response = ResponseWrapper
40
44
fetch . Request = Request
41
- fetch . mockResponse = ( bodyOrFunction , init ) => fetch . mockImplementation ( resolve ( bodyOrFunction , init ) )
45
+ fetch . mockResponse = ( bodyOrFunction , init ) => fetch . mockImplementation ( normalizeResponse ( bodyOrFunction , init ) )
42
46
43
- fetch . mockReject = error => {
44
- return fetch . mockImplementation ( ( ) => Promise . reject ( error ) )
45
- }
47
+ fetch . mockReject = errorOrFunction => fetch . mockImplementation ( normalizeError ( errorOrFunction ) )
46
48
47
- const mockResponseOnce = ( bodyOrFunction , init ) => fetch . mockImplementationOnce ( resolve ( bodyOrFunction , init ) )
49
+ const mockResponseOnce = ( bodyOrFunction , init ) => fetch . mockImplementationOnce ( normalizeResponse ( bodyOrFunction , init ) )
48
50
49
51
fetch . mockResponseOnce = mockResponseOnce
50
52
51
53
fetch . once = mockResponseOnce
52
54
53
- fetch . mockRejectOnce = errorOrPromise => {
54
- return fetch . mockImplementationOnce ( ( ) => isAPromise ( errorOrPromise ) ? errorOrPromise : Promise . reject ( error ) )
55
- }
55
+ fetch . mockRejectOnce = errorOrFunction => fetch . mockImplementationOnce ( normalizeError ( errorOrFunction ) )
56
56
57
57
fetch . mockResponses = ( ...responses ) => {
58
- responses . forEach ( ( [ bodyOrFunction , init ] ) => fetch . mockImplementationOnce ( resolve ( bodyOrFunction , init ) ) )
58
+ responses . forEach ( ( [ bodyOrFunction , init ] ) => fetch . mockImplementationOnce ( normalizeResponse ( bodyOrFunction , init ) ) )
59
59
return fetch
60
60
}
61
61
0 commit comments