|
1 |
| -import React from 'react'; |
| 1 | +import React, { useEffect } from 'react'; |
2 | 2 | import { mount } from 'enzyme';
|
3 | 3 | import { act } from 'react-dom/test-utils';
|
4 | 4 | import Form, { Field, useForm } from '../src';
|
@@ -750,4 +750,48 @@ describe('Form.Validate', () => {
|
750 | 750 | await changeValue(wrapper, '');
|
751 | 751 | matchError(wrapper, true);
|
752 | 752 | });
|
| 753 | + it('validated status should be true when trigger validate', async () => { |
| 754 | + const validateTrigger = jest.fn(); |
| 755 | + const validateNoTrigger = jest.fn(); |
| 756 | + const App = ({ trigger = true }) => { |
| 757 | + const ref = React.useRef(null); |
| 758 | + useEffect(() => { |
| 759 | + if (!trigger) return; |
| 760 | + ref.current!.validateFields(); |
| 761 | + }, [trigger]); |
| 762 | + return ( |
| 763 | + <div> |
| 764 | + <Form ref={ref}> |
| 765 | + <InfoField |
| 766 | + |
| 767 | + name="email" |
| 768 | + onMetaChange={meta => { |
| 769 | + if (trigger) { |
| 770 | + validateTrigger(meta.validated); |
| 771 | + } else { |
| 772 | + validateNoTrigger(meta.validated); |
| 773 | + } |
| 774 | + }} |
| 775 | + rules={[ |
| 776 | + { |
| 777 | + type: 'email', |
| 778 | + message: 'Please input your e-mail', |
| 779 | + }, |
| 780 | + { |
| 781 | + required: true, |
| 782 | + message: 'Please input your value', |
| 783 | + }, |
| 784 | + ]} |
| 785 | + /> |
| 786 | + </Form> |
| 787 | + </div> |
| 788 | + ); |
| 789 | + }; |
| 790 | + const wrapper = mount(<App trigger={false} />); |
| 791 | + await timeout(); |
| 792 | + expect(validateNoTrigger).not.toHaveBeenCalled(); |
| 793 | + wrapper.setProps({ trigger: true }); |
| 794 | + await timeout(); |
| 795 | + expect(validateTrigger).toBeCalledWith(true); |
| 796 | + }); |
753 | 797 | });
|
0 commit comments