diff --git a/src/form/README.zh-CN.md b/src/form/README.zh-CN.md index a33b05a65..fa96eafba 100644 --- a/src/form/README.zh-CN.md +++ b/src/form/README.zh-CN.md @@ -2,7 +2,7 @@ ### 介绍 -用于数据录入、校验,支持输入框、单选框、复选框、文件上传等类型 +用于数据录入、校验,支持输入框、单选框、复选框、文件上传等类型,2.5 版本开始支持此组件 ### 引入 diff --git a/src/form/test/__snapshots__/events.spec.js.snap b/src/form/test/__snapshots__/events.spec.js.snap new file mode 100644 index 000000000..9904e678f --- /dev/null +++ b/src/form/test/__snapshots__/events.spec.js.snap @@ -0,0 +1,18 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`failed event 1`] = ` +
+
+
+
+
A failed
+
+
+
+
+
+
B failed
+
+
+
+`; diff --git a/src/form/test/__snapshots__/props.spec.js.snap b/src/form/test/__snapshots__/props.spec.js.snap new file mode 100644 index 000000000..5a5be4948 --- /dev/null +++ b/src/form/test/__snapshots__/props.spec.js.snap @@ -0,0 +1,81 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`error-message-align prop 1`] = ` +
+
+
+
+
Error
+
+
+
+`; + +exports[`input-align prop 1`] = ` +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`; + +exports[`label-align prop 1`] = ` +
+
+
Label
+
+
+
+
+
+
Label
+
+
+
+
+
+`; + +exports[`label-width prop 1`] = ` +
+
+
Label
+
+
+
+
+
+
Label
+
+
+
+
+
+`; + +exports[`validate-first prop 1`] = ` +
+
+
+
+
A failed
+
+
+
+
+
+
+
+
+`; diff --git a/src/form/test/index.spec.js b/src/form/test/events.spec.js similarity index 90% rename from src/form/test/index.spec.js rename to src/form/test/events.spec.js index 6f515be80..0058c062b 100644 --- a/src/form/test/index.spec.js +++ b/src/form/test/events.spec.js @@ -1,8 +1,5 @@ -import { mount, later } from '../../../test'; - -function mountForm(options) { - return mount(options, { attachToDocument: true }); -} +import { later } from '../../../test'; +import { mountForm } from './shared'; test('submit event', async () => { const onSubmit = jest.fn(); @@ -46,8 +43,9 @@ test('failed event', async () => { }); wrapper.find('.van-button').trigger('click'); - await later(); + + expect(wrapper).toMatchSnapshot(); expect(onFailed).toHaveBeenCalledWith({ errors: [ { name: 'A', message: 'A failed' }, diff --git a/src/form/test/props.spec.js b/src/form/test/props.spec.js new file mode 100644 index 000000000..323785836 --- /dev/null +++ b/src/form/test/props.spec.js @@ -0,0 +1,82 @@ +import { mount, later } from '../../../test'; +import { mountForm } from './shared'; + +test('validate-first prop', async () => { + const onFailed = jest.fn(); + const wrapper = mountForm({ + template: ` + + + + + + `, + data() { + return { + rulesA: [{ required: true, message: 'A failed' }], + rulesB: [{ required: true, message: 'B failed' }], + }; + }, + methods: { + onFailed, + }, + }); + + wrapper.find('.van-button').trigger('click'); + await later(); + + expect(wrapper).toMatchSnapshot(); + expect(onFailed).toHaveBeenCalledWith({ + errors: [{ message: 'A failed', name: 'A' }], + values: { A: '', B: '' }, + }); +}); + +test('label-align prop', () => { + const wrapper = mount({ + template: ` + + + + + `, + }); + expect(wrapper).toMatchSnapshot(); +}); + +test('label-width prop', () => { + const wrapper = mount({ + template: ` + + + + + `, + }); + expect(wrapper).toMatchSnapshot(); +}); + +test('input-align prop', () => { + const wrapper = mount({ + template: ` + + + +
+ + + `, + }); + expect(wrapper).toMatchSnapshot(); +}); + +test('error-message-align prop', () => { + const wrapper = mount({ + template: ` + + + + `, + }); + expect(wrapper).toMatchSnapshot(); +}); diff --git a/src/form/test/shared.js b/src/form/test/shared.js new file mode 100644 index 000000000..4a4f6f96c --- /dev/null +++ b/src/form/test/shared.js @@ -0,0 +1,5 @@ +import { mount } from '../../../test'; + +export function mountForm(options) { + return mount(options, { attachToDocument: true }); +}