import React from 'react'; import { act } from 'react-dom/test-utils'; import { mount } from 'enzyme'; import Select from '..'; import Icon from '../../icon'; import focusTest from '../../../tests/shared/focusTest'; import mountTest from '../../../tests/shared/mountTest'; import rtlTest from '../../../tests/shared/rtlTest'; const { Option } = Select; describe('Select', () => { focusTest(Select); mountTest(Select); rtlTest(Select); function toggleOpen(wrapper) { act(() => { wrapper.find('.ant-select-selector').simulate('mousedown'); jest.runAllTimers(); wrapper.update(); }); } beforeEach(() => { jest.useFakeTimers(); }); afterEach(() => { jest.useRealTimers(); }); it('should have default notFoundContent', () => { const wrapper = mount(); toggleOpen(wrapper); const dropdownWrapper = mount( wrapper .find('Trigger') .instance() .getComponent(), ); expect(dropdownWrapper.find('MenuItem').length).toBe(0); }); it('should not have default notFoundContent when mode is combobox', () => { const wrapper = mount(, ); toggleOpen(wrapper); const dropdownWrapper = mount( wrapper .find('Trigger') .instance() .getComponent(), ); expect(dropdownWrapper.find('.ant-select-item-option').length).toBeFalsy(); expect( dropdownWrapper .find('.ant-select-item-empty') .at(0) .text(), ).toBe('not at all'); }); it('should be controlled by open prop', () => { const onDropdownVisibleChange = jest.fn(); const wrapper = mount( , ); let dropdownWrapper = mount( wrapper .find('Trigger') .instance() .getComponent(), ); expect(dropdownWrapper.props().visible).toBe(true); toggleOpen(wrapper); expect(onDropdownVisibleChange).toHaveBeenLastCalledWith(false); expect(dropdownWrapper.props().visible).toBe(true); wrapper.setProps({ open: false }); dropdownWrapper = mount( wrapper .find('Trigger') .instance() .getComponent(), ); expect(dropdownWrapper.props().visible).toBe(false); toggleOpen(wrapper); expect(onDropdownVisibleChange).toHaveBeenLastCalledWith(true); expect(dropdownWrapper.props().visible).toBe(false); }); describe('Select Custom Icons', () => { it('should support customized icons', () => { const wrapper = mount( , ); wrapper.setProps({ count: 10 }); jest.runAllTimers(); expect(wrapper.render()).toMatchSnapshot(); }); }); });