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 (
+
+ )
+ }
+})
+
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 })