Skip to content

Commit bf3740a

Browse files
committed
adjusting tests
1 parent d0ca2f9 commit bf3740a

17 files changed

Lines changed: 754 additions & 781 deletions

packages/examples-react/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"@jsonforms/core": "workspace:*",
77
"@jsonforms/examples": "workspace:*",
88
"@jsonforms/react": "workspace:*",
9-
"@mui/material": "^7.3.0 || ^8.0.0 || ^9.0.0",
9+
"@mui/material": "^9.0.0",
1010
"@types/react-highlight": "^0.12.5",
1111
"@types/react-tabs": "^2.3.3",
1212
"highlight.js": "^11.3.1",

packages/material-renderers/package.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,12 @@
6262
"js"
6363
],
6464
"transform": {
65-
"^.+\\.(ts|tsx)$": "ts-jest"
65+
"^.+\\.(ts|tsx)$": [
66+
"ts-jest",
67+
{
68+
"tsconfig": "tsconfig.test.json"
69+
}
70+
]
6671
},
6772
"testEnvironment": "jsdom",
6873
"testMatch": [
@@ -72,12 +77,7 @@
7277
"testPathIgnorePatterns": [
7378
"/node_modules/",
7479
"/dist/"
75-
],
76-
"globals": {
77-
"ts-jest": {
78-
"tsconfig": "tsconfig.test.json"
79-
}
80-
}
80+
]
8181
},
8282
"nyc": {
8383
"reporter": [
@@ -87,17 +87,17 @@
8787
},
8888
"dependencies": {
8989
"@date-io/dayjs": "^3.0.0",
90-
"dayjs": "^1.10.7",
90+
"dayjs": "1.10.7",
9191
"lodash": "^4.17.21"
9292
},
9393
"peerDependencies": {
9494
"@emotion/react": "^11.5.0 || ^12.0.0",
9595
"@emotion/styled": "^11.3.0 || ^12.0.0",
9696
"@jsonforms/core": "3.8.0-alpha.2",
9797
"@jsonforms/react": "3.8.0-alpha.2",
98-
"@mui/icons-material": "^7.0.0 || ^8.0.0 || ^9.0.0",
99-
"@mui/material": "^7.0.0 || ^8.0.0 || ^9.0.0",
100-
"@mui/x-date-pickers": "^8.0.0 || ^9.0.0",
98+
"@mui/icons-material": "^9.0.0",
99+
"@mui/material": "^9.0.0",
100+
"@mui/x-date-pickers": "^9.0.0",
101101
"react": "^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
102102
},
103103
"devDependencies": {

packages/material-renderers/src/layouts/ExpandPanelRenderer.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ const ExpandPanelRendererComponent = (props: ExpandPanelProps) => {
190190
open={enableMoveUp ? undefined : false}
191191
>
192192
<IconButton
193+
component='div'
193194
onClick={moveUp(path, index)}
194195
style={iconStyle}
195196
disabled={!enableMoveUp}
@@ -208,6 +209,7 @@ const ExpandPanelRendererComponent = (props: ExpandPanelProps) => {
208209
open={enableMoveDown ? undefined : false}
209210
>
210211
<IconButton
212+
component='div'
211213
onClick={moveDown(path, index)}
212214
style={iconStyle}
213215
disabled={!enableMoveDown}
@@ -230,6 +232,7 @@ const ExpandPanelRendererComponent = (props: ExpandPanelProps) => {
230232
placement='bottom'
231233
>
232234
<IconButton
235+
component='div'
233236
onClick={removeItems(path, [index])}
234237
style={iconStyle}
235238
aria-label={translations.removeAriaLabel}

packages/material-renderers/test/renderers/MaterialAllOfRenderer.test.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@
2424
*/
2525
import React from 'react';
2626

27-
import Enzyme, { mount, ReactWrapper } from 'enzyme';
27+
import Enzyme, { ReactWrapper } from 'enzyme';
2828
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
2929
import { ControlElement } from '@jsonforms/core';
3030
import { MaterialAllOfRenderer, materialRenderers } from '../../src';
3131
import { JsonForms, JsonFormsStateProvider } from '@jsonforms/react';
32-
import { initCore } from './util';
32+
import { initCore, mountWithAct } from './util';
3333

3434
Enzyme.configure({ adapter: new Adapter() });
3535

@@ -61,7 +61,8 @@ describe('Material allOf renderer', () => {
6161
label: 'Value',
6262
scope: '#/properties/value',
6363
};
64-
wrapper = mount(
64+
65+
wrapper = mountWithAct(
6566
<JsonForms
6667
data={undefined}
6768
schema={schema}
@@ -98,7 +99,7 @@ describe('Material allOf renderer', () => {
9899
scope: '#/properties/value',
99100
};
100101
const core = initCore(schema, uischema);
101-
wrapper = mount(
102+
wrapper = mountWithAct(
102103
<JsonFormsStateProvider
103104
initState={{ renderers: materialRenderers, core }}
104105
>

packages/material-renderers/test/renderers/MaterialAnyOfRenderer.test.tsx

Lines changed: 50 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
THE SOFTWARE.
2424
*/
2525
import React from 'react';
26-
27-
import Enzyme, { mount, ReactWrapper } from 'enzyme';
26+
import { act } from 'react-dom/test-utils';
27+
import Enzyme, { ReactWrapper } from 'enzyme';
2828
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
2929
import { ControlElement } from '@jsonforms/core';
3030
import {
@@ -33,12 +33,10 @@ import {
3333
materialRenderers,
3434
} from '../../src';
3535
import { JsonForms, JsonFormsStateProvider } from '@jsonforms/react';
36-
import { initCore, TestEmitter } from './util';
36+
import { initCore, mountWithAct, TestEmitter } from './util';
3737

3838
Enzyme.configure({ adapter: new Adapter() });
3939

40-
const waitForAsync = () => new Promise((resolve) => setTimeout(resolve, 0));
41-
4240
const clickAddButton = (wrapper: ReactWrapper, times: number) => {
4341
const buttons = wrapper.find('button');
4442
const addButton = buttons.at(2);
@@ -57,9 +55,23 @@ const selectanyOfTab = (wrapper: ReactWrapper, at: number) => {
5755
describe('Material anyOf renderer', () => {
5856
let wrapper: ReactWrapper;
5957

60-
afterEach(() => wrapper.unmount());
58+
beforeEach(() => {
59+
jest.useFakeTimers();
60+
});
61+
62+
afterEach(() => {
63+
// flush any pending debounce / async updates
64+
jest.runOnlyPendingTimers();
65+
66+
// cleanup React tree FIRST
67+
if (wrapper) {
68+
wrapper.unmount();
69+
}
70+
71+
jest.useRealTimers();
72+
});
6173

62-
it('should add an item at correct path', (done) => {
74+
it('should add an item at correct path', () => {
6375
const schema = {
6476
type: 'object',
6577
properties: {
@@ -85,7 +97,7 @@ describe('Material anyOf renderer', () => {
8597
const onChangeData: any = {
8698
data: undefined,
8799
};
88-
wrapper = mount(
100+
wrapper = mountWithAct(
89101
<JsonForms
90102
data={undefined}
91103
schema={schema}
@@ -96,19 +108,23 @@ describe('Material anyOf renderer', () => {
96108
}}
97109
/>
98110
);
111+
99112
expect(wrapper.find(MaterialAnyOfRenderer).length).toBeTruthy();
100-
const input = wrapper.find('input').first();
101-
input.simulate('change', { target: { value: 'test' } });
113+
114+
act(() => {
115+
const input = wrapper.find('input').first();
116+
input.simulate('change', { target: { value: 'test' } });
117+
118+
jest.runAllTimers();
119+
});
120+
102121
wrapper.update();
103-
setTimeout(() => {
104-
expect(onChangeData.data).toEqual({
105-
value: 'test',
106-
});
107-
done();
108-
}, 1000);
122+
expect(onChangeData.data).toEqual({
123+
value: 'test',
124+
});
109125
});
110126

111-
it('should add a "mything"', async () => {
127+
it('should add a "mything"', () => {
112128
const schema = {
113129
type: 'object',
114130
properties: {
@@ -155,18 +171,14 @@ describe('Material anyOf renderer', () => {
155171
scope: '#/properties/myThingsAndOrYourThings',
156172
};
157173
const core = initCore(schema, uischema);
158-
wrapper = mount(
174+
wrapper = mountWithAct(
159175
<JsonFormsStateProvider
160176
initState={{ renderers: materialRenderers, core }}
161177
>
162178
<MaterialAnyOfRenderer schema={schema} uischema={uischema} />
163179
</JsonFormsStateProvider>
164180
);
165181

166-
await waitForAsync();
167-
168-
wrapper.update();
169-
170182
selectanyOfTab(wrapper, 1);
171183
const nrOfRowsBeforeAdd = wrapper.find('tr');
172184
clickAddButton(wrapper, 2);
@@ -178,7 +190,7 @@ describe('Material anyOf renderer', () => {
178190
expect(nrOfRowsAfterAdd.length).toBe(4);
179191
});
180192

181-
it('should switch to "yourThing" edit, then switch back, then edit', async () => {
193+
it('should switch to "yourThing" edit, then switch back, then edit', () => {
182194
const schema = {
183195
type: 'object',
184196
properties: {
@@ -228,9 +240,14 @@ describe('Material anyOf renderer', () => {
228240
data: undefined,
229241
};
230242
const core = initCore(schema, uischema);
231-
wrapper = mount(
243+
244+
wrapper = mountWithAct(
232245
<JsonFormsStateProvider
233-
initState={{ renderers: materialRenderers, cells: materialCells, core }}
246+
initState={{
247+
renderers: materialRenderers,
248+
cells: materialCells,
249+
core,
250+
}}
234251
>
235252
<TestEmitter
236253
onChange={({ data }) => {
@@ -241,10 +258,6 @@ describe('Material anyOf renderer', () => {
241258
</JsonFormsStateProvider>
242259
);
243260

244-
await waitForAsync();
245-
246-
wrapper.update();
247-
248261
selectanyOfTab(wrapper, 1);
249262
clickAddButton(wrapper, 1);
250263
wrapper
@@ -255,20 +268,15 @@ describe('Material anyOf renderer', () => {
255268
selectanyOfTab(wrapper, 0);
256269

257270
const input = wrapper.find('input').first();
258-
input.simulate('change', { target: { value: 'test' } });
271+
act(() => {
272+
input.simulate('change', { target: { value: 'test' } });
273+
jest.runAllTimers();
274+
});
259275
wrapper.update();
260276

261-
let done: (value: undefined) => void;
262-
const donePromise = new Promise<undefined>((resolve) => {
263-
done = resolve;
277+
expect(onChangeData.data).toEqual({
278+
myThingsAndOrYourThings: [{ age: 5, name: 'test' }],
264279
});
265-
setTimeout(() => {
266-
expect(onChangeData.data).toEqual({
267-
myThingsAndOrYourThings: [{ age: 5, name: 'test' }],
268-
});
269-
done(undefined);
270-
}, 1000);
271-
return donePromise;
272280
});
273281

274282
it('should be hideable', () => {
@@ -295,7 +303,8 @@ describe('Material anyOf renderer', () => {
295303
scope: '#/properties/value',
296304
};
297305
const core = initCore(schema, uischema);
298-
wrapper = mount(
306+
307+
wrapper = mountWithAct(
299308
<JsonFormsStateProvider
300309
initState={{ renderers: materialRenderers, core }}
301310
>

packages/material-renderers/test/renderers/MaterialAnyOfStringOrEnumControl.test.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
*/
2525
import React from 'react';
2626

27-
import Enzyme, { mount, ReactWrapper } from 'enzyme';
27+
import Enzyme, { ReactWrapper } from 'enzyme';
2828
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
2929
import { ControlElement, JsonSchema } from '@jsonforms/core';
3030
import {
@@ -33,6 +33,7 @@ import {
3333
materialRenderers,
3434
} from '../../src';
3535
import { JsonForms } from '@jsonforms/react';
36+
import { mountWithAct } from './util';
3637

3738
Enzyme.configure({ adapter: new Adapter() });
3839

@@ -117,7 +118,7 @@ describe('Material any of string or enum control', () => {
117118
});
118119

119120
it('render', () => {
120-
wrapper = mount(
121+
wrapper = mountWithAct(
121122
<JsonForms
122123
data={'foo'}
123124
schema={schema}

0 commit comments

Comments
 (0)