20260917212907

This commit is contained in:
oneao committed 2026-09-17 21:29:08 +08:00
1 parent 6fa3d8535e
commit 5cbf745bbf
115 files changed
+4104 -85

No files matched your search

+56 -1
View File
@@ -1,8 +1,9 @@
import { describe, it, expect } from 'vitest'
import { afterEach, describe, it, expect } from 'vitest'
import { h, nextTick, ref } from 'vue'
import { flushPromises, mount } from '@vue/test-utils'
import Form from '@/components/ui/form/form.vue'
import FormItem from '@/components/ui/form/form-item.vue'
import { resetUIConfig, setUIConfig, uiConfig } from '@/components/ui/config'
const model = () =>
ref({
@@ -72,6 +73,60 @@ describe('Form 多列网格布局', () => {
})
})
describe('Form 全局配置(uiConfig)', () => {
afterEach(() => resetUIConfig())
it('未传 layout 时取全局配置', () => {
setUIConfig({ form: { layout: 'vertical' } })
const wrapper = mountForm()
expect(wrapper.classes()).toContain('fms-form-vertical')
expect(wrapper.findComponent(FormItem).classes()).toContain('fms-form-item-vertical')
})
it('显式 layout 覆盖全局配置', () => {
setUIConfig({ form: { layout: 'vertical' } })
const wrapper = mountForm(1, { layout: 'horizontal' })
expect(wrapper.classes()).toContain('fms-form-horizontal')
expect(wrapper.findComponent(FormItem).classes()).not.toContain('fms-form-item-vertical')
})
it('setUIConfig 局部合并,未提及的键保持原值', () => {
setUIConfig({ form: { labelAlign: 'left' } })
expect(uiConfig.form.labelAlign).toBe('left')
expect(uiConfig.form.layout).toBe('horizontal')
setUIConfig({ form: { layout: 'vertical' } })
expect(uiConfig.form.labelAlign).toBe('left')
})
it('全局 validateTrigger 生效:change 改为 blur 后值变化不立即报红', async () => {
setUIConfig({ form: { validateTrigger: 'blur' } })
const model = ref({ code: '' })
const wrapper = mount(Form, {
props: { model: model.value, rules: { code: [{ required: true, message: '必填' }] } },
slots: {
default: () => [
h(FormItem, { name: 'code', label: '编码' }, { default: () => h('input') }),
],
},
})
model.value.code = 'a'
await nextTick()
model.value.code = ''
await nextTick()
await flushPromises()
expect(wrapper.findComponent(FormItem).classes()).not.toContain('fms-form-item-error')
})
it('独立使用的 FormItem(无 Form 包裹)也读全局 layout', () => {
setUIConfig({ form: { layout: 'vertical' } })
const wrapper = mount(FormItem, {
props: { name: 'code', label: '编码' },
slots: { default: () => h('input') },
})
expect(wrapper.classes()).toContain('fms-form-item-vertical')
})
})
describe('Form 必填校验与 FormItem 错误展示', () => {
function mountRequiredForm(rules, modelValue = { code: '' }) {
const model = ref(modelValue)