@@ -424,7 +424,7 @@ describe("Switch", () => {
424424 return OFF ;
425425 }
426426
427- test ( "sending events ", ( ) => {
427+ it ( "changes state and change count ", ( ) => {
428428 const machine = start ( Switch ) ;
429429 expect ( machine ) . toBeDefined ( ) ;
430430 expect ( machine . current ) . toEqual ( "OFF" ) ;
@@ -437,6 +437,30 @@ describe("Switch", () => {
437437 expect ( machine . current ) . toEqual ( "OFF" ) ;
438438 expect ( machine . changeCount ) . toEqual ( 2 ) ;
439439 } ) ;
440+
441+ it ( "emits events to signal" , ( ) => {
442+ const machine = start ( Switch ) ;
443+ expect ( machine ) . toBeDefined ( ) ;
444+ expect ( machine . signal ) . toBeInstanceOf ( AbortSignal ) ;
445+
446+ const eventListener = jest . fn ( ) ;
447+ machine . signal . addEventListener ( "StateChanged" , eventListener ) ;
448+
449+ machine . next ( "FLICK" ) ;
450+ expect ( machine . current ) . toEqual ( "ON" ) ;
451+ expect ( eventListener ) . toHaveBeenCalledTimes ( 1 ) ;
452+ expect ( eventListener ) . toHaveBeenLastCalledWith ( expect . objectContaining ( { type : "StateChanged" } ) ) ;
453+
454+ machine . next ( "FLICK" ) ;
455+ expect ( machine . current ) . toEqual ( "OFF" ) ;
456+ expect ( eventListener ) . toHaveBeenCalledTimes ( 2 ) ;
457+
458+ machine . signal . removeEventListener ( "StateChanged" , eventListener ) ;
459+
460+ machine . next ( "FLICK" ) ;
461+ expect ( machine . current ) . toEqual ( "ON" ) ;
462+ expect ( eventListener ) . toHaveBeenCalledTimes ( 2 ) ;
463+ } ) ;
440464} ) ;
441465
442466describe ( "Switch with symbol messages" , ( ) => {
0 commit comments