Skip to content

Commit d729be3

Browse files
committed
Add test for AccumulationsChanged event
1 parent bd793b7 commit d729be3

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

src/index.test.ts

+22-3
Original file line numberDiff line numberDiff line change
@@ -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", () => {

src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ class Handlers {
146146
this.promises.splice(0, Infinity);
147147
this.actionResults.clear();
148148
this.eventsToListenTo.splice(0, Infinity);
149+
this.eventsToAccumulate.splice(0, Infinity);
149150
}
150151

151152
add(value: Yielded) {

0 commit comments

Comments
 (0)