|
| 1 | +import { cmd } from "./cmd"; |
1 | 2 | import type { UpdateMap } from "./Types"; |
2 | 3 |
|
3 | 4 | type Message1 = { name: "test"; param: string } | { name: "second" }; |
4 | 5 | type Message2 = { name: "first" } | Message1; |
5 | 6 |
|
6 | | -const updateMap1: UpdateMap<{}, {}, Message1> = { |
| 7 | +interface Model {} |
| 8 | + |
| 9 | +interface Props {} |
| 10 | + |
| 11 | +const updateMap1: UpdateMap<Props, Model, Message1> = { |
7 | 12 | test() { |
8 | | - return [{}]; |
| 13 | + return [{}, cmd.ofMsg({ name: "second" })]; |
9 | 14 | }, |
10 | 15 |
|
11 | 16 | second() { |
12 | 17 | return [{}]; |
13 | 18 | }, |
14 | 19 | }; |
15 | 20 |
|
16 | | -const updateMap2: UpdateMap<{}, {}, Message2> = { |
| 21 | +const updateMap2: UpdateMap<Props, Model, Message2> = { |
17 | 22 | first() { |
18 | 23 | return [{}]; |
19 | 24 | }, |
20 | 25 |
|
21 | 26 | ...updateMap1, |
22 | 27 |
|
23 | | - test(_msg, _model, _props, { callBase }) { |
24 | | - callBase(updateMap1.test); |
| 28 | + test(_msg, _model, _props, { defer, callBase }) { |
| 29 | + defer(...callBase(updateMap1.test)); |
25 | 30 |
|
26 | 31 | return [{}]; |
27 | 32 | }, |
28 | 33 | }; |
| 34 | + |
| 35 | +describe("createCallBase", () => { |
| 36 | + it("works", () => { |
| 37 | + // arrange |
| 38 | + const mockDefer = jest.fn(); |
| 39 | + const mockCallBase = jest.fn().mockReturnValue([{ foo: "bar" }, { name: "second" }]); |
| 40 | + |
| 41 | + // act |
| 42 | + updateMap2.test({ name: "test", param: "test" }, {}, {}, { defer: mockDefer, callBase: mockCallBase }); |
| 43 | + |
| 44 | + // assert |
| 45 | + expect(mockCallBase).toHaveBeenCalledWith(updateMap1.test); |
| 46 | + expect(mockDefer).toHaveBeenCalledWith({ foo: "bar" }, { name: "second" }); |
| 47 | + }); |
| 48 | +}); |
0 commit comments