From 4bd8818211dbf58196b007535a34a1346f31016c Mon Sep 17 00:00:00 2001 From: Bruno Maia Date: Fri, 28 Jul 2017 14:52:12 +0100 Subject: [PATCH 1/2] Propagate onMouseEnter and onMouseLeave from SelectTrigger to Select --- src/PropTypes.js | 2 ++ src/Select.jsx | 2 ++ 2 files changed, 4 insertions(+) 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 ( Date: Sat, 28 Oct 2017 16:50:59 +0100 Subject: [PATCH 2/2] Add hover spec --- tests/Select.multiple.spec.js | 2 ++ tests/Select.tags.spec.js | 2 ++ tests/shared/hoverTest.js | 23 +++++++++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 tests/shared/hoverTest.js diff --git a/tests/Select.multiple.spec.js b/tests/Select.multiple.spec.js index b50d6d997..6501140c7 100644 --- a/tests/Select.multiple.spec.js +++ b/tests/Select.multiple.spec.js @@ -4,12 +4,14 @@ import { mount } from 'enzyme'; import Select, { Option, OptGroup } 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'; describe('Select.multiple', () => { 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(); + }); +}