diff --git a/.eslintrc b/.eslintrc index 77aec6aca70..3962fcbe516 100644 --- a/.eslintrc +++ b/.eslintrc @@ -27,6 +27,7 @@ // allow specifying true explicitly for boolean props "react/jsx-boolean-value": 0, "react-hooks/rules-of-hooks": "error", - "react/no-did-update-set-state": 0 + "react/no-did-update-set-state": 0, + "jsx-quotes":"off" } } diff --git a/jest.config.js b/jest.config.js index ddaa1f15a13..41a95f1ea96 100644 --- a/jest.config.js +++ b/jest.config.js @@ -12,7 +12,7 @@ module.exports = { }, setupFilesAfterEnv: [ require.resolve('jest-dom/extend-expect'), - require.resolve('react-testing-library/cleanup-after-each'), + require.resolve('@testing-library/react/cleanup-after-each'), './scripts/global.js' ], coveragePathIgnorePatterns: [ diff --git a/package.json b/package.json index d0edae276d5..613314d5dd9 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "pretty-format": "^24.0.0", "react": "^16.8.3", "react-dom": "^16.8.3", - "react-testing-library": "^6.0.0", + "@testing-library/react": "^8.0.0", "remark-parse": "^6.0.3", "remark-stringify": "^6.0.4", "semver-regex": "^2.0.0", diff --git a/packages/react/src/.eslintrc b/packages/react/src/.eslintrc deleted file mode 100644 index 55f121d152d..00000000000 --- a/packages/react/src/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "env": { - "jest": true - } -} diff --git a/packages/react/src/__tests__/actions.spec.js b/packages/react/src/__tests__/actions.spec.js index 167648755d8..fb8027b9027 100644 --- a/packages/react/src/__tests__/actions.spec.js +++ b/packages/react/src/__tests__/actions.spec.js @@ -5,7 +5,7 @@ import SchemaForm, { connect, createAsyncFormActions } from '../index' -import { render } from 'react-testing-library' +import { render } from '@testing-library/react' beforeEach(() => { registerFormField('string', connect()(props =>
{props.value}
)) diff --git a/packages/react/src/__tests__/context.spec.js b/packages/react/src/__tests__/context.spec.js index 5daeebb320d..f311b598499 100644 --- a/packages/react/src/__tests__/context.spec.js +++ b/packages/react/src/__tests__/context.spec.js @@ -7,7 +7,7 @@ import SchemaForm, { FormConsumer, createFormActions } from '../index' -import { render, fireEvent, act } from 'react-testing-library' +import { render, fireEvent, act } from '@testing-library/react' beforeEach(() => { registerFormField( diff --git a/packages/react/src/__tests__/destruct.spec.js b/packages/react/src/__tests__/destruct.spec.js index 10c8f3a2f56..37a3ec6726f 100644 --- a/packages/react/src/__tests__/destruct.spec.js +++ b/packages/react/src/__tests__/destruct.spec.js @@ -1,40 +1,38 @@ import React, { Fragment } from 'react' import SchemaForm, { Field, registerFormField, connect } from '../index' import { toArr } from '@uform/utils' -import { render } from 'react-testing-library' - -beforeEach(() => { - registerFormField('string', connect()(props =>
{props.value}
)) - - registerFormField('array', props => { - const { value, mutators, renderField } = props - return ( - - {toArr(value).map((item, index) => { - return ( -
- {renderField(index)} -
- ) - })} - -
- ) - }) +import { render } from '@testing-library/react' + +registerFormField('string', connect()(props =>
{props.value}
)) + +registerFormField('array', props => { + const { value, mutators, renderField } = props + return ( + + {toArr(value).map((item, index) => { + return ( +
+ {renderField(index)} +
+ ) + })} + +
+ ) }) test('destruct with initial values', async () => { const TestComponent = () => { return ( - + ) } @@ -49,9 +47,9 @@ test('destruct with initial values in array', async () => { const TestComponent = () => { return ( - - - + + + diff --git a/packages/react/src/__tests__/dynamic.spec.js b/packages/react/src/__tests__/dynamic.spec.js index a728a0de516..2c57ee7d446 100644 --- a/packages/react/src/__tests__/dynamic.spec.js +++ b/packages/react/src/__tests__/dynamic.spec.js @@ -8,70 +8,68 @@ import SchemaForm, { createVirtualBox } from '../index' import { toArr } from '@uform/utils' -import { render, fireEvent, act } from 'react-testing-library' +import { render, fireEvent, act } from '@testing-library/react' let FormCard -beforeEach(() => { - registerFormField( - 'string', - connect()(props => ( - +registerFormField( + 'string', + connect()(props => ( + + )) +) + +registerFormField( + 'radio', + connect()(props => + props.dataSource.map(item => ( + )) ) +) - registerFormField( - 'radio', - connect()(props => - props.dataSource.map(item => ( - - )) - ) +registerFormField('container', props => { + const { value, mutators, renderField } = props + return ( + + {toArr(value).map((item, index) => { + return ( +
+ {renderField(index)} + +
+ ) + })} + +
) +}) - registerFormField('container', props => { - const { value, mutators, renderField } = props - return ( - - {toArr(value).map((item, index) => { - return ( -
- {renderField(index)} - -
- ) - })} - -
- ) - }) - - FormCard = createVirtualBox('card', ({ children }) => { - return
card content{children}
- }) +FormCard = createVirtualBox('card', ({ children }) => { + return
card content{children}
}) test('dynaimc add field', async () => { @@ -103,10 +101,10 @@ test('dynaimc add field', async () => { ) }} > - - - - + + + + @@ -180,10 +178,10 @@ test('dynaimc add field with initialValue', async () => { ) }} > - - - - + + + + @@ -267,15 +265,15 @@ test('dynaimc add field with initialValue in virtualbox', async () => { ) }} > - - + + - - + + - + ) } @@ -328,15 +326,15 @@ test('dynamic remove field', async () => { onSubmit={submitHandler} onValidateFailed={validateFaildHandler} > - - + + - - + + - + ) } @@ -370,19 +368,19 @@ test('dynamic default value', async () => { return ( - + - - + + - + ) } @@ -425,7 +423,7 @@ test('dynamic async default value', async () => { }, []) return ( - + ) } @@ -468,7 +466,7 @@ test('invalid schema', async () => { }, []) return ( - + ) } @@ -517,7 +515,7 @@ test('dynamic change functions onChange/onReset/onSubmit/onValidateFailed', asyn }} > - +
valueB-{constState.testB}
valueC-{constState.testC}
diff --git a/packages/react/src/__tests__/editable.spec.js b/packages/react/src/__tests__/editable.spec.js index 39894f35f28..5375ebffe91 100644 --- a/packages/react/src/__tests__/editable.spec.js +++ b/packages/react/src/__tests__/editable.spec.js @@ -7,54 +7,52 @@ import SchemaForm, { createFormActions, FormPath } from '../index' -import { render, act, fireEvent } from 'react-testing-library' +import { render, act, fireEvent } from '@testing-library/react' import { toArr } from '@uform/utils' -beforeEach(() => { - registerFieldMiddleware(Field => { - return props => { - if (typeof props.editable === 'boolean' && props.name !== '') { - if (!props.editable) return
empty
- } - return ( -
- {props.schema.title} - - {props.errors && props.errors.length ? ( -
{props.errors}
- ) : ( - '' - )} -
- ) +registerFieldMiddleware(Field => { + return props => { + if (typeof props.editable === 'boolean' && props.name !== '') { + if (!props.editable) return
empty
} - }) - registerFormField( - 'string', - connect()(props => ) - ) - registerFormField('array', props => { - const { value, mutators, renderField } = props return ( - - {toArr(value).map((item, index) => { - return ( -
- {renderField(index)} -
- ) - })} - -
+
+ {props.schema.title} + + {props.errors && props.errors.length ? ( +
{props.errors}
+ ) : ( + '' + )} +
) - }) + } +}) +registerFormField( + 'string', + connect()(props => ) +) +registerFormField('array', props => { + const { value, mutators, renderField } = props + return ( + + {toArr(value).map((item, index) => { + return ( +
+ {renderField(index)} +
+ ) + })} + +
+ ) }) test('update editable by setFieldState', async () => { @@ -77,8 +75,8 @@ test('update editable by setFieldState', async () => { }) }} > - - @@ -112,8 +110,8 @@ test('update editable by setFieldState with initalState is not editable', async }) }} > - - @@ -138,7 +136,7 @@ test('update editable in controlled', async () => { updateEditable = _updateEditable return ( - + ) } @@ -160,10 +158,10 @@ test('editable with x-props', async () => { return ( ) @@ -187,13 +185,13 @@ test('editable with x-props in array field', async () => { defaultValue={{ array: [{ aa: '123123' }] }} actions={actions} > - - + + @@ -220,13 +218,13 @@ test('editable with x-props is affected by global editable', async () => { defaultValue={{ array: [{ aa: '123123' }] }} actions={actions} > - - + + @@ -258,18 +256,18 @@ test('editable conflicts that global editable props with setFieldState', async ( }} > @@ -302,19 +300,19 @@ test('editable conflicts that props editable props with setFieldState', async () }} > @@ -347,18 +345,18 @@ test('editable conflicts that x-props editable props with setFieldState', async }} > diff --git a/packages/react/src/__tests__/effects.spec.js b/packages/react/src/__tests__/effects.spec.js index 9af7d80bb4c..4534a149c69 100644 --- a/packages/react/src/__tests__/effects.spec.js +++ b/packages/react/src/__tests__/effects.spec.js @@ -6,35 +6,29 @@ import SchemaForm, { registerFieldMiddleware, createFormActions } from '../index' -import { render, fireEvent, act } from 'react-testing-library' +import { render, fireEvent, act } from '@testing-library/react' -beforeEach(() => { - registerFieldMiddleware(Field => { - return props => { - return ( -
- {props.schema.title} - - {props.errors && props.errors.length ? ( -
{props.errors}
- ) : ( - '' - )} -
- ) - } - }) - registerFormField( - 'string', - connect()(props => - props.disabled ? ( - 'Disabled' - ) : ( - - ) +registerFieldMiddleware(Field => { + return props => { + return ( +
+ {props.schema.title} + + {props.errors && props.errors.length ? ( +
{props.errors}
+ ) : ( + '' + )} +
) - ) + } }) +registerFormField( + 'string', + connect()(props => + props.disabled ? 'Disabled' : + ) +) test('onFormInit setFieldState', async () => { const actions = createFormActions() @@ -55,8 +49,8 @@ test('onFormInit setFieldState', async () => { }) }} > - - @@ -89,8 +83,8 @@ test('init triggers', async () => { $('onFieldChange', 'aaa').subscribe(callback) }} > - - @@ -122,8 +116,8 @@ test('onFieldChange will trigger with initialValues', async () => { $('onFieldChange', 'aaa').subscribe(callback) }} > - - @@ -149,8 +143,8 @@ test('setFieldState x-props with onFormInit', async () => { }) }} > - - @@ -175,10 +169,10 @@ test('getFieldState with onFieldChange', async () => { }) }} > - + @@ -206,8 +200,8 @@ test('set errors in effects', async () => { }} onSubmit={callback} > - - diff --git a/packages/react/src/__tests__/mutators.spec.js b/packages/react/src/__tests__/mutators.spec.js index 587f7051769..a8456f7067e 100644 --- a/packages/react/src/__tests__/mutators.spec.js +++ b/packages/react/src/__tests__/mutators.spec.js @@ -5,32 +5,30 @@ import SchemaForm, { connect, createFormActions } from '../index' -import { render, fireEvent } from 'react-testing-library' +import { render, fireEvent } from '@testing-library/react' -beforeEach(() => { - registerFormField( - 'mutator', - connect()(props => ( -
- - {props.value && props.value[0] && props.value[0].aaa} -
- )) - ) -}) +registerFormField( + 'mutator', + connect()(props => ( +
+ + {props.value && props.value[0] && props.value[0].aaa} +
+ )) +) test('update value by ref', async () => { const actions = createFormActions() const TestComponent = () => ( - + ) diff --git a/packages/react/src/__tests__/validate.spec.js b/packages/react/src/__tests__/validate.spec.js index 3ee0895c5f6..2daa33c0362 100644 --- a/packages/react/src/__tests__/validate.spec.js +++ b/packages/react/src/__tests__/validate.spec.js @@ -7,28 +7,26 @@ import SchemaForm, { FormPath, createFormActions } from '../index' -import { render, fireEvent, act } from 'react-testing-library' +import { render, fireEvent, act } from '@testing-library/react' -beforeEach(() => { - registerFieldMiddleware(Field => { - return props => { - return ( -
- - {props.errors} -
- ) - } - }) - - registerFormField( - 'string', - connect()(props => ( - - )) - ) +registerFieldMiddleware(Field => { + return props => { + return ( +
+ + {props.errors} +
+ ) + } }) +registerFormField( + 'string', + connect()(props => ( + + )) +) + test('basic validate', async () => { const handleSubmit = jest.fn() const handleValidateFailed = jest.fn() diff --git a/packages/react/src/__tests__/validate_relations.spec.js b/packages/react/src/__tests__/validate_relations.spec.js index f84d7f59958..d0bf39b8611 100644 --- a/packages/react/src/__tests__/validate_relations.spec.js +++ b/packages/react/src/__tests__/validate_relations.spec.js @@ -6,31 +6,29 @@ import SchemaForm, { registerFieldMiddleware, createFormActions } from '../index' -import { render, fireEvent } from 'react-testing-library' +import { render, fireEvent } from '@testing-library/react' -beforeEach(() => { - registerFieldMiddleware(Field => { - return props => { - const index = props.schema['x-props'] && props.schema['x-props'].index - return ( -
- -
{props.errors}
-
- ) - } - }) - registerFormField( - 'string', - connect()(props => ( - - )) - ) +registerFieldMiddleware(Field => { + return props => { + const index = props.schema['x-props'] && props.schema['x-props'].index + return ( +
+ +
{props.errors}
+
+ ) + } }) +registerFormField( + 'string', + connect()(props => ( + + )) +) test('setFieldState will trigger validate', async () => { const handleSubmit = jest.fn() @@ -51,9 +49,9 @@ test('setFieldState will trigger validate', async () => { onSubmit={handleSubmit} onValidateFailed={handleValidateFailed} > - - - diff --git a/packages/react/src/__tests__/virtualbox.spec.js b/packages/react/src/__tests__/virtualbox.spec.js index 854c0b1864b..eaa3e037811 100644 --- a/packages/react/src/__tests__/virtualbox.spec.js +++ b/packages/react/src/__tests__/virtualbox.spec.js @@ -6,59 +6,54 @@ import SchemaForm, { connect, registerFieldMiddleware } from '../index' -import { render, fireEvent, act } from 'react-testing-library' +import { render, fireEvent, act } from '@testing-library/react' let FormCard -beforeEach(() => { - registerFieldMiddleware(Field => { - return props => { - if (typeof props.editable === 'boolean' && props.name !== '') { - if (!props.editable) return
empty
- } - return ( -
- {props.schema.title} - - {props.errors && props.errors.length ? ( -
{props.errors}
- ) : ( - '' - )} -
- ) +registerFieldMiddleware(Field => { + return props => { + if (typeof props.editable === 'boolean' && props.name !== '') { + if (!props.editable) return
empty
} - }) - registerFormField( - 'string', - connect()(props => ) - ) - registerFormField( - 'text', - connect()(props =>
This is Text Component
) - ) - FormCard = createVirtualBox('card', ({ children }) => { - return
card content{children}
- }) + return ( +
+ {props.schema.title} + + {props.errors && props.errors.length ? ( +
{props.errors}
+ ) : ( + '' + )} +
+ ) + } +}) +registerFormField( + 'string', + connect()(props => ) +) +registerFormField('text', connect()(props =>
This is Text Component
)) +FormCard = createVirtualBox('card', ({ children }) => { + return
card content{children}
}) -// test('createVirtualBox', async () => { -// const TestComponent = () => ( -// -// -// -// -// -// -// ) +test('createVirtualBox', async () => { + const TestComponent = () => ( + + + + + + + ) -// const { queryByText } = render() + const { queryByText } = render() -// await sleep(100) -// expect(queryByText('card content')).toBeVisible() -// }) + await sleep(100) + expect(queryByText('card content')).toBeVisible() +}) test('dynamic node', async () => { const TestComponent = () => { @@ -67,11 +62,11 @@ test('dynamic node', async () => { {editable && ( - + )} - +