1- import ExtendedPromise = require ( "../" ) ;
1+ import ExtendedPromise from "../" ;
22
33function rejectIfResolves ( ) : Promise < unknown > {
44 return Promise . reject ( new Error ( "should not have resolved" ) ) ;
55}
66const fakeResolve = jest . fn ( ) . mockResolvedValue ( null ) ;
77const fakeReject = jest . fn ( ) ;
88
9- function FakePromise ( fn ) : void {
9+ function FakePromise ( fn : ( arg0 : jest . Mock , arg1 : jest . Mock ) => void ) : void {
1010 fn ( fakeResolve , fakeReject ) ;
1111}
12+
1213FakePromise . prototype . then = jest . fn ( ) ;
1314FakePromise . prototype . catch = jest . fn ( ) ;
1415FakePromise . resolve = jest . fn ( ) ;
@@ -41,7 +42,7 @@ describe("ExtendedPromise", () => {
4142 expect ( promise . isRejected ) . toBe ( false ) ;
4243 } ) ;
4344
44- it ( "updates status properties when it resolves" , ( ) => {
45+ it ( "updates status properties when it resolves" , async ( ) => {
4546 const promise = new ExtendedPromise ( ) ;
4647
4748 return promise . resolve ( ) . then ( ( ) => {
@@ -51,7 +52,7 @@ describe("ExtendedPromise", () => {
5152 } ) ;
5253 } ) ;
5354
54- it ( "updates status properties when it rejects" , ( ) => {
55+ it ( "updates status properties when it rejects" , async ( ) => {
5556 const promise = new ExtendedPromise ( ) ;
5657
5758 return promise . reject ( ) . catch ( ( ) => {
@@ -67,14 +68,14 @@ describe("ExtendedPromise", () => {
6768
6869 const promiseWithoutCatch = new ExtendedPromise ( ) ; // eslint-disable-line @typescript-eslint/no-unused-vars
6970
70- expect ( FakePromise . prototype . catch ) . toBeCalledTimes ( 0 ) ;
71+ expect ( FakePromise . prototype . catch ) . toHaveBeenCalledTimes ( 0 ) ;
7172
7273 // eslint-disable-next-line @typescript-eslint/no-unused-vars
7374 const promiseWithCatch = new ExtendedPromise ( {
7475 suppressUnhandledPromiseMessage : true ,
7576 } ) ;
7677
77- expect ( FakePromise . prototype . catch ) . toBeCalledTimes ( 1 ) ;
78+ expect ( FakePromise . prototype . catch ) . toHaveBeenCalledTimes ( 1 ) ;
7879 } ) ;
7980
8081 it ( "can suppress unhandled promise messages with ExtendedPromise default" , ( ) => {
@@ -84,7 +85,7 @@ describe("ExtendedPromise", () => {
8485
8586 const promise = new ExtendedPromise ( ) ; // eslint-disable-line @typescript-eslint/no-unused-vars
8687
87- expect ( FakePromise . prototype . catch ) . toBeCalledTimes ( 1 ) ;
88+ expect ( FakePromise . prototype . catch ) . toHaveBeenCalledTimes ( 1 ) ;
8889
8990 delete ExtendedPromise . suppressUnhandledPromiseMessage ;
9091 } ) ;
@@ -99,18 +100,18 @@ describe("ExtendedPromise", () => {
99100 suppressUnhandledPromiseMessage : false ,
100101 } ) ;
101102
102- expect ( FakePromise . prototype . catch ) . toBeCalledTimes ( 0 ) ;
103+ expect ( FakePromise . prototype . catch ) . toHaveBeenCalledTimes ( 0 ) ;
103104
104105 delete ExtendedPromise . suppressUnhandledPromiseMessage ;
105106 } ) ;
106107
107- it ( "can resolve with resolve function" , ( ) => {
108+ it ( "can resolve with resolve function" , async ( ) => {
108109 const promise = new ExtendedPromise ( ) ;
109110 const result = { foo : "bar" } ;
110111
111112 promise . resolve ( result ) ;
112113
113- return promise . then ( ( payload ) => {
114+ return promise . then ( ( payload : { foo : string } ) => {
114115 expect ( payload ) . toBe ( result ) ;
115116 } ) ;
116117 } ) ;
@@ -122,9 +123,12 @@ describe("ExtendedPromise", () => {
122123 expect ( promise . resolve ( result ) ) . toBe ( promise ) ;
123124 } ) ;
124125
125- it ( "can provide an onResolve function to run before it resolves" , ( ) => {
126+ it ( "can provide an onResolve function to run before it resolves" , async ( ) => {
126127 const promise = new ExtendedPromise ( {
127- onResolve ( result ) : unknown {
128+ onResolve ( result : {
129+ newProperty : string ;
130+ changedProperty : string ;
131+ } ) : unknown {
128132 result . newProperty = "new" ;
129133 result . changedProperty = "changed" ;
130134
@@ -137,16 +141,25 @@ describe("ExtendedPromise", () => {
137141 changedProperty : "unchanged" ,
138142 } ) ;
139143
140- return promise . then ( ( payload ) => {
141- expect ( payload . unchangedProperty ) . toBe ( "unchanged" ) ;
142- expect ( payload . changedProperty ) . toBe ( "changed" ) ;
143- expect ( payload . newProperty ) . toBe ( "new" ) ;
144- } ) ;
144+ return promise . then (
145+ ( payload : {
146+ newProperty : string ;
147+ changedProperty : string ;
148+ unchangedProperty : string ;
149+ } ) => {
150+ expect ( payload . unchangedProperty ) . toBe ( "unchanged" ) ;
151+ expect ( payload . changedProperty ) . toBe ( "changed" ) ;
152+ expect ( payload . newProperty ) . toBe ( "new" ) ;
153+ } ,
154+ ) ;
145155 } ) ;
146156
147- it ( "can provide an async onResolve function to run before it resolves" , ( ) => {
157+ it ( "can provide an async onResolve function to run before it resolves" , async ( ) => {
148158 const promise = new ExtendedPromise ( {
149- onResolve ( result ) : unknown {
159+ onResolve ( result : {
160+ newProperty : string ;
161+ changedProperty : string ;
162+ } ) : unknown {
150163 result . newProperty = "new" ;
151164
152165 return new Promise ( ( resolve ) => {
@@ -164,11 +177,17 @@ describe("ExtendedPromise", () => {
164177 changedProperty : "unchanged" ,
165178 } ) ;
166179
167- return promise . then ( ( payload ) => {
168- expect ( payload . unchangedProperty ) . toBe ( "unchanged" ) ;
169- expect ( payload . changedProperty ) . toBe ( "changed" ) ;
170- expect ( payload . newProperty ) . toBe ( "new" ) ;
171- } ) ;
180+ return promise . then (
181+ ( payload : {
182+ newProperty : string ;
183+ changedProperty : string ;
184+ unchangedProperty : string ;
185+ } ) => {
186+ expect ( payload . unchangedProperty ) . toBe ( "unchanged" ) ;
187+ expect ( payload . changedProperty ) . toBe ( "changed" ) ;
188+ expect ( payload . newProperty ) . toBe ( "new" ) ;
189+ } ,
190+ ) ;
172191 } ) ;
173192
174193 it ( "rejects if onResolve function rejects" , ( ) => {
@@ -178,12 +197,12 @@ describe("ExtendedPromise", () => {
178197
179198 promise . resolve ( { } ) ;
180199
181- return promise . then ( rejectIfResolves ) . catch ( ( err ) => {
200+ return promise . then ( rejectIfResolves ) . catch ( ( err : Error ) => {
182201 expect ( err . message ) . toBe ( "error" ) ;
183202 } ) ;
184203 } ) ;
185204
186- it ( "uses onReject function if onResolve function rejects" , ( ) => {
205+ it ( "uses onReject function if onResolve function rejects" , async ( ) => {
187206 const err = new Error ( "resolved error" ) ;
188207 const promise = new ExtendedPromise ( {
189208 onResolve : jest . fn ( ) . mockRejectedValue ( err ) ,
@@ -192,7 +211,7 @@ describe("ExtendedPromise", () => {
192211
193212 promise . resolve ( { } ) ;
194213
195- return promise . then ( ( payload ) => {
214+ return promise . then ( ( payload : { didError : boolean } ) => {
196215 expect ( payload . didError ) . toBe ( true ) ;
197216 } ) ;
198217 } ) ;
@@ -203,12 +222,12 @@ describe("ExtendedPromise", () => {
203222
204223 promise . reject ( error ) ;
205224
206- return promise . then ( rejectIfResolves ) . catch ( ( err ) => {
225+ return promise . then ( rejectIfResolves ) . catch ( ( err : Error ) => {
207226 expect ( err ) . toBe ( error ) ;
208227 } ) ;
209228 } ) ;
210229
211- it ( "returns itself when calling reject" , ( ) => {
230+ it ( "returns itself when calling reject" , async ( ) => {
212231 const promise = new ExtendedPromise ( ) ;
213232
214233 expect ( promise . reject ( new Error ( "some error" ) ) ) . toBe ( promise ) ;
@@ -225,7 +244,7 @@ describe("ExtendedPromise", () => {
225244
226245 promise . reject ( new Error ( "error" ) ) ;
227246
228- return promise . then ( rejectIfResolves ) . catch ( ( err ) => {
247+ return promise . then ( rejectIfResolves ) . catch ( ( err : Error ) => {
229248 expect ( err . message ) . toBe ( "onReject error" ) ;
230249 } ) ;
231250 } ) ;
@@ -243,19 +262,19 @@ describe("ExtendedPromise", () => {
243262
244263 promise . reject ( new Error ( "error" ) ) ;
245264
246- return promise . then ( rejectIfResolves ) . catch ( ( err ) => {
265+ return promise . then ( rejectIfResolves ) . catch ( ( err : Error ) => {
247266 expect ( err . message ) . toBe ( "onReject error" ) ;
248267 } ) ;
249268 } ) ;
250269
251- it ( "resolves if onReject function resolves" , ( ) => {
270+ it ( "resolves if onReject function resolves" , async ( ) => {
252271 const promise = new ExtendedPromise ( {
253272 onReject : jest . fn ( ) . mockResolvedValue ( { ok : "ok" } ) ,
254273 } ) ;
255274
256275 promise . reject ( new Error ( "error" ) ) ;
257276
258- return promise . then ( ( result ) => {
277+ return promise . then ( ( result : { ok : string } ) => {
259278 expect ( result . ok ) . toBe ( "ok" ) ;
260279 expect ( promise . isRejected ) . toBe ( false ) ;
261280 expect ( promise . isResolved ) . toBe ( true ) ;
@@ -284,26 +303,26 @@ describe("ExtendedPromise", () => {
284303 promise . resolve ( "1" ) ;
285304
286305 return promise
287- . then ( ( result ) => {
306+ . then ( ( result : string ) => {
288307 expect ( result ) . toBe ( "1" ) ;
289308
290309 promise . resolve ( "2" ) ;
291310
292311 return promise ;
293312 } )
294- . then ( ( result ) => {
313+ . then ( ( result : string ) => {
295314 expect ( result ) . toBe ( "1" ) ;
296315
297316 promise . reject ( new Error ( "foo" ) ) ;
298317
299318 return promise ;
300319 } )
301- . then ( ( result ) => {
320+ . then ( ( result : string ) => {
302321 expect ( result ) . toBe ( "1" ) ;
303322 } ) ;
304323 } ) ;
305324
306- it ( "will not update status properties when it has already rejected" , ( ) => {
325+ it ( "will not update status properties when it has already rejected" , async ( ) => {
307326 const promise = new ExtendedPromise ( ) ;
308327
309328 promise . reject ( ) ;
@@ -331,23 +350,23 @@ describe("ExtendedPromise", () => {
331350
332351 return promise
333352 . then ( rejectIfResolves )
334- . catch ( ( result ) => {
353+ . catch ( ( result : string ) => {
335354 expect ( result ) . toBe ( error ) ;
336355
337356 promise . reject ( new Error ( "2" ) ) ;
338357
339358 return promise ;
340359 } )
341360 . then ( rejectIfResolves )
342- . catch ( ( result ) => {
361+ . catch ( ( result : string ) => {
343362 expect ( result ) . toBe ( error ) ;
344363
345364 promise . resolve ( "3" ) ;
346365
347366 return promise ;
348367 } )
349368 . then ( rejectIfResolves )
350- . catch ( ( result ) => {
369+ . catch ( ( result : string ) => {
351370 expect ( result ) . toBe ( error ) ;
352371 } ) ;
353372 } ) ;
@@ -363,13 +382,13 @@ describe("ExtendedPromise", () => {
363382 } ) ;
364383
365384 return rejectingPromise
366- . catch ( ( e ) => {
385+ . catch ( ( e : Error ) => {
367386 expect ( e ) . toBe ( error ) ;
368387 didError = true ;
369388
370389 return resolvingPromise ;
371390 } )
372- . then ( ( val ) => {
391+ . then ( ( val : string ) => {
373392 expect ( didError ) . toBe ( true ) ;
374393 expect ( val ) . toBe ( "value" ) ;
375394 } ) ;
@@ -384,7 +403,7 @@ describe("ExtendedPromise", () => {
384403 ExtendedPromise . setPromise ( FakePromise as any ) ;
385404
386405 ExtendedPromise . resolve ( "foo" ) ;
387- expect ( FakePromise . resolve ) . toBeCalledWith ( "foo" ) ;
406+ expect ( FakePromise . resolve ) . toHaveBeenCalledWith ( "foo" ) ;
388407
389408 const promise = new ExtendedPromise ( ) ;
390409
@@ -393,8 +412,8 @@ describe("ExtendedPromise", () => {
393412 setTimeout ( ( ) => {
394413 // have to do this in a setTimeout so that the mock promises
395414 // have time to resolve
396- expect ( fakeResolve ) . toBeCalledTimes ( 1 ) ;
397- expect ( fakeResolve ) . toBeCalledWith ( "value" ) ;
415+ expect ( fakeResolve ) . toHaveBeenCalledTimes ( 1 ) ;
416+ expect ( fakeResolve ) . toHaveBeenCalledWith ( "value" ) ;
398417
399418 done ( ) ;
400419 } , 1 ) ;
0 commit comments