From 27187a2fc46d4555728995a2454eca0fb619fddf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=98=89=E6=B6=B5?= Date: Thu, 13 Feb 2020 20:22:16 +0800 Subject: [PATCH] test(Form): add test cases of validators --- src/form/test/props.spec.js | 69 +++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/src/form/test/props.spec.js b/src/form/test/props.spec.js index 007d23bbc..eaa9ae407 100644 --- a/src/form/test/props.spec.js +++ b/src/form/test/props.spec.js @@ -1,6 +1,75 @@ import { mount, later } from '../../../test'; import { mountForm, getSimpleRules } from './shared'; +test('rules prop - execute order', async () => { + const onFailed = jest.fn(); + const wrapper = mountForm({ + template: ` + + + + + `, + data() { + return { + rules: [ + { required: true, message: 'A' }, + { validator: val => val.length > 6, message: 'B' }, + { validator: val => val !== 'foo', message: 'C' }, + ], + }; + }, + methods: { + onFailed, + }, + }); + + wrapper.find('.van-button').trigger('click'); + await later(); + + expect(onFailed).toHaveBeenCalledWith({ + errors: [{ message: 'B', name: 'A' }], + values: { A: '123' }, + }); +}); + +test('rules prop - async validator', async () => { + const onFailed = jest.fn(); + const wrapper = mountForm({ + template: ` + + + + + `, + data() { + return { + rules: [ + { + validator: () => new Promise(resolve => resolve(true)), + message: 'should pass', + }, + { + validator: () => new Promise(resolve => resolve(false)), + message: 'should fail', + }, + ], + }; + }, + methods: { + onFailed, + }, + }); + + wrapper.find('.van-button').trigger('click'); + await later(10); + + expect(onFailed).toHaveBeenCalledWith({ + errors: [{ message: 'should fail', name: 'A' }], + values: { A: '123' }, + }); +}); + test('validate-first prop', async () => { const onFailed = jest.fn(); const wrapper = mountForm({