diff --git a/src/PropTypes.js b/src/PropTypes.js index 173e8fe8f..9d85747c9 100644 --- a/src/PropTypes.js +++ b/src/PropTypes.js @@ -59,6 +59,8 @@ export const SelectPropTypes = { onFocus: PropTypes.func, onSelect: PropTypes.func, onSearch: PropTypes.func, + onMouseEnter: PropTypes.func, + onMouseLeave: PropTypes.func, placeholder: PropTypes.any, onDeselect: PropTypes.func, labelInValue: PropTypes.bool, diff --git a/src/Select.jsx b/src/Select.jsx index 9956f27a8..209272728 100644 --- a/src/Select.jsx +++ b/src/Select.jsx @@ -1191,6 +1191,8 @@ export default class Select extends React.Component { return ( { allowClearTest('multiple'); blurTest('multiple'); + hoverTest('multiple'); renderTest('multiple'); removeSelectedTest('multiple'); diff --git a/tests/Select.tags.spec.js b/tests/Select.tags.spec.js index 2274cf885..e358b5298 100644 --- a/tests/Select.tags.spec.js +++ b/tests/Select.tags.spec.js @@ -5,6 +5,7 @@ import KeyCode from 'rc-util/lib/KeyCode'; import Select, { Option } from '../src'; import allowClearTest from './shared/allowClearTest'; import blurTest from './shared/blurTest'; +import hoverTest from './shared/hoverTest'; import renderTest from './shared/renderTest'; import removeSelectedTest from './shared/removeSelectedTest'; import throwOptionValue from './shared/throwOptionValue'; @@ -12,6 +13,7 @@ import throwOptionValue from './shared/throwOptionValue'; describe('Select.tags', () => { allowClearTest('tags'); blurTest('tags'); + hoverTest('tags'); renderTest('tags'); removeSelectedTest('tags'); throwOptionValue('tags'); diff --git a/tests/shared/hoverTest.js b/tests/shared/hoverTest.js new file mode 100644 index 000000000..c45da9226 --- /dev/null +++ b/tests/shared/hoverTest.js @@ -0,0 +1,23 @@ +/* eslint-disable no-undef */ +import React from 'react'; +import Select from '../../src/Select'; +import Option from '../../src/Option'; +import { mount } from 'enzyme'; + +export default function hoverTest(mode) { + it('triggers mouseEnter and mouseLeave', () => { + const onMouseEnter = jest.fn(); + const onMouseLeave = jest.fn(); + const wrapper = mount( + + ); + + wrapper.find('.rc-select').first().simulate('mouseenter'); + expect(onMouseEnter).toBeCalled(); + wrapper.find('.rc-select').first().simulate('mouseleave'); + expect(onMouseLeave).toBeCalled(); + }); +}