Skip to content

Commit

Permalink
fix: 数组内部子元素校验失效 (#126)
Browse files Browse the repository at this point in the history
  • Loading branch information
mengshang918 committed Jan 15, 2022
1 parent fa75163 commit 6f0a89e
Show file tree
Hide file tree
Showing 5 changed files with 128 additions and 11 deletions.
10 changes: 10 additions & 0 deletions packages/utils/__tests__/combine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ import {
unitedSchema as verify7,
parsedSchema as test7,
} from '../__testsdata__/datePicker.schema'
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
import {
unitedSchema as verify8,
parsedSchema as test8,
} from '../__testsdata__/array.schema'

describe('combine', () => {
test('test dataPicker.schema', () => {
Expand Down Expand Up @@ -81,4 +87,8 @@ describe('combine', () => {
const data = combine(test6.dataSchema, test6.uiSchema)
expect(data).toStrictEqual(verify6)
})
test('test array.schema.js', () => {
const data = combine(test8.dataSchema, test8.uiSchema)
expect(data).toStrictEqual(verify8)
})
})
11 changes: 11 additions & 0 deletions packages/utils/__tests__/parse.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ import {
unitedSchema as test7,
parsedSchema as verify7,
} from '../__testsdata__/datePicker.schema'
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
import {
unitedSchema as test8,
parsedSchema as verify8,
} from '../__testsdata__/array.schema'

describe('parseUnitedSchema', () => {
test('test datePicker.schema.js', () => {
Expand Down Expand Up @@ -77,4 +83,9 @@ describe('parseUnitedSchema', () => {
const data = parseUnitedSchema(test6)
expect(data).toStrictEqual(verify6)
})

test('test array.schema.js', () => {
const data = parseUnitedSchema(test8)
expect(data).toStrictEqual(verify8)
})
})
86 changes: 86 additions & 0 deletions packages/utils/__testsdata__/array.schema.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
export const unitedSchema = {
validateTime: 'change',
type: 'object',
theme: 'antd',
schema: [
{
validateTime: 'submit',
type: 'array',
title: '数组容器',
ui: {
type: 'array',
mode: 'add',
addTitle: '添加一行数据',
},
items: {
validateTime: 'submit',
type: 'string',
title: '输入框',
minLength: 2,
errMsg: {
minLength: '2',
},
ui: {
type: 'text',
style: {
width: '100%',
},
},
},
fieldKey: 'array_g6NF65',
},
],
}

export const parsedSchema = {
dataSchema: {
validateTime: 'change',
type: 'object',
properties: {
array_g6NF65: {
validateTime: 'submit',
type: 'array',
title: '数组容器',
items: {
validateTime: 'submit',
type: 'string',
title: '输入框',
minLength: 2,
errorMessage: {
minLength: '2',
},
},
},
},
},
uiSchema: {
theme: 'antd',
order: ['array_g6NF65'],
properties: {
array_g6NF65: {
type: 'array',
mode: 'add',
addTitle: '添加一行数据',
order: ['$container'],
properties: {
$container: {
type: 'text',
style: {
width: '100%',
},
},
},
},
},
},
typePath: {
array_g6NF65: {
fatherKey: '',
type: 'array',
},
'array_g6NF65.$container': {
fatherKey: 'array_g6NF65',
type: 'string',
},
},
}
30 changes: 20 additions & 10 deletions packages/utils/src/schemaHandle/parse.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,20 +116,30 @@ function recursiveParse(
if (currLevelDataSchema.required) {
currLevelDataSchema.required.push(fieldKey)
}
currLevelDataSchema.errorMessage.required[fieldKey] = item[key]
if (currLevelDataSchema.errorMessage) {
currLevelDataSchema.errorMessage.required[fieldKey] = item[key]
}
}
break
case 'errMsg':
judgeAndRegister(
currLevelDataSchema,
'object',
containerKey,
fieldKey
)
if (fieldKey !== '$container') {
judgeAndRegister(
currLevelDataSchema,
'object',
containerKey,
fieldKey
)
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
currLevelDataSchema[containerKey][fieldKey].errorMessage =
item[key]
} else {
judgeAndRegister(currLevelDataSchema, 'object', containerKey)
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
currLevelDataSchema[containerKey].errorMessage = item[key]
}
// 兜底报错信息解析
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
currLevelDataSchema[containerKey][fieldKey].errorMessage = item[key]
break
default:
if (key !== 'fieldKey') {
Expand Down
2 changes: 1 addition & 1 deletion packages/utils/src/schemaHandle/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export type DataSchema = {
properties?: Map
items?: Array<Map> | Map
required?: Array<string | number>
errorMessage: {
errorMessage?: {
required: Map
properties?: Map
items?: Map
Expand Down

0 comments on commit 6f0a89e

Please sign in to comment.