59 lines
2.2 KiB
TypeScript
59 lines
2.2 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import { validateContactForm, type ContactFormInput } from '@/pages/family/contact/validate'
|
|
import type { CareContact } from '@/api/careMember'
|
|
|
|
const contact = (over: Partial<CareContact & { tmpId: string }> = {}): CareContact & { tmpId: string } => ({
|
|
tmpId: 'c1',
|
|
name: '',
|
|
phone: '',
|
|
relationShip: '',
|
|
...over
|
|
})
|
|
|
|
const form = (over: Partial<ContactFormInput> = {}): ContactFormInput => ({
|
|
name: '王奶奶',
|
|
idNumber: '440301194001010000',
|
|
address: '深圳市南山区',
|
|
contacts: [],
|
|
...over
|
|
})
|
|
|
|
describe('添加关爱对象表单校验', () => {
|
|
it('必填齐全返回 ok', () => {
|
|
const result = validateContactForm(form())
|
|
expect(result.ok).toBe(true)
|
|
if (result.ok) expect(result.contacts).toEqual([])
|
|
})
|
|
|
|
it('任一必填缺失/空白报 请填写完整', () => {
|
|
const r1 = validateContactForm(form({ name: '' }))
|
|
const r2 = validateContactForm(form({ idNumber: ' ' }))
|
|
const r3 = validateContactForm(form({ address: '' }))
|
|
expect(!r1.ok && r1.error).toBe('请填写完整')
|
|
expect(!r2.ok && r2.error).toBe('请填写完整')
|
|
expect(!r3.ok && r3.error).toBe('请填写完整')
|
|
})
|
|
|
|
it('空白联系人卡被过滤,不阻断提交', () => {
|
|
const result = validateContactForm(form({ contacts: [contact()] }))
|
|
expect(result.ok).toBe(true)
|
|
if (result.ok) expect(result.contacts).toEqual([])
|
|
})
|
|
|
|
it('联系人只填了姓名或电话时报 请完整填写联系人', () => {
|
|
const r1 = validateContactForm(form({ contacts: [contact({ name: '张女士' })] }))
|
|
const r2 = validateContactForm(form({ contacts: [contact({ phone: '13800138000' })] }))
|
|
expect(!r1.ok && r1.error).toBe('请完整填写联系人')
|
|
expect(!r2.ok && r2.error).toBe('请完整填写联系人')
|
|
})
|
|
|
|
it('姓名电话齐全的联系人保留,且提交前剥掉 tmpId', () => {
|
|
const c = contact({ tmpId: 'c9', name: '张女士', phone: '13800138000', relationShip: '配偶' })
|
|
const result = validateContactForm(form({ contacts: [c] }))
|
|
expect(result.ok).toBe(true)
|
|
if (result.ok) {
|
|
expect(result.contacts).toEqual([{ name: '张女士', phone: '13800138000', relationShip: '配偶' }])
|
|
}
|
|
})
|
|
})
|