zombiej
4 years ago
1 changed files with 75 additions and 0 deletions
@ -0,0 +1,75 @@ |
|||||
|
import React from 'react'; |
||||
|
import { mount } from 'enzyme'; |
||||
|
import { act } from 'react-dom/test-utils'; |
||||
|
import Form from '..'; |
||||
|
import Input from '../../input'; |
||||
|
import { sleep } from '../../../tests/utils'; |
||||
|
import { FormListOperation } from '../FormList'; |
||||
|
|
||||
|
describe('Form.List.NoStyle', () => { |
||||
|
it('nest error should clean up', async () => { |
||||
|
jest.useFakeTimers(); |
||||
|
|
||||
|
let operation: FormListOperation; |
||||
|
|
||||
|
const wrapper = mount( |
||||
|
<Form> |
||||
|
<Form.List name="users"> |
||||
|
{(fields, op) => { |
||||
|
operation = op; |
||||
|
|
||||
|
return fields.map(field => ( |
||||
|
<Form.Item key={field.key}> |
||||
|
<Form.Item |
||||
|
{...field} |
||||
|
name={[field.name, 'first']} |
||||
|
fieldKey={[field.fieldKey, 'first']} |
||||
|
rules={[{ required: true }]} |
||||
|
noStyle |
||||
|
> |
||||
|
<Input /> |
||||
|
</Form.Item> |
||||
|
</Form.Item> |
||||
|
)); |
||||
|
}} |
||||
|
</Form.List> |
||||
|
</Form>, |
||||
|
); |
||||
|
|
||||
|
// Add two
|
||||
|
async function addItem() { |
||||
|
await act(async () => { |
||||
|
operation!.add(); |
||||
|
await sleep(100); |
||||
|
jest.runAllTimers(); |
||||
|
wrapper.update(); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
addItem(); |
||||
|
addItem(); |
||||
|
|
||||
|
// Submit
|
||||
|
await act(async () => { |
||||
|
wrapper.find('form').simulate('submit'); |
||||
|
await sleep(100); |
||||
|
jest.runAllTimers(); |
||||
|
wrapper.update(); |
||||
|
}); |
||||
|
|
||||
|
// Remove first field
|
||||
|
await act(async () => { |
||||
|
operation!.remove(0); |
||||
|
await sleep(100); |
||||
|
jest.runAllTimers(); |
||||
|
wrapper.update(); |
||||
|
}); |
||||
|
|
||||
|
// Match error message
|
||||
|
expect(wrapper.find('.ant-form-item-explain-error').text()).toEqual( |
||||
|
"'users.1.first' is required", |
||||
|
); |
||||
|
|
||||
|
jest.useRealTimers(); |
||||
|
}); |
||||
|
}); |
Loading…
Reference in new issue