You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.3 KiB
103 lines
2.3 KiB
import { shallowMount as shallow, mount } from '@vue/test-utils'
|
|
import Table from '..'
|
|
import Vue from 'vue'
|
|
|
|
const { Column, ColumnGroup } = Table
|
|
|
|
describe('Table', () => {
|
|
it('renders JSX correctly', (done) => {
|
|
const data = [{
|
|
key: '1',
|
|
firstName: 'John',
|
|
lastName: 'Brown',
|
|
age: 32,
|
|
}, {
|
|
key: '2',
|
|
firstName: 'Jim',
|
|
lastName: 'Green',
|
|
age: 42,
|
|
}]
|
|
|
|
const wrapper = mount({
|
|
render () {
|
|
return (
|
|
<Table dataSource={data} pagination={false}>
|
|
<ColumnGroup title='Name'>
|
|
<Column
|
|
title='First Name'
|
|
dataIndex='firstName'
|
|
key='firstName'
|
|
/>
|
|
<Column
|
|
title='Last Name'
|
|
dataIndex='lastName'
|
|
key='lastName'
|
|
/>
|
|
</ColumnGroup>
|
|
<Column
|
|
title='Age'
|
|
dataIndex='age'
|
|
key='age'
|
|
/>
|
|
</Table>
|
|
)
|
|
},
|
|
}, { sync: false }
|
|
)
|
|
|
|
Vue.nextTick(() => {
|
|
expect(wrapper.html()).toMatchSnapshot()
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('updates columns when receiving props', (done) => {
|
|
const columns = [{
|
|
title: 'Name',
|
|
key: 'name',
|
|
dataIndex: 'name',
|
|
}]
|
|
const wrapper = shallow(Table, {
|
|
propsData: {
|
|
columns,
|
|
},
|
|
sync: false,
|
|
})
|
|
const newColumns = [{
|
|
title: 'Title',
|
|
key: 'title',
|
|
dataIndex: 'title',
|
|
}]
|
|
wrapper.setProps({ columns: newColumns })
|
|
Vue.nextTick(() => {
|
|
expect(wrapper.vm.columns).toBe(newColumns)
|
|
done()
|
|
})
|
|
})
|
|
|
|
it('loading with Spin', (done) => {
|
|
const loading = {
|
|
spinning: false,
|
|
delay: 500,
|
|
}
|
|
const wrapper = mount(Table, {
|
|
propsData: {
|
|
loading,
|
|
},
|
|
sync: false,
|
|
})
|
|
Vue.nextTick(async () => {
|
|
expect(wrapper.findAll('.ant-spin')).toHaveLength(0)
|
|
expect(wrapper.find('.ant-table-placeholder').text()).not.toEqual('')
|
|
|
|
loading.spinning = true
|
|
wrapper.setProps({ loading })
|
|
expect(wrapper.findAll('.ant-spin')).toHaveLength(0)
|
|
|
|
await new Promise(resolve => setTimeout(resolve, 1000))
|
|
expect(wrapper.findAll('.ant-spin')).toHaveLength(1)
|
|
done()
|
|
})
|
|
})
|
|
})
|