11import { DeferredPromise } from "../../src/deferred-promise.js" ;
22
33describe ( "DeferredPromise" , ( ) => {
4+ beforeEach ( ( ) => {
5+ jest . useFakeTimers ( ) ;
6+ } ) ;
7+ afterEach ( ( ) => {
8+ jest . useRealTimers ( ) ;
9+ } ) ;
10+
411 it ( "should resolve with the correct value" , async ( ) => {
512 const deferred = new DeferredPromise < string > ( ( resolve ) => {
613 resolve ( "resolved value" ) ;
@@ -18,44 +25,47 @@ describe("DeferredPromise", () => {
1825 } ) ;
1926
2027 it ( "should timeout if not resolved or rejected within the specified time" , async ( ) => {
21- const deferred = new DeferredPromise < string > ( ( ) => {
22- // Do not resolve or reject
23- } , 10 ) ;
28+ const deferred = new DeferredPromise < string > (
29+ ( ) => {
30+ // Do not resolve or reject
31+ } ,
32+ { timeout : 100 , onTimeout : ( resolve , reject ) => reject ( new Error ( "Promise timed out" ) ) }
33+ ) ;
34+
35+ jest . advanceTimersByTime ( 100 ) ;
2436
2537 await expect ( deferred ) . rejects . toThrow ( "Promise timed out" ) ;
2638 } ) ;
2739
2840 it ( "should clear the timeout when resolved" , async ( ) => {
29- jest . useFakeTimers ( ) ;
30-
31- const deferred = new DeferredPromise < string > ( ( resolve ) => {
32- setTimeout ( ( ) => resolve ( "resolved value" ) , 100 ) ;
33- } , 200 ) ;
41+ const deferred = new DeferredPromise < string > (
42+ ( resolve ) => {
43+ setTimeout ( ( ) => resolve ( "resolved value" ) , 100 ) ;
44+ } ,
45+ { timeout : 200 }
46+ ) ;
3447
3548 const promise = deferred . then ( ( value ) => {
3649 expect ( value ) . toBe ( "resolved value" ) ;
3750 } ) ;
3851
3952 jest . advanceTimersByTime ( 100 ) ;
4053 await promise ;
41-
42- jest . useRealTimers ( ) ;
4354 } ) ;
4455
4556 it ( "should clear the timeout when rejected" , async ( ) => {
46- jest . useFakeTimers ( ) ;
47-
48- const deferred = new DeferredPromise < string > ( ( _ , reject ) => {
49- setTimeout ( ( ) => reject ( new Error ( "rejected error" ) ) , 100 ) ;
50- } , 200 ) ;
57+ const deferred = new DeferredPromise < string > (
58+ ( _ , reject ) => {
59+ setTimeout ( ( ) => reject ( new Error ( "rejected error" ) ) , 100 ) ;
60+ } ,
61+ { timeout : 200 , onTimeout : ( resolve , reject ) => reject ( new Error ( "Promise timed out" ) ) }
62+ ) ;
5163
5264 const promise = deferred . catch ( ( error ) => {
5365 expect ( error ) . toEqual ( new Error ( "rejected error" ) ) ;
5466 } ) ;
5567
5668 jest . advanceTimersByTime ( 100 ) ;
5769 await promise ;
58-
59- jest . useRealTimers ( ) ;
6070 } ) ;
6171} ) ;
0 commit comments