Skip to content

Commit bd793b7

Browse files
committed
Add test for StateChanged event
1 parent ff05eeb commit bd793b7

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "yieldmachine",
33
"amdName": "yieldmachine",
4-
"version": "0.4.4",
4+
"version": "0.4.6",
55
"description": "Declarative state machines using generator functions",
66
"source": "src/index.ts",
77
"main": "dist/yieldmachine.js",

src/index.test.ts

+25-1
Original file line numberDiff line numberDiff line change
@@ -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

442466
describe("Switch with symbol messages", () => {

0 commit comments

Comments
 (0)