|
5 | 5 | */ |
6 | 6 |
|
7 | 7 | import React from 'react'; |
8 | | -import { shallowWithIntl } from 'test_utils/enzyme_helpers'; |
| 8 | +import { act } from 'react-dom/test-utils'; |
| 9 | +import { MemoryRouter } from 'react-router-dom'; |
| 10 | +import { mount } from 'enzyme'; |
| 11 | + |
| 12 | +import { EuiSelect } from '@elastic/eui'; |
| 13 | + |
9 | 14 | import { SelectInterval } from './select_interval'; |
10 | 15 |
|
11 | 16 | describe('SelectInterval', () => { |
12 | 17 | test('creates correct initial selected value', () => { |
13 | | - const wrapper = shallowWithIntl(<SelectInterval />); |
14 | | - const defaultSelectedValue = wrapper.props().interval.val; |
| 18 | + const wrapper = mount( |
| 19 | + <MemoryRouter> |
| 20 | + <SelectInterval /> |
| 21 | + </MemoryRouter> |
| 22 | + ); |
| 23 | + const select = wrapper.find(EuiSelect); |
15 | 24 |
|
| 25 | + const defaultSelectedValue = select.props().value; |
16 | 26 | expect(defaultSelectedValue).toBe('auto'); |
17 | 27 | }); |
18 | 28 |
|
19 | | - test('currently selected value is updated correctly on click', () => { |
20 | | - const wrapper = shallowWithIntl(<SelectInterval />); |
21 | | - const select = wrapper.first().shallow(); |
22 | | - |
23 | | - const defaultSelectedValue = wrapper.props().interval.val; |
| 29 | + test('currently selected value is updated correctly on click', done => { |
| 30 | + const wrapper = mount( |
| 31 | + <MemoryRouter> |
| 32 | + <SelectInterval /> |
| 33 | + </MemoryRouter> |
| 34 | + ); |
| 35 | + const select = wrapper.find(EuiSelect).first(); |
| 36 | + const defaultSelectedValue = select.props().value; |
24 | 37 | expect(defaultSelectedValue).toBe('auto'); |
25 | 38 |
|
26 | | - select.simulate('change', { target: { value: 'day' } }); |
27 | | - const updatedSelectedValue = wrapper.props().interval.val; |
28 | | - expect(updatedSelectedValue).toBe('day'); |
| 39 | + const onChange = select.props().onChange; |
| 40 | + |
| 41 | + act(() => { |
| 42 | + if (onChange !== undefined) { |
| 43 | + onChange({ target: { value: 'day' } } as React.ChangeEvent<HTMLSelectElement>); |
| 44 | + } |
| 45 | + }); |
| 46 | + |
| 47 | + setImmediate(() => { |
| 48 | + wrapper.update(); |
| 49 | + const updatedSelect = wrapper.find(EuiSelect).first(); |
| 50 | + const updatedSelectedValue = updatedSelect.props().value; |
| 51 | + expect(updatedSelectedValue).toBe('day'); |
| 52 | + done(); |
| 53 | + }); |
29 | 54 | }); |
30 | 55 | }); |
0 commit comments