148 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
| import { mount } from '@vue/test-utils'
 | |
| import { asyncExpect } from '@/tests/utils'
 | |
| import Select from '..'
 | |
| import focusTest from '../../../tests/shared/focusTest'
 | |
| 
 | |
| describe('Select', () => {
 | |
|   focusTest(Select)
 | |
| 
 | |
|   it('should have default notFoundContent', async () => {
 | |
|     const wrapper = mount(Select, {
 | |
|       propsData: {
 | |
|         mode: 'multiple',
 | |
|       },
 | |
|       sync: false,
 | |
|     })
 | |
|     await asyncExpect(() => {
 | |
|       wrapper.find('.ant-select').trigger('click')
 | |
|     })
 | |
|     const dropdownWrapper = mount({
 | |
|       render () {
 | |
|         return wrapper.find({ name: 'Trigger' }).vm.getComponent()
 | |
|       },
 | |
|     }, { sync: false })
 | |
| 
 | |
|     await asyncExpect(() => {
 | |
|       expect(dropdownWrapper.findAll({ name: 'MenuItem' }).length).toBe(1)
 | |
|       expect(dropdownWrapper.findAll({ name: 'MenuItem' }).at(0).text()).toBe('Not Found')
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   it('should support set notFoundContent to null', async () => {
 | |
|     const wrapper = mount(Select, {
 | |
|       propsData: {
 | |
|         mode: 'multiple',
 | |
|         notFoundContent: null,
 | |
|       },
 | |
|       sync: false,
 | |
|     })
 | |
|     await asyncExpect(() => {
 | |
|       wrapper.find('.ant-select').trigger('click')
 | |
|     })
 | |
|     const dropdownWrapper = mount({
 | |
|       render () {
 | |
|         return wrapper.find({ name: 'Trigger' }).vm.getComponent()
 | |
|       },
 | |
|     }, { sync: false })
 | |
|     await asyncExpect(() => {
 | |
|       expect(dropdownWrapper.findAll({ name: 'MenuItem' }).length).toBe(0)
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   it('should not have default notFoundContent when mode is combobox', async () => {
 | |
|     const wrapper = mount(Select, {
 | |
|       propsData: {
 | |
|         mode: Select.SECRET_COMBOBOX_MODE_DO_NOT_USE,
 | |
|       },
 | |
|       sync: false,
 | |
|     })
 | |
|     await asyncExpect(() => {
 | |
|       wrapper.find('.ant-select').trigger('click')
 | |
|     })
 | |
| 
 | |
|     const dropdownWrapper = mount({
 | |
|       render () {
 | |
|         return wrapper.find({ name: 'Trigger' }).vm.getComponent()
 | |
|       },
 | |
|     }, { sync: false })
 | |
|     await asyncExpect(() => {
 | |
|       expect(dropdownWrapper.findAll('MenuItem').length).toBe(0)
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   it('should not have notFoundContent when mode is combobox and notFoundContent is set', async () => {
 | |
|     const wrapper = mount(Select, {
 | |
|       propsData: {
 | |
|         mode: Select.SECRET_COMBOBOX_MODE_DO_NOT_USE,
 | |
|         notFoundContent: 'not at all',
 | |
|       },
 | |
|       sync: false,
 | |
|     })
 | |
|     await asyncExpect(() => {
 | |
|       wrapper.find('.ant-select').trigger('click')
 | |
|     })
 | |
| 
 | |
|     const dropdownWrapper = mount({
 | |
|       render () {
 | |
|         return wrapper.find({ name: 'Trigger' }).vm.getComponent()
 | |
|       },
 | |
|     }, { sync: false })
 | |
|     await asyncExpect(() => {
 | |
|       expect(dropdownWrapper.findAll({ name: 'MenuItem' }).length).toBe(1)
 | |
|       expect(dropdownWrapper.findAll({ name: 'MenuItem' }).at(0).text()).toBe('not at all')
 | |
|     })
 | |
|   })
 | |
| 
 | |
|   it('should be controlled by open prop', async () => {
 | |
|     const onDropdownVisibleChange = jest.fn()
 | |
|     const wrapper = mount({
 | |
|       props: {
 | |
|         open: {
 | |
|           type: Boolean,
 | |
|           default: true,
 | |
|         },
 | |
|       },
 | |
|       render () {
 | |
|         return (
 | |
|           <Select open={this.open} onDropdownVisibleChange={onDropdownVisibleChange}>
 | |
|             <Option value='1'>1</Option>
 | |
|           </Select>
 | |
|         )
 | |
|       },
 | |
|     }, { sync: false })
 | |
|     let triggerComponent = null
 | |
|     mount({
 | |
|       render () {
 | |
|         triggerComponent = wrapper.find({ name: 'Trigger' }).vm.getComponent()
 | |
|         return triggerComponent
 | |
|       },
 | |
|     }, { sync: false })
 | |
|     await asyncExpect(() => {
 | |
|       // console.log(triggerComponent.componentInstance.visible)
 | |
|       expect(triggerComponent.componentInstance.visible).toBe(true)
 | |
|     })
 | |
|     await asyncExpect(() => {
 | |
|       wrapper.find('.ant-select').trigger('click')
 | |
|       expect(onDropdownVisibleChange).toHaveBeenLastCalledWith(false)
 | |
|     })
 | |
|     await asyncExpect(() => {
 | |
|       expect(triggerComponent.componentInstance.visible).toBe(true)
 | |
|       wrapper.setProps({ open: false })
 | |
|     })
 | |
|     await asyncExpect(() => {
 | |
|       mount({
 | |
|         render () {
 | |
|           triggerComponent = wrapper.find({ name: 'Trigger' }).vm.getComponent()
 | |
|           return triggerComponent
 | |
|         },
 | |
|       }, { sync: false })
 | |
|     })
 | |
|     await asyncExpect(() => {
 | |
|       expect(triggerComponent.componentInstance.visible).toBe(false)
 | |
|       wrapper.find('.ant-select').trigger('click')
 | |
|       expect(onDropdownVisibleChange).toHaveBeenLastCalledWith(true)
 | |
|       expect(triggerComponent.componentInstance.visible).toBe(false)
 | |
|     })
 | |
|   })
 | |
| })
 |