@@ -5,16 +5,7 @@ import { initAppDb, getAppDb } from '../db';
55import { registerHandler , getHandler } from '../registrar' ;
66import { regGlobalInterceptor , clearGlobalInterceptors } from '../settings' ;
77import type { Interceptor , Context } from '../types' ;
8-
9- // Helper to wait for all scheduled callbacks to complete
10- const waitForScheduled = async ( ) => {
11- // Wait for multiple event loop cycles to ensure all scheduling mechanisms complete
12- if ( typeof ( globalThis as any ) . setImmediate === 'function' ) {
13- await new Promise ( resolve => ( globalThis as any ) . setImmediate ( ( ) => resolve ( undefined ) ) ) ;
14- }
15- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
16- await Promise . resolve ( ) ;
17- } ;
8+ import { waitForScheduled } from './test-utils' ;
189
1910// Type definitions for testing type-safe event handlers
2011interface EventTestState {
@@ -296,7 +287,7 @@ describe('Type-safe Event Handlers', () => {
296287 dispatch ( [ 'increment-counter' ] ) ;
297288
298289 // Wait for async processing
299- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
290+ await waitForScheduled ( ) ;
300291
301292 const db = getAppDb < EventTestState > ( ) ;
302293 expect ( db . counter ) . toBe ( 1 ) ;
@@ -309,7 +300,7 @@ describe('Type-safe Event Handlers', () => {
309300 } ) ;
310301
311302 dispatch ( [ 'add-message' , 'Hello World' ] ) ;
312- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
303+ await waitForScheduled ( ) ;
313304
314305 const db = getAppDb < EventTestState > ( ) ;
315306 expect ( db . messages ) . toContain ( 'Hello World' ) ;
@@ -324,7 +315,7 @@ describe('Type-safe Event Handlers', () => {
324315 } ) ;
325316
326317 dispatch ( [ 'update-user' , 'John Doe' , false ] ) ;
327- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
318+ await waitForScheduled ( ) ;
328319
329320 const db = getAppDb < EventTestState > ( ) ;
330321 expect ( db . user . name ) . toBe ( 'John Doe' ) ;
@@ -339,14 +330,14 @@ describe('Type-safe Event Handlers', () => {
339330
340331 // Toggle from light to dark
341332 dispatch ( [ 'toggle-theme' ] ) ;
342- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
333+ await waitForScheduled ( ) ;
343334
344335 let db = getAppDb < EventTestState > ( ) ;
345336 expect ( db . settings . theme ) . toBe ( 'dark' ) ;
346337
347338 // Toggle back to light
348339 dispatch ( [ 'toggle-theme' ] ) ;
349- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
340+ await waitForScheduled ( ) ;
350341
351342 db = getAppDb < EventTestState > ( ) ;
352343 expect ( db . settings . theme ) . toBe ( 'light' ) ;
@@ -363,7 +354,7 @@ describe('Type-safe Event Handlers', () => {
363354 } ) ;
364355
365356 dispatch ( [ 'complex-update' , 42 , 'Complex User' , [ 'msg1' , 'msg2' , 'msg3' ] ] ) ;
366- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
357+ await waitForScheduled ( ) ;
367358
368359 const db = getAppDb < EventTestState > ( ) ;
369360 expect ( db . user . id ) . toBe ( 42 ) ;
@@ -472,7 +463,7 @@ describe('regEvent with cofx', () => {
472463 } , [ [ 'now' ] ] ) ;
473464
474465 dispatch ( [ 'test-now-cofx' ] ) ;
475- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
466+ await waitForScheduled ( ) ;
476467
477468 const db = getAppDb ( ) ;
478469 expect ( db . timestamp ) . toBeGreaterThan ( 0 ) ;
@@ -489,7 +480,7 @@ describe('regEvent with cofx', () => {
489480 } , [ [ 'random' ] ] ) ;
490481
491482 dispatch ( [ 'test-random-cofx' ] ) ;
492- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
483+ await waitForScheduled ( ) ;
493484
494485 const db = getAppDb ( ) ;
495486 expect ( db . randomValue ) . toBeGreaterThanOrEqual ( 0 ) ;
@@ -507,7 +498,7 @@ describe('regEvent with cofx', () => {
507498 } ) ;
508499
509500 dispatch ( [ 'test-db-cofx' ] ) ;
510- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
501+ await waitForScheduled ( ) ;
511502
512503 const db = getAppDb ( ) ;
513504 expect ( db . counter ) . toBe ( 5 ) ;
@@ -527,7 +518,7 @@ describe('regEvent with cofx', () => {
527518 } , [ [ 'now' ] , [ 'random' ] ] ) ;
528519
529520 dispatch ( [ 'test-multiple-cofx' ] ) ;
530- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
521+ await waitForScheduled ( ) ;
531522
532523 const db = getAppDb ( ) ;
533524 expect ( db . timestamp ) . toBeGreaterThan ( 0 ) ;
@@ -566,7 +557,7 @@ describe('regEvent with cofx', () => {
566557 } , [ [ 'now' ] ] , [ beforeInterceptor , afterInterceptor ] ) ;
567558
568559 dispatch ( [ 'test-cofx-with-interceptors' ] ) ;
569- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
560+ await waitForScheduled ( ) ;
570561
571562 const db = getAppDb ( ) ;
572563 expect ( db . timestamp ) . toBeGreaterThan ( 0 ) ;
@@ -594,7 +585,7 @@ describe('regEvent with cofx', () => {
594585 } , [ testInterceptor ] ) ;
595586
596587 dispatch ( [ 'test-backward-compat' ] ) ;
597- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
588+ await waitForScheduled ( ) ;
598589
599590 const db = getAppDb ( ) ;
600591 expect ( db . counter ) . toBe ( 1 ) ;
@@ -608,7 +599,7 @@ describe('regEvent with cofx', () => {
608599 } ) ;
609600
610601 dispatch ( [ 'test-handler-only' ] ) ;
611- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
602+ await waitForScheduled ( ) ;
612603
613604 const db = getAppDb ( ) ;
614605 expect ( db . counter ) . toBe ( 2 ) ;
@@ -623,7 +614,7 @@ describe('regEvent with cofx', () => {
623614 } , [ [ 'now' , 'extra' , 'invalid' ] ] ) ;
624615
625616 dispatch ( [ 'test-invalid-cofx' ] ) ;
626- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
617+ await waitForScheduled ( ) ;
627618
628619 // Verify warning was logged
629620 expectLogCall (
@@ -649,7 +640,7 @@ describe('regEvent with cofx', () => {
649640 } , [ [ 'custom-test' ] ] ) ;
650641
651642 dispatch ( [ 'test-custom-cofx' ] ) ;
652- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
643+ await waitForScheduled ( ) ;
653644
654645 const db = getAppDb ( ) ;
655646 expect ( db . messages ) . toContain ( 'default-custom-value' ) ;
@@ -669,7 +660,7 @@ describe('regEvent with cofx', () => {
669660 } , [ [ 'custom-with-value' , 'test-input' ] ] ) ;
670661
671662 dispatch ( [ 'test-custom-cofx-with-value' ] ) ;
672- await new Promise ( resolve => setTimeout ( resolve , 0 ) ) ;
663+ await waitForScheduled ( ) ;
673664
674665 const db = getAppDb ( ) ;
675666 expect ( db . messages ) . toContain ( 'processed-test-input' ) ;
@@ -839,6 +830,8 @@ describe('regEvent with cofx', () => {
839830
840831 dispatch ( [ 'test-fx-modification' ] ) ;
841832 await waitForScheduled ( ) ;
833+ // Wait for the dispatched effects to complete
834+ await waitForScheduled ( ) ;
842835
843836 const db = getAppDb ( ) ;
844837 expect ( db . primaryProcessed ) . toBe ( true ) ;
0 commit comments