diff --git a/src/field/test/index.spec.js b/src/field/test/index.spec.js index 1823f89cc..3f678ab07 100644 --- a/src/field/test/index.spec.js +++ b/src/field/test/index.spec.js @@ -300,3 +300,17 @@ test('name prop', () => { }); expect(wrapper).toMatchSnapshot(); }); + +test('call focus method before mounted', done => { + mount(Field, { + created() { + this.focus(); + this.blur(); + done(); + }, + }); +}); + +test('destroy field', () => { + mount(Field).destroy(); +}); diff --git a/src/form/index.js b/src/form/index.js index 9138364da..e392406e2 100644 --- a/src/form/index.js +++ b/src/form/index.js @@ -138,3 +138,4 @@ export default createComponent({ ); }, }); +// diff --git a/src/form/test/events.spec.js b/src/form/test/events.spec.js index 8d879385b..e55873c9a 100644 --- a/src/form/test/events.spec.js +++ b/src/form/test/events.spec.js @@ -5,11 +5,11 @@ test('submit event', async () => { const onSubmit = jest.fn(); const wrapper = mountForm({ template: ` - - - - - `, + + + + + `, methods: { onSubmit, }, diff --git a/src/form/test/index.spec.js b/src/form/test/index.spec.js new file mode 100644 index 000000000..70789ddea --- /dev/null +++ b/src/form/test/index.spec.js @@ -0,0 +1,39 @@ +import { later } from '../../../test'; +import { mountForm } from './shared'; + +test('dynamic add/remove fileds', async () => { + const onSubmit = jest.fn(); + const wrapper = mountForm({ + template: ` + + + + + `, + data() { + return { list: ['A'] }; + }, + methods: { + onSubmit, + }, + }); + + wrapper.find('.van-button').trigger('click'); + await later(); + expect(onSubmit).toHaveBeenCalledWith({ A: '' }); + + wrapper.setData({ list: ['A', 'B'] }); + wrapper.find('.van-button').trigger('click'); + await later(); + expect(onSubmit).toHaveBeenCalledWith({ A: '', B: '' }); + + wrapper.setData({ list: ['B'] }); + wrapper.find('.van-button').trigger('click'); + await later(); + expect(onSubmit).toHaveBeenCalledWith({ B: '' }); +}); diff --git a/src/form/test/methods.spec.js b/src/form/test/methods.spec.js index 275be4eda..4354c9ca7 100644 --- a/src/form/test/methods.spec.js +++ b/src/form/test/methods.spec.js @@ -1,5 +1,5 @@ import { later } from '../../../test'; -import { mountForm, mountSimpleRulesForm } from './shared'; +import { mountForm, mountSimpleRulesForm, getSimpleRules } from './shared'; test('submit method', async () => { const onSubmit = jest.fn(); @@ -37,7 +37,7 @@ test('validate method - validate all fields', done => { }); }); -test('validate method - validate one field', done => { +test('validate method - validate one field and passed', done => { mountSimpleRulesForm({ mounted() { this.$refs.form.validate('A').catch(err => { @@ -48,6 +48,30 @@ test('validate method - validate one field', done => { }); }); +test('validate method - validate one field and failed', done => { + mountForm({ + template: ` + + + + + + `, + data: getSimpleRules, + mounted() { + this.$refs.form.validate('A').then(done); + }, + }); +}); + +test('validate method - unexisted name', done => { + mountSimpleRulesForm({ + mounted() { + this.$refs.form.validate('unexisted').catch(done); + }, + }); +}); + test('resetValidation method - reset all fields', done => { const wrapper = mountSimpleRulesForm({ mounted() { diff --git a/src/form/test/props.spec.js b/src/form/test/props.spec.js index eaa9ae407..fea8101f0 100644 --- a/src/form/test/props.spec.js +++ b/src/form/test/props.spec.js @@ -71,19 +71,25 @@ test('rules prop - async validator', async () => { }); test('validate-first prop', async () => { + const onSubmit = jest.fn(); const onFailed = jest.fn(); + const wrapper = mountForm({ template: ` - - - + + + `, data() { - return getSimpleRules(); + return { + ...getSimpleRules(), + value: '', + }; }, methods: { + onSubmit, onFailed, }, }); @@ -96,6 +102,12 @@ test('validate-first prop', async () => { errors: [{ message: 'A failed', name: 'A' }], values: { A: '', B: '' }, }); + + wrapper.setData({ value: 'foo' }); + wrapper.find('.van-button').trigger('click'); + await later(); + + expect(onSubmit).toHaveBeenCalledWith({ A: 'foo', B: 'foo' }); }); test('label-align prop', () => { diff --git a/src/form/test/shared.js b/src/form/test/shared.js index dbca07c3b..4fbff62b6 100644 --- a/src/form/test/shared.js +++ b/src/form/test/shared.js @@ -1,4 +1,9 @@ -import { mount } from '../../../test'; +import { mount, later } from '../../../test'; + +export async function submitForm(wrapper) { + wrapper.find('.van-button').trigger('click'); + return later(); +} export function mountForm(options) { return mount(options, { attachToDocument: true }); @@ -20,9 +25,7 @@ export function mountSimpleRulesForm(options) { `, - data() { - return getSimpleRules(); - }, + data: getSimpleRules, ...options, }); }