test: add tooltip test
							parent
							
								
									d5baf1bfb1
								
							
						
					
					
						commit
						0771acb193
					
				|  | @ -0,0 +1,215 @@ | |||
| import { asyncExpect } from '@/tests/utils' | ||||
| import { mount } from '@vue/test-utils' | ||||
| import Tooltip from '..' | ||||
| import Button from '../../button' | ||||
| 
 | ||||
| describe('Tooltip', () => { | ||||
|   it('check `onVisibleChange` arguments', async () => { | ||||
|     const onVisibleChange = jest.fn() | ||||
|     const wrapper = mount({ | ||||
|       props: ['title', 'visible'], | ||||
|       render () { | ||||
|         const props = { | ||||
|           props: { | ||||
|             title: this.title || '', | ||||
|             mouseEnterDelay: 0, | ||||
|             mouseLeaveDelay: 0, | ||||
|           }, | ||||
|           on: { | ||||
|             visibleChange: onVisibleChange, | ||||
|           }, | ||||
|         } | ||||
|         if (this.visible !== undefined) { | ||||
|           props.props.visible = this.visible | ||||
|         } | ||||
|         return <Tooltip | ||||
|           ref='tooltip' | ||||
|           {...props} | ||||
|         > | ||||
|           <div id='hello'>Hello world!</div> | ||||
|         </Tooltip> | ||||
|       }, | ||||
|     }, { sync: false }) | ||||
| 
 | ||||
|     let div = null | ||||
|     let lastCount = null | ||||
|     await asyncExpect(() => { | ||||
|       // `title` is empty.
 | ||||
|       div = wrapper.findAll('#hello').at(0) | ||||
|       div.trigger('mouseenter') | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
|       expect(onVisibleChange).not.toHaveBeenCalled() | ||||
|       expect(wrapper.vm.$refs.tooltip.$refs.tooltip.visible).toBe(false) | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
|       div.trigger('mouseleave') | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
|       expect(onVisibleChange).not.toHaveBeenCalled() | ||||
|       expect(wrapper.vm.$refs.tooltip.$refs.tooltip.visible).toBe(false) | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
|       // update `title` value.
 | ||||
|       wrapper.setProps({ title: 'Have a nice day!' }) | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
|       wrapper.findAll('#hello').at(0).trigger('mouseenter') | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
|       expect(onVisibleChange).toHaveBeenLastCalledWith(true) | ||||
|       expect(wrapper.vm.$refs.tooltip.$refs.tooltip.visible).toBe(true) | ||||
|     }, 0) | ||||
|     await asyncExpect(() => { | ||||
|       wrapper.find('#hello').trigger('mouseleave') | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
|       expect(onVisibleChange).toHaveBeenLastCalledWith(false) | ||||
|       expect(wrapper.vm.$refs.tooltip.$refs.tooltip.visible).toBe(false) | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
|       // add `visible` props.
 | ||||
|       wrapper.setProps({ visible: false }) | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
|       wrapper.find('#hello').trigger('mouseenter') | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
|       expect(onVisibleChange).toHaveBeenLastCalledWith(true) | ||||
|       lastCount = onVisibleChange.mock.calls.length | ||||
|       expect(wrapper.vm.$refs.tooltip.$refs.tooltip.visible).toBe(false) | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
|       // always trigger onVisibleChange
 | ||||
|       wrapper.trigger('mouseleave') | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
|       expect(onVisibleChange.mock.calls.length).toBe(lastCount) // no change with lastCount
 | ||||
|       expect(wrapper.vm.$refs.tooltip.$refs.tooltip.visible).toBe(false) | ||||
|     }) | ||||
|     await asyncExpect(() => { | ||||
| 
 | ||||
|     }) | ||||
|   }) | ||||
| 
 | ||||
|   // it('should hide when mouse leave native disabled button', () => {
 | ||||
|   //   const onVisibleChange = jest.fn()
 | ||||
|   //   const wrapper = mount(
 | ||||
|   //     <Tooltip
 | ||||
|   //       title='xxxxx'
 | ||||
|   //       mouseEnterDelay={0}
 | ||||
|   //       mouseLeaveDelay={0}
 | ||||
|   //       onVisibleChange={onVisibleChange}
 | ||||
|   //     >
 | ||||
|   //       <button disabled>Hello world!</button>
 | ||||
|   //     </Tooltip>
 | ||||
|   //   )
 | ||||
| 
 | ||||
|   //   expect(wrapper.find('span')).toHaveLength(1)
 | ||||
|   //   const button = wrapper.find('span').at(0)
 | ||||
|   //   button.dispatchEvent(new MouseEvent('mouseenter'))
 | ||||
|   //   expect(onVisibleChange).toBeCalledWith(true)
 | ||||
|   //   expect(wrapper.vm.$refs.tooltip.$refs.tooltip.visible).toBe(true)
 | ||||
| 
 | ||||
|   //   button.trigger('mouseleave')
 | ||||
|   //   expect(onVisibleChange).toBeCalledWith(false)
 | ||||
|   //   expect(wrapper.vm.$refs.tooltip.$refs.tooltip.visible).toBe(false)
 | ||||
|   // })
 | ||||
| 
 | ||||
|   // it('should hide when mouse leave antd disabled Button', () => {
 | ||||
|   //   const onVisibleChange = jest.fn()
 | ||||
|   //   const wrapper = mount(
 | ||||
|   //     <Tooltip
 | ||||
|   //       title='xxxxx'
 | ||||
|   //       mouseEnterDelay={0}
 | ||||
|   //       mouseLeaveDelay={0}
 | ||||
|   //       onVisibleChange={onVisibleChange}
 | ||||
|   //     >
 | ||||
|   //       <Button disabled>Hello world!</Button>
 | ||||
|   //     </Tooltip>
 | ||||
|   //   )
 | ||||
| 
 | ||||
|   //   expect(wrapper.render()).toMatchSnapshot()
 | ||||
|   //   const button = wrapper.find('span').at(0)
 | ||||
|   //   button.dispatchEvent(new MouseEvent('mouseenter'))
 | ||||
|   //   expect(onVisibleChange).toBeCalledWith(true)
 | ||||
|   //   expect(wrapper.vm.$refs.tooltip.$refs.tooltip.visible).toBe(true)
 | ||||
| 
 | ||||
|   //   button.trigger('mouseleave')
 | ||||
|   //   expect(onVisibleChange).toBeCalledWith(false)
 | ||||
|   //   expect(wrapper.vm.$refs.tooltip.$refs.tooltip.visible).toBe(false)
 | ||||
|   // })
 | ||||
| 
 | ||||
|   // it('should render disabled Button style properly', () => {
 | ||||
|   //   const wrapper1 = mount(
 | ||||
|   //     <Tooltip title='xxxxx'>
 | ||||
|   //       <Button disabled>Hello world!</Button>
 | ||||
|   //     </Tooltip>
 | ||||
|   //   )
 | ||||
|   //   const wrapper2 = mount(
 | ||||
|   //     <Tooltip title='xxxxx'>
 | ||||
|   //       <Button disabled style={{ display: 'block' }}>Hello world!</Button>
 | ||||
|   //     </Tooltip>
 | ||||
|   //   )
 | ||||
|   //   expect(wrapper1.find('span').at(0).element.style.display).toBe('inline-block')
 | ||||
|   //   expect(wrapper2.find('span').at(0).element.style.display).toBe('block')
 | ||||
|   // })
 | ||||
| 
 | ||||
|   // it('should not wrap span when trigger is not hover', () => {
 | ||||
|   //   const wrapper = mount(
 | ||||
|   //     <Tooltip
 | ||||
|   //       title='xxxxx'
 | ||||
|   //       trigger='click'
 | ||||
|   //       mouseEnterDelay={0}
 | ||||
|   //       mouseLeaveDelay={0}
 | ||||
|   //     >
 | ||||
|   //       <button disabled>Hello world!</button>
 | ||||
|   //     </Tooltip>
 | ||||
|   //   )
 | ||||
| 
 | ||||
|   //   expect(wrapper.find('span')).toHaveLength(0)
 | ||||
|   // })
 | ||||
| 
 | ||||
|   // it('should works for arrowPointAtCenter', () => {
 | ||||
|   //   const arrowWidth = 5
 | ||||
|   //   const horizontalArrowShift = 16
 | ||||
|   //   const triggerWidth = 200
 | ||||
| 
 | ||||
|   //   const suit = () => {
 | ||||
|   //     const wrapper = mount(
 | ||||
|   //       <Tooltip
 | ||||
|   //         title='xxxxx'
 | ||||
|   //         trigger='click'
 | ||||
|   //         mouseEnterDelay={0}
 | ||||
|   //         mouseLeaveDelay={0}
 | ||||
|   //         placement='bottomLeft'
 | ||||
|   //       >
 | ||||
|   //         <button style={{ width: triggerWidth }}>
 | ||||
|   //           Hello world!
 | ||||
|   //         </button>
 | ||||
|   //       </Tooltip>
 | ||||
|   //     )
 | ||||
|   //     wrapper.find('button').at(0).trigger('click')
 | ||||
|   //     const popupLeftDefault = parseInt(wrapper.instance().getPopupDomNode().style.left, 10)
 | ||||
| 
 | ||||
|   //     const wrapper2 = mount(
 | ||||
|   //       <Tooltip
 | ||||
|   //         title='xxxxx'
 | ||||
|   //         trigger='click'
 | ||||
|   //         mouseEnterDelay={0}
 | ||||
|   //         mouseLeaveDelay={0}
 | ||||
|   //         placement='bottomLeft'
 | ||||
|   //         arrowPointAtCenter
 | ||||
|   //       >
 | ||||
|   //         <button style={{ width: triggerWidth }}>
 | ||||
|   //           Hello world!
 | ||||
|   //         </button>
 | ||||
|   //       </Tooltip>
 | ||||
|   //     )
 | ||||
|   //     wrapper2.find('button').at(0).trigger('click')
 | ||||
|   //     const popupLeftArrowPointAtCenter = parseInt(wrapper2.instance().getPopupDomNode().style.left, 10)
 | ||||
|   //     expect(popupLeftArrowPointAtCenter - popupLeftDefault).toBe((triggerWidth / 2) - horizontalArrowShift - arrowWidth)
 | ||||
|   //   }
 | ||||
|   //   jest.dontMock('rc-trigger', suit)
 | ||||
|   // })
 | ||||
| }) | ||||
		Loading…
	
		Reference in New Issue
	
	 tjz
						tjz