import { later, mockScrollIntoView } from '../../../test';
import { mountForm, mountSimpleRulesForm, getSimpleRules } from './shared';
test('submit method', async () => {
const onSubmit = jest.fn();
mountForm({
template: `
`,
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 and passed', (done) => {
mountSimpleRulesForm({
mounted() {
this.$refs.form.validate('A').catch((err) => {
expect(err).toEqual({ message: 'A failed', name: 'A' });
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() {
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.findAll('.van-field--error').length).toEqual(1);
this.$refs.form.resetValidation('B');
expect(wrapper.findAll('.van-field--error').length).toEqual(0);
done();
});
},
});
});
test('resetValidation method - reset when rule message is empty', (done) => {
const wrapper = mountSimpleRulesForm({
data() {
return {
rulesA: [{ required: true, message: '' }],
rulesB: [{ required: true, message: '' }],
};
},
mounted() {
this.$refs.form.validate().catch(() => {
this.$refs.form.resetValidation('A');
expect(wrapper.findAll('.van-field--error').length).toEqual(1);
done();
});
},
});
});
test('scrollToField method', (done) => {
const fn = mockScrollIntoView();
mountSimpleRulesForm({
mounted() {
this.$refs.form.scrollToField('unknown');
expect(fn).toHaveBeenCalledTimes(0);
this.$refs.form.scrollToField('A');
expect(fn).toHaveBeenCalledTimes(1);
done();
},
});
});