import { destroyVM, createVue, waitImmediate } from '../util'; describe('Descriptions', () => { let vm; afterEach(() => { destroyVM(vm); }); it('render test', () => { vm = createVue( { template: ` ` }, true ); const el = vm.$el; expect(el.querySelector('.el-descriptions__title').textContent).to.equal('title'); expect(el.querySelector('.el-descriptions__extra').textContent).to.equal('extra'); expect(el.querySelectorAll('.el-descriptions-item__label').length).to.equal(4); }); it('should render border props', () => { vm = createVue( { template: ` {{ item }} ` }, true ); const el = vm.$el; expect(Array.from(el.querySelector('table').classList)).to.contain('is-bordered'); }); it('should render class props', () => { vm = createVue( { template: ` {{ item }} ` }, true); expect(Array.from(vm.$el.querySelector('.el-descriptions-item__label').classList)).to.contain('label-class-name'); expect(Array.from(vm.$el.querySelector('.el-descriptions-item__content').classList)).to.contain('content-class-name'); }); it('should render column props', async() => { vm = createVue({ template: ` {{ item }} `, data() { return { border: false }; } }, true); expect(vm.$el.querySelector('tr').children.length).to.equal(5); vm.border = true; await waitImmediate(); expect(vm.$el.querySelector('tr').children.length).to.equal(10); }); it('should render direction props', async() => { vm = createVue({ template: ` {{ item }} `, data() { return { direction: 'horizontal' }; } }, true); expect(vm.$el.querySelector('tr').children.length).to.equal(10); expect(vm.$el.querySelectorAll('tr')[0].children[0].innerHTML).to.equal(vm.$el.querySelectorAll('tr')[0].children[1].innerHTML); vm.direction = 'vertical'; await waitImmediate(); expect(vm.$el.querySelector('tr').children.length).to.equal(5); expect(vm.$el.querySelectorAll('tr')[0].children[0].innerHTML).to.equal(vm.$el.querySelectorAll('tr')[1].children[0].innerHTML); }); it('should render title slots', async() => { vm = createVue({ template: ` {{ item }} ` }, true); expect(vm.$el.querySelector('.el-descriptions__title').innerText).to.equal('title'); }); it('should render span props', async() => { vm = createVue({ template: ` 1 2 3 ` }, true); expect(vm.$el.querySelectorAll('td')[1].getAttribute('colSpan')).to.equal('2'); }); it('re-rendered when slots is updated', async() => { const CHANGE_VALUE = 'company'; vm = createVue({ template: `
{{remark}}
`, data() { return { remarks: ['school', 'hospital'] }; }, methods: { onClick() { this.$set(this.remarks, 0, CHANGE_VALUE); } } }, true); vm.$el.querySelector('button').click(); await waitImmediate(); expect(vm.$el.querySelector('.el-tag').innerText).to.equal(CHANGE_VALUE); }); });