@@ -664,11 +664,19 @@ describe("accumulate()", () => {
664
664
const eventTarget = ( new AbortController ( ) ) . signal ;
665
665
const machine = start ( Machine . bind ( null , eventTarget ) ) ;
666
666
667
+ const stateChangedListener = jest . fn ( ) ;
668
+ const accumulationsChangedListener = jest . fn ( ) ;
669
+ machine . signal . addEventListener ( "StateChanged" , stateChangedListener ) ;
670
+ machine . signal . addEventListener ( "AccumulationsChanged" , accumulationsChangedListener ) ;
671
+
667
672
expect ( machine . current ) . toEqual ( "Connecting" ) ;
668
673
669
674
eventTarget . dispatchEvent ( new Event ( "open" ) ) ;
670
675
expect ( machine . current ) . toEqual ( "Open" ) ;
671
676
expect ( machine . accumulations ) . toEqual ( new Map ( ) ) ;
677
+ expect ( stateChangedListener ) . toHaveBeenCalledTimes ( 1 ) ;
678
+ expect ( stateChangedListener ) . toHaveBeenLastCalledWith ( expect . objectContaining ( { type : "StateChanged" } ) ) ;
679
+ expect ( accumulationsChangedListener ) . toHaveBeenCalledTimes ( 0 ) ;
672
680
673
681
const event1 = new Event ( "message" ) ;
674
682
const event2 = new Event ( "message" ) ;
@@ -678,22 +686,33 @@ describe("accumulate()", () => {
678
686
eventTarget . dispatchEvent ( event1 ) ;
679
687
expect ( machine . current ) . toEqual ( "Open" ) ;
680
688
expect ( machine . accumulations ) . toEqual ( new Map ( [ [ messagesKey , [ event1 ] ] ] ) ) ;
689
+ expect ( accumulationsChangedListener ) . toHaveBeenCalledTimes ( 1 ) ;
690
+ expect ( accumulationsChangedListener ) . toHaveBeenLastCalledWith ( expect . objectContaining ( { type : "AccumulationsChanged" } ) ) ;
681
691
682
692
eventTarget . dispatchEvent ( event2 ) ;
683
693
expect ( machine . current ) . toEqual ( "Open" ) ;
684
694
expect ( machine . accumulations ) . toEqual ( new Map ( [ [ messagesKey , [ event1 , event2 ] ] ] ) ) ;
685
-
695
+ expect ( accumulationsChangedListener ) . toHaveBeenCalledTimes ( 2 ) ;
696
+ expect ( accumulationsChangedListener ) . toHaveBeenLastCalledWith ( expect . objectContaining ( { type : "AccumulationsChanged" } ) ) ;
697
+
686
698
eventTarget . dispatchEvent ( event3 ) ;
687
699
expect ( machine . current ) . toEqual ( "Open" ) ;
688
700
expect ( machine . accumulations ) . toEqual ( new Map ( [ [ messagesKey , [ event1 , event2 , event3 ] ] ] ) ) ;
701
+ expect ( accumulationsChangedListener ) . toHaveBeenCalledTimes ( 3 ) ;
689
702
690
703
eventTarget . dispatchEvent ( new Event ( "error" ) ) ;
691
704
expect ( machine . current ) . toEqual ( "Closed" ) ;
692
-
705
+ expect ( machine . accumulations ) . toEqual ( new Map ( ) ) ;
706
+ expect ( accumulationsChangedListener ) . toHaveBeenCalledTimes ( 3 ) ;
707
+
693
708
eventTarget . dispatchEvent ( event4 ) ;
694
709
expect ( machine . current ) . toEqual ( "Closed" ) ;
695
710
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
+ } ) ;
697
716
} ) ;
698
717
699
718
/*describe("Counter", () => {
0 commit comments