Skip to content

Commit aca7e53

Browse files
committed
rename parameter and adapt tests
1 parent 3cd51f4 commit aca7e53

File tree

2 files changed

+39
-23
lines changed

2 files changed

+39
-23
lines changed

packages/react/src/JsonFormsContext.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,15 +132,12 @@ export interface Middleware {
132132
(
133133
state: JsonFormsCore,
134134
action: CoreActions,
135-
defaultDispatch: (
136-
state: JsonFormsCore,
137-
action: CoreActions
138-
) => JsonFormsCore
135+
defaultReducer: (state: JsonFormsCore, action: CoreActions) => JsonFormsCore
139136
): JsonFormsCore;
140137
}
141138

142-
const defaultMiddleware: Middleware = (state, action, defaultDispatch) =>
143-
defaultDispatch(state, action);
139+
const defaultMiddleware: Middleware = (state, action, defaultReducer) =>
140+
defaultReducer(state, action);
144141

145142
export const JsonFormsStateProvider = ({
146143
children,

packages/react/test/renderers/JsonForms.test.tsx

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1102,7 +1102,7 @@ test('JsonForms should use react to additionalErrors update', () => {
11021102
wrapper.unmount();
11031103
});
11041104

1105-
test('JsonForms middleware should be called if provided', () => {
1105+
test('JsonForms middleware should be called if provided', async () => {
11061106
// given
11071107
const onChangeHandler = jest.fn();
11081108
const customMiddleware = jest.fn();
@@ -1136,31 +1136,39 @@ test('JsonForms middleware should be called if provided', () => {
11361136
renderers={renderers}
11371137
/>
11381138
);
1139-
setTimeout(() => {
1140-
const calls = onChangeHandler.mock.calls;
1141-
const lastCallParameter = calls[calls.length - 1][0];
1142-
expect(lastCallParameter.data).toEqual({ foo: 'John Doe' });
1143-
expect(lastCallParameter.errors).toEqual([]);
1144-
}, 50);
11451139

1146-
// when
1140+
// wait for 50 ms for the change handler invocation
1141+
await new Promise((resolve) => setTimeout(resolve, 50));
1142+
1143+
// initial rendering should call onChange 1 time
1144+
expect(onChangeHandler).toHaveBeenCalledTimes(1);
1145+
const calls = onChangeHandler.mock.calls;
1146+
const lastCallParameter = calls[calls.length - 1][0];
1147+
expect(lastCallParameter.data).toEqual({ foo: 'John Doe' });
1148+
expect(lastCallParameter.errors).toEqual([]);
1149+
1150+
// adapt test input
11471151
wrapper.find('input').simulate('change', {
11481152
target: {
11491153
value: 'Test Value',
11501154
},
11511155
});
11521156

1153-
// then
11541157
expect(customMiddleware).toHaveBeenCalledTimes(1);
1155-
expect(onChangeHandler).not.toHaveBeenCalled();
1158+
1159+
// wait for 50 ms for the change handler invocation
1160+
await new Promise((resolve) => setTimeout(resolve, 50));
1161+
// change handler should not have been called another time as we blocked the update in the middleware
1162+
expect(onChangeHandler).toHaveBeenCalledTimes(1);
1163+
// The rendered field should also not have been updated
11561164
expect(wrapper.find('input').getDOMNode<HTMLInputElement>().value).toBe(
11571165
'John Doe'
11581166
);
11591167

11601168
wrapper.unmount();
11611169
});
11621170

1163-
test('JsonForms middleware should update state if modified', () => {
1171+
test('JsonForms middleware should update state if modified', async () => {
11641172
// given
11651173
const onChangeHandler = jest.fn();
11661174
const customMiddleware = jest.fn();
@@ -1195,14 +1203,20 @@ test('JsonForms middleware should update state if modified', () => {
11951203
renderers={renderers}
11961204
/>
11971205
);
1198-
setTimeout(() => {
1206+
1207+
// wait for 50 ms for the change handler invocation
1208+
await new Promise((resolve) => setTimeout(resolve, 50));
1209+
1210+
// initial rendering should call onChange 1 time
1211+
expect(onChangeHandler).toHaveBeenCalledTimes(1);
1212+
{
11991213
const calls = onChangeHandler.mock.calls;
12001214
const lastCallParameter = calls[calls.length - 1][0];
12011215
expect(lastCallParameter.data).toEqual({ foo: 'John Doe' });
12021216
expect(lastCallParameter.errors).toEqual([]);
1203-
}, 50);
1217+
}
12041218

1205-
// when
1219+
// adapt input
12061220
wrapper.find('input').simulate('change', {
12071221
target: {
12081222
value: 'Test Value',
@@ -1214,12 +1228,17 @@ test('JsonForms middleware should update state if modified', () => {
12141228
expect(wrapper.find('input').getDOMNode<HTMLInputElement>().value).toBe(
12151229
'Test Value Test'
12161230
);
1217-
setTimeout(() => {
1231+
1232+
// wait for 50 ms for the change handler invocation
1233+
await new Promise((resolve) => setTimeout(resolve, 50));
1234+
// onChangeHandler should have been called after the state update
1235+
expect(onChangeHandler).toHaveBeenCalledTimes(2);
1236+
{
12181237
const calls = onChangeHandler.mock.calls;
1219-
const lastCallParameter = calls[calls.length - 1][1];
1238+
const lastCallParameter = calls[calls.length - 1][0];
12201239
expect(lastCallParameter.data).toEqual({ foo: 'Test Value Test' });
12211240
expect(lastCallParameter.errors).toEqual([]);
1222-
}, 50);
1241+
}
12231242

12241243
wrapper.unmount();
12251244
});

0 commit comments

Comments
 (0)