Skip to content

Commit d782a47

Browse files
committed
test: fix test for callBase
1 parent bcb584c commit d782a47

File tree

2 files changed

+29
-9
lines changed

2 files changed

+29
-9
lines changed

src/Types.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,20 @@ type InitFunction<TProps, TModel, TMessage> = (props: TProps) => InitResult<TMod
3737
type UpdateReturnType<TModel, TMessage> = [Partial<TModel>, ...(Cmd<TMessage> | undefined)[]];
3838

3939
type DeferFunction<TModel, TMessage> = (model: Partial<TModel>, ...commands: (Cmd<TMessage> | undefined)[]) => void;
40-
type UpdateMapFunction<TProps, TModel, TMessage extends Message> = (
40+
type UpdateMapFunction<TProps, TModel, TMessage> = (
4141
msg: TMessage,
4242
model: TModel,
4343
props: TProps,
4444
options: UpdateFunctionOptions<TProps, TModel, TMessage>,
4545
) => UpdateReturnType<TModel, TMessage>;
4646

47-
interface UpdateFunctionOptions<TProps, TModel, TMessage extends Message> {
47+
interface UpdateFunctionOptions<TProps, TModel, TMessage> {
4848
defer: DeferFunction<TModel, TMessage>;
4949
// biome-ignore lint/suspicious/noExplicitAny: Didn't find a better solution for now.
50-
callBase: (fn: UpdateMapFunction<TProps, TModel, any>) => UpdateReturnType<TModel, TMessage>;
50+
callBase: (fn: UpdateMapFunction<TProps, TModel, any>) => UpdateReturnType<TModel, any>;
5151
}
5252

53-
type UpdateFunction<TProps, TModel, TMessage extends Message> = (
53+
type UpdateFunction<TProps, TModel, TMessage> = (
5454
model: TModel,
5555
msg: TMessage,
5656
props: TProps,

src/createCallBase.spec.ts

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,48 @@
1+
import { cmd } from "./cmd";
12
import type { UpdateMap } from "./Types";
23

34
type Message1 = { name: "test"; param: string } | { name: "second" };
45
type Message2 = { name: "first" } | Message1;
56

6-
const updateMap1: UpdateMap<{}, {}, Message1> = {
7+
interface Model {}
8+
9+
interface Props {}
10+
11+
const updateMap1: UpdateMap<Props, Model, Message1> = {
712
test() {
8-
return [{}];
13+
return [{}, cmd.ofMsg({ name: "second" })];
914
},
1015

1116
second() {
1217
return [{}];
1318
},
1419
};
1520

16-
const updateMap2: UpdateMap<{}, {}, Message2> = {
21+
const updateMap2: UpdateMap<Props, Model, Message2> = {
1722
first() {
1823
return [{}];
1924
},
2025

2126
...updateMap1,
2227

23-
test(_msg, _model, _props, { callBase }) {
24-
callBase(updateMap1.test);
28+
test(_msg, _model, _props, { defer, callBase }) {
29+
defer(...callBase(updateMap1.test));
2530

2631
return [{}];
2732
},
2833
};
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

Comments
 (0)