test(Form): add test cases of methods

This commit is contained in:
陈嘉涵 2020-02-13 20:11:57 +08:00
parent 2970599c27
commit a29ddf3fad
5 changed files with 124 additions and 26 deletions

View File

@ -0,0 +1,17 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`resetValidation method - reset one field 1`] = `
<form class="van-form">
<div class="van-cell van-field">
<div class="van-cell__value van-cell__value--alone van-field__value">
<div class="van-field__body"><input type="text" name="A" class="van-field__control"></div>
</div>
</div>
<div class="van-cell van-field van-field--error">
<div class="van-cell__value van-cell__value--alone van-field__value">
<div class="van-field__body"><input type="text" name="B" class="van-field__control"></div>
<div class="van-field__error-message">B failed</div>
</div>
</div> <button type="submit" class="van-button van-button--default van-button--normal"></button>
</form>
`;

View File

@ -1,5 +1,5 @@
import { later } from '../../../test'; import { later } from '../../../test';
import { mountForm } from './shared'; import { mountForm, mountSimpleRulesForm } from './shared';
test('submit event', async () => { test('submit event', async () => {
const onSubmit = jest.fn(); const onSubmit = jest.fn();
@ -23,20 +23,7 @@ test('submit event', async () => {
test('failed event', async () => { test('failed event', async () => {
const onFailed = jest.fn(); const onFailed = jest.fn();
const wrapper = mountForm({ const wrapper = mountSimpleRulesForm({
template: `
<van-form @failed="onFailed">
<van-field name="A" :rules="rulesA" value="" />
<van-field name="B" :rules="rulesB" value="" />
<van-button native-type="submit" />
</van-form>
`,
data() {
return {
rulesA: [{ required: true, message: 'A failed' }],
rulesB: [{ required: true, message: 'B failed' }],
};
},
methods: { methods: {
onFailed, onFailed,
}, },

View File

@ -0,0 +1,74 @@
import { later } from '../../../test';
import { mountForm, mountSimpleRulesForm } from './shared';
test('submit method', async () => {
const onSubmit = jest.fn();
mountForm({
template: `
<van-form ref="form" @submit="onSubmit">
<van-field name="A" value="bar" />
<van-button native-type="submit" />
</van-form>
`,
mounted() {
this.$refs.form.submit();
},
methods: {
onSubmit,
},
});
await later();
expect(onSubmit).toHaveBeenCalledWith({ A: 'bar' });
});
test('validate method - validate all fields', done => {
mountSimpleRulesForm({
mounted() {
this.$refs.form.validate().catch(err => {
expect(err).toEqual([
{ message: 'A failed', name: 'A' },
{ message: 'B failed', name: 'B' },
]);
done();
});
},
});
});
test('validate method - validate one field', done => {
mountSimpleRulesForm({
mounted() {
this.$refs.form.validate('A').catch(err => {
expect(err).toEqual({ message: 'A failed', name: 'A' });
done();
});
},
});
});
test('resetValidation method - reset all fields', done => {
const wrapper = mountSimpleRulesForm({
mounted() {
this.$refs.form.validate().catch(() => {
this.$refs.form.resetValidation();
const errors = wrapper.findAll('.van-field__error-message');
expect(errors.length).toEqual(0);
done();
});
},
});
});
test('resetValidation method - reset one field', done => {
const wrapper = mountSimpleRulesForm({
mounted() {
this.$refs.form.validate().catch(() => {
this.$refs.form.resetValidation('A');
expect(wrapper).toMatchSnapshot();
done();
});
},
});
});

View File

@ -1,21 +1,18 @@
import { mount, later } from '../../../test'; import { mount, later } from '../../../test';
import { mountForm } from './shared'; import { mountForm, getSimpleRules } from './shared';
test('validate-first prop', async () => { test('validate-first prop', async () => {
const onFailed = jest.fn(); const onFailed = jest.fn();
const wrapper = mountForm({ const wrapper = mountForm({
template: ` template: `
<van-form validate-first @failed="onFailed"> <van-form validate-first @failed="onFailed">
<van-field name="A" :rules="rulesA" value="" /> <van-field name="A" :rules="rulesA" value="" />
<van-field name="B" :rules="rulesB" value="" /> <van-field name="B" :rules="rulesB" value="" />
<van-button native-type="submit" /> <van-button native-type="submit" />
</van-form> </van-form>
`, `,
data() { data() {
return { return getSimpleRules();
rulesA: [{ required: true, message: 'A failed' }],
rulesB: [{ required: true, message: 'B failed' }],
};
}, },
methods: { methods: {
onFailed, onFailed,

View File

@ -3,3 +3,26 @@ import { mount } from '../../../test';
export function mountForm(options) { export function mountForm(options) {
return mount(options, { attachToDocument: true }); return mount(options, { attachToDocument: true });
} }
export function getSimpleRules() {
return {
rulesA: [{ required: true, message: 'A failed' }],
rulesB: [{ required: true, message: 'B failed' }],
};
}
export function mountSimpleRulesForm(options) {
return mountForm({
template: `
<van-form ref="form" @failed="onFailed">
<van-field name="A" :rules="rulesA" value="" />
<van-field name="B" :rules="rulesB" value="" />
<van-button native-type="submit" />
</van-form>
`,
data() {
return getSimpleRules();
},
...options,
});
}