element3
Version:
A Component Library for Vue3
245 lines (235 loc) • 7.4 kB
JavaScript
import ElTransfer from '../src/Transfer.vue'
import { mount } from '@vue/test-utils'
// import { toRefs, reactive, nextTick, ref } from 'vue'
// @todo fix
// const getTestData = () => {
// const data = []
// for (let i = 1; i <= 15; i++) {
// data.push({
// key: i,
// label: `备选项 ${i}`,
// disabled: i % 4 === 0
// })
// }
// return data
// }
// const createTransfer = (props, opts) => {
// return Object.assign({
// template: `
// <el-transfer :data="testData" ref="transfer" ${props}>
// </el-transfer>
// `,
// data() {
// return {
// testData: getTestData()
// }
// }
// }, opts)
// }
describe('Transfer', () => {
it('create', () => {
const wrapper = mount(ElTransfer)
expect(wrapper.exists()).toBe(true)
})
// it('default target list', () => {
// const Comp = createTransfer('v-model="value"', {
// setup() {
// const state = reactive({
// value: [1, 4]
// })
// return toRefs(state)
// }
// })
// const wrapper = mount(Comp, {
// global: {
// components: {
// ElTransfer
// }
// }
// })
// expect(wrapper.findComponent({ name: 'ElTransfer' }).vm.sourceData.length).toEqual(13)
// })
// it('filterable', async () => {
// const Comp = createTransfer('v-model="value" filterable :filter-method="fliterMethod"', {
// setup() {
// const value = ref([])
// const fliterMethod = (query, option) => option.key === Number(query)
// return {
// value,
// fliterMethod
// }
// }
// })
// const wrapper = mount(Comp, {
// global: {
// components: {
// ElTransfer
// }
// }
// })
// const leftList = wrapper.findComponent({ name: 'ElTransferPanel' }).vm
// leftList.query = '1'
// await nextTick()
// expect(leftList.filteredData.length).toEqual(1)
// })
// it('transfer', async () => {
// const Comp = createTransfer('v-model="value" :left-default-checked="[2, 3]" :right-default-checked="[1]"', {
// setup() {
// const value = ref([1, 4])
// const renderFunc = (h, option) => <span>{ option.key } - { option.label }</span>
// const onUpdate = (val) => {
// value.value = val
// }
// return {
// value,
// onUpdate,
// renderFunc
// }
// }
// })
// const wrapper = mount(Comp, {
// global: {
// components: {
// ElTransfer
// }
// }
// })
// const transfer = wrapper.findComponent({ name: 'ElTransfer' }).vm
// transfer.addToLeft()
// await nextTick()
// expect(transfer.sourceData.length).toEqual(14)
// transfer.addToRight()
// await nextTick()
// expect(transfer.sourceData.length).toEqual(12)
// })
// it('customize', () => {
// const Comp = createTransfer('v-model="value" :titles="titles" :render-content="renderFunc" :format="format"', {
// setup() {
// const state = reactive({
// value: [2],
// titles: ['表1', '表2'],
// format: { noChecked: 'no', hasChecked: 'has' },
// renderFunc(h, option) {
// return <span>{ option.key } - { option.label }</span>
// }
// })
// return toRefs(state)
// }
// })
// const wrapper = mount(Comp, {
// global: {
// components: {
// ElTransfer
// }
// }
// })
// const label = wrapper.find('.el-transfer-panel__header .el-checkbox__label')
// const panelList = wrapper.find('.el-transfer-panel__list .el-checkbox__label span')
// expect(label.text().indexOf('表1') > -1).toBe(true)
// expect(panelList.text()).toEqual('1 - 备选项 1')
// expect(label.find('span').text()).toEqual('no')
// })
// it('check', () => {
// const Comp = createTransfer('v-model="value"', {
// setup() {
// const value = ref([])
// return {
// value
// }
// }
// })
// const wrapper = mount(Comp, {
// global: {
// components: {
// ElTransfer
// }
// }
// })
// const leftList = wrapper.findComponent({ name: 'ElTransferPanel' }).vm
// leftList.handleAllCheckedChange({ target: { checked: true } })
// expect(leftList.checked.length).toEqual(12)
// })
})
// describe('target order', () => {
// it('original(default)', async () => {
// const Comp = createTransfer('v-model="value" :left-default-checked="[2, 3]"', {
// setup() {
// const value = ref([1, 4])
// const onUpdate = (val) => {
// value.value = val
// }
// return {
// value,
// onUpdate
// }
// }
// })
// const wrapper = mount(Comp, {
// global: {
// components: {
// ElTransfer
// }
// }
// })
// const transfer = wrapper.findComponent({ name: 'ElTransfer' }).vm
// transfer.addToRight()
// await nextTick()
// const targetItems = [].slice.call(wrapper.findAll('.el-transfer__buttons + .el-transfer-panel .el-transfer-panel__body .el-checkbox__label span'))
// .map(item => item.text())
// expect(targetItems).toEqual(['备选项 1', '备选项 2', '备选项 3', '备选项 4'])
// })
// it('push', async () => {
// const Comp = createTransfer('v-model="value" :left-default-checked="[2, 3]" target-order="push"', {
// setup() {
// const value = ref([1, 4])
// const onUpdate = (val) => {
// value.value = val
// }
// return {
// value,
// onUpdate
// }
// }
// })
// const wrapper = mount(Comp, {
// global: {
// components: {
// ElTransfer
// }
// }
// })
// const transfer = wrapper.findComponent({ name: 'ElTransfer' }).vm
// transfer.addToRight()
// await nextTick()
// const targetItems = [].slice.call(wrapper.findAll('.el-transfer__buttons + .el-transfer-panel .el-transfer-panel__body .el-checkbox__label span'))
// .map(item => item.text())
// expect(targetItems).toEqual(['备选项 1', '备选项 4', '备选项 2', '备选项 3'])
// })
// it('unshift', async () => {
// const Comp = createTransfer('v-model="value" :left-default-checked="[2, 3]" target-order="unshift"', {
// setup() {
// const value = ref([1, 4])
// const onUpdate = (val) => {
// value.value = val
// }
// return {
// value,
// onUpdate
// }
// }
// })
// const wrapper = mount(Comp, {
// global: {
// components: {
// ElTransfer
// }
// }
// })
// const transfer = wrapper.findComponent({ name: 'ElTransfer' }).vm
// transfer.addToRight()
// await nextTick()
// const targetItems = [].slice.call(wrapper.findAll('.el-transfer__buttons + .el-transfer-panel .el-transfer-panel__body .el-checkbox__label span'))
// .map(item => item.text())
// expect(targetItems).toEqual(['备选项 2', '备选项 3', '备选项 1', '备选项 4'])
// })
// })