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,
});
}