UNPKG

cloud-ui.vusion

Version:
93 lines (76 loc) 5.33 kB
import { mount } from '@vue/test-utils'; import URadio from '../../../u-radios.vue/radio.vue'; import { UTableView } from '../../index.js'; const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); describe('u-table-view.vue events test', () => { it('should type radio column $emit select', async () => { const handleSelect = jest.fn(); const dataSource = [ { name: '张三', phone: '18612917895', email: 'zhangsan@163.com', address: '浙江省杭州市滨江区网商路599号网易大厦', createdTime: 1464421931000, loginTime: 1527515531000 }, { name: '小明', phone: '13727160283', email: 'xiaoming@163.com', address: '浙江省杭州市滨江区江虹路459号英飞特科技园', createdTime: 1520864676000, loginTime: 1552400676000 }, { name: '李四', phone: '18897127809', email: 'lisi@163.com', address: '浙江省杭州市滨江区秋溢路606号西可科技园', createdTime: 1494488730000, loginTime: 1558165530000 }, { name: '李华', phone: '18749261214', email: 'lihua@163.com', address: '浙江省杭州市滨江区长河路590号东忠科技园', createdTime: 1476073921000, loginTime: 1544428081000 }, { name: '王五', phone: '13579340020', email: 'wangwu@163.com', address: '浙江省杭州市滨江区网商路599号网易大厦二期', createdTime: 1468614726000, loginTime: 1531675926000 }, ]; const wrapper = mount(UTableView, { propsData: { dataSource, valueField: 'name', }, slots: { default: `<u-table-view-column type="radio" title="选择" width="8%"></u-table-view-column> <u-table-view-column title="用户名" field="name" width="20%"></u-table-view-column> <u-table-view-column title="手机号码" field="phone" width="20%"></u-table-view-column> <u-table-view-column title="地址" field="address"></u-table-view-column> <u-table-view-column title="最近登录时间" field="loginTime" formatter="placeholder | date" width="20%"></u-table-view-column>`, }, }); wrapper.vm.$on('select', handleSelect); await sleep(16); const index = 2; const uRadio = wrapper.findAllComponents(URadio).at(index); expect(uRadio.exists()).toBe(true); const label = uRadio.find('label'); label.trigger('click'); expect(handleSelect).toBeCalled(); expect(wrapper.emitted('select')[0][0].index).toEqual(index); expect(wrapper.emitted('select')[0][0].item).toEqual(dataSource[index]); expect(wrapper.emitted('select')[0][0].selectedItem).toEqual(dataSource[index]); expect(wrapper.emitted('select')[0][0].value).toEqual(dataSource[index].name); }); it('should selectable $emit select', async () => { const handleSelect = jest.fn(); const dataSource = [ { name: '张三', phone: '18612917895', email: 'zhangsan@163.com', address: '浙江省杭州市滨江区网商路599号网易大厦', createdTime: 1464421931000, loginTime: 1527515531000 }, { name: '小明', phone: '13727160283', email: 'xiaoming@163.com', address: '浙江省杭州市滨江区江虹路459号英飞特科技园', createdTime: 1520864676000, loginTime: 1552400676000 }, { name: '李四', phone: '18897127809', email: 'lisi@163.com', address: '浙江省杭州市滨江区秋溢路606号西可科技园', createdTime: 1494488730000, loginTime: 1558165530000 }, { name: '李华', phone: '18749261214', email: 'lihua@163.com', address: '浙江省杭州市滨江区长河路590号东忠科技园', createdTime: 1476073921000, loginTime: 1544428081000 }, { name: '王五', phone: '13579340020', email: 'wangwu@163.com', address: '浙江省杭州市滨江区网商路599号网易大厦二期', createdTime: 1468614726000, loginTime: 1531675926000 }, ]; const wrapper = mount(UTableView, { propsData: { dataSource, valueField: 'name', selectable: true, }, slots: { default: ` <u-table-view-column title="用户名" field="name" width="20%"></u-table-view-column> <u-table-view-column title="手机号码" field="phone" width="20%"></u-table-view-column> <u-table-view-column title="地址" field="address"></u-table-view-column> <u-table-view-column title="最近登录时间" field="loginTime" formatter="placeholder | date" width="20%"></u-table-view-column>`, }, }); wrapper.vm.$on('select', handleSelect); await sleep(16); const index = 2; const row = wrapper.findAll('tr').at(index + 1); expect(row.exists()).toBe(true); row.trigger('click'); expect(handleSelect).toBeCalled(); expect(wrapper.emitted('select')[0][0].index).toEqual(index); expect(wrapper.emitted('select')[0][0].item).toEqual(dataSource[index]); expect(wrapper.emitted('select')[0][0].selectedItem).toEqual(dataSource[index]); expect(wrapper.emitted('select')[0][0].value).toEqual(dataSource[index].name); }); })