@@ -664,11 +664,19 @@ describe("accumulate()", () => {
664664 const eventTarget = ( new AbortController ( ) ) . signal ;
665665 const machine = start ( Machine . bind ( null , eventTarget ) ) ;
666666
667+ const stateChangedListener = jest . fn ( ) ;
668+ const accumulationsChangedListener = jest . fn ( ) ;
669+ machine . signal . addEventListener ( "StateChanged" , stateChangedListener ) ;
670+ machine . signal . addEventListener ( "AccumulationsChanged" , accumulationsChangedListener ) ;
671+
667672 expect ( machine . current ) . toEqual ( "Connecting" ) ;
668673
669674 eventTarget . dispatchEvent ( new Event ( "open" ) ) ;
670675 expect ( machine . current ) . toEqual ( "Open" ) ;
671676 expect ( machine . accumulations ) . toEqual ( new Map ( ) ) ;
677+ expect ( stateChangedListener ) . toHaveBeenCalledTimes ( 1 ) ;
678+ expect ( stateChangedListener ) . toHaveBeenLastCalledWith ( expect . objectContaining ( { type : "StateChanged" } ) ) ;
679+ expect ( accumulationsChangedListener ) . toHaveBeenCalledTimes ( 0 ) ;
672680
673681 const event1 = new Event ( "message" ) ;
674682 const event2 = new Event ( "message" ) ;
@@ -678,22 +686,33 @@ describe("accumulate()", () => {
678686 eventTarget . dispatchEvent ( event1 ) ;
679687 expect ( machine . current ) . toEqual ( "Open" ) ;
680688 expect ( machine . accumulations ) . toEqual ( new Map ( [ [ messagesKey , [ event1 ] ] ] ) ) ;
689+ expect ( accumulationsChangedListener ) . toHaveBeenCalledTimes ( 1 ) ;
690+ expect ( accumulationsChangedListener ) . toHaveBeenLastCalledWith ( expect . objectContaining ( { type : "AccumulationsChanged" } ) ) ;
681691
682692 eventTarget . dispatchEvent ( event2 ) ;
683693 expect ( machine . current ) . toEqual ( "Open" ) ;
684694 expect ( machine . accumulations ) . toEqual ( new Map ( [ [ messagesKey , [ event1 , event2 ] ] ] ) ) ;
685-
695+ expect ( accumulationsChangedListener ) . toHaveBeenCalledTimes ( 2 ) ;
696+ expect ( accumulationsChangedListener ) . toHaveBeenLastCalledWith ( expect . objectContaining ( { type : "AccumulationsChanged" } ) ) ;
697+
686698 eventTarget . dispatchEvent ( event3 ) ;
687699 expect ( machine . current ) . toEqual ( "Open" ) ;
688700 expect ( machine . accumulations ) . toEqual ( new Map ( [ [ messagesKey , [ event1 , event2 , event3 ] ] ] ) ) ;
701+ expect ( accumulationsChangedListener ) . toHaveBeenCalledTimes ( 3 ) ;
689702
690703 eventTarget . dispatchEvent ( new Event ( "error" ) ) ;
691704 expect ( machine . current ) . toEqual ( "Closed" ) ;
692-
705+ expect ( machine . accumulations ) . toEqual ( new Map ( ) ) ;
706+ expect ( accumulationsChangedListener ) . toHaveBeenCalledTimes ( 3 ) ;
707+
693708 eventTarget . dispatchEvent ( event4 ) ;
694709 expect ( machine . current ) . toEqual ( "Closed" ) ;
695710 expect ( machine . accumulations ) . toEqual ( new Map ( ) ) ;
696- } )
711+ expect ( accumulationsChangedListener ) . toHaveBeenCalledTimes ( 4 ) ; // FIX: this should be 3
712+
713+ machine . signal . removeEventListener ( "StateChanged" , stateChangedListener ) ;
714+ machine . signal . removeEventListener ( "AccumulationsChanged" , accumulationsChangedListener ) ;
715+ } ) ;
697716} ) ;
698717
699718/*describe("Counter", () => {
0 commit comments