diff --git a/packages/react-schema-renderer/src/__tests__/json-schema.spec.tsx b/packages/react-schema-renderer/src/__tests__/json-schema.spec.tsx index 2b9fc86e722..5a5cd1ba934 100644 --- a/packages/react-schema-renderer/src/__tests__/json-schema.spec.tsx +++ b/packages/react-schema-renderer/src/__tests__/json-schema.spec.tsx @@ -3,10 +3,25 @@ import { registerFormField, connect, SchemaMarkupForm as SchemaForm, - SchemaMarkupField as Field + SchemaMarkupField as Field, + registerFieldMiddleware } from '../index' +import '@testing-library/jest-dom/extend-expect' +import { toArr } from '@uform/shared' import { render, fireEvent, wait } from '@testing-library/react' +registerFieldMiddleware(Field => { + return props => { + const index = props.schema['x-props'] && props.schema['x-props'].index + return ( +
+ +
{props.errors}
+
+ ) + } +}) + registerFormField( 'string', connect()(props => ( @@ -14,6 +29,22 @@ registerFormField( )) ) +registerFormField('array', props => { + const { value, renderField } = props + return ( + + {toArr(value).map((item, index) => { + return ( +
+ {renderField(index)} +
+ ) + })} +
+ ) +}) + + describe('test all apis', () => { //todo test('title', () => { @@ -56,11 +87,11 @@ describe('test all apis', () => { //todo }) - test('exclusiveMaximum', () => { + test('minimum', () => { //todo }) - test('minimum', () => { + test('exclusiveMaximum', () => { //todo }) @@ -84,9 +115,33 @@ describe('test all apis', () => { //todo }) - test('minItems', () => { - //todo + test('array minItems', async () => { + const handleSubmit = jest.fn() + const handleValidateFailed = jest.fn() + const TestComponent = () => ( + + + + + + + + + ) + + const { getByTestId, getByText } = render() + + fireEvent.click(getByTestId('btn')) + await wait() + fireEvent.click(getByTestId('btn')) + await wait() + expect(handleSubmit).toHaveBeenCalledTimes(0) + expect(handleValidateFailed).toHaveBeenCalledTimes(2) + expect(getByText('The length or number of entries must be at least 2')).toBeVisible() }) + test('uniqueItems', () => { //todo }) diff --git a/packages/react-schema-renderer/src/shared/schema.ts b/packages/react-schema-renderer/src/shared/schema.ts index 67d862d98fa..18403cd3faf 100644 --- a/packages/react-schema-renderer/src/shared/schema.ts +++ b/packages/react-schema-renderer/src/shared/schema.ts @@ -166,7 +166,7 @@ export class Schema implements ISchema { rules.push({ max: this.maxItems }) } if (isValid(this.minItems)) { - rules.push({ max: this.minItems }) + rules.push({ min: this.minItems }) } if (isValid(this.maxLength)) { rules.push({ max: this.maxLength })