element/test/unit/specs/pagination.spec.js

275 lines
6.6 KiB
Vue
Raw Normal View History

2016-11-03 02:14:36 +00:00
import { createTest, createVue, triggerEvent, destroyVM } from '../util';
2016-10-21 08:14:14 +00:00
import Pagination from 'packages/pagination';
describe('Pagination', () => {
2016-11-03 02:14:36 +00:00
let vm;
afterEach(() => {
destroyVM(vm);
});
2016-10-21 08:14:14 +00:00
it('create', () => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination);
2016-10-21 08:14:14 +00:00
const elm = vm.$el;
// prev
expect(elm.querySelector('button.btn-prev')).to.exist;
// pager
expect(elm.querySelector('ul.el-pager')).to.exist;
// next
expect(elm.querySelector('button.btn-next')).to.exist;
// jumper
expect(elm.querySelector('.el-pagination__jump')).to.exist;
// ->
expect(elm.querySelector('.el-pagination__rightwrapper')).to.exist;
// total
expect(elm.querySelector('.el-pagination__total')).to.exist;
});
it('set layout', () => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination, {
2016-10-21 08:14:14 +00:00
layout: 'prev, pager, next'
});
const elm = vm.$el;
// prev
expect(elm.querySelector('button.btn-prev')).to.exist;
// pager
expect(elm.querySelector('ul.el-pager')).to.exist;
// next
expect(elm.querySelector('button.btn-next')).to.exist;
// not found jumper
expect(elm.querySelector('.el-pagination__jump')).to.not.exist;
// not found ->
expect(elm.querySelector('.el-pagination__rightwrapper')).to.not.exist;
// not found total
expect(elm.querySelector('.el-pagination__total')).to.not.exist;
});
it('small', () => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination, {
2016-10-21 08:14:14 +00:00
small: true
});
expect(vm.$el.classList.contains('el-pagination--small')).to.true;
});
it('pageSize', () => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination, {
2016-10-21 08:14:14 +00:00
pageSize: 25,
total: 100
});
expect(vm.$el.querySelectorAll('li.number')).to.length(4);
});
it('currentPage', () => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination, {
2016-10-21 08:14:14 +00:00
pageSize: 20,
total: 200,
currentPage: 3
});
expect(vm.$el.querySelector('li.number.active')).to.have.property('textContent').to.equal('3');
});
it('pageSizes', () => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination, {
2016-10-21 08:14:14 +00:00
pageSizes: [10, 15, 35, 50],
pageSize: 35,
total: 1000,
layout: 'sizes, prev, pager, next'
});
expect(vm.$el.querySelector('.el-select-dropdown__item.selected')).to.property('textContent').include('35');
expect([].slice.call(vm.$el.querySelectorAll('.el-select-dropdown__item'))
.map(node => parseInt(node.textContent, 10)))
.to.deep.equal([10, 15, 35, 50]);
});
it('pageSizes:not found pageSize', () => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination, {
2016-10-21 08:14:14 +00:00
pageSizes: [10, 15, 35, 50],
pageSize: 24,
total: 1000,
layout: 'sizes, prev, pager, next'
});
expect(vm.$el.querySelector('.el-select-dropdown__item.selected')).to.property('textContent').include('10');
});
it('layout is empty', () => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination, {
2016-10-21 08:14:14 +00:00
layout: ''
});
expect(vm.$el.textContent).to.empty;
});
it('jumper: change value', () => {
2016-11-03 02:14:36 +00:00
vm = createVue({
2016-10-21 08:14:14 +00:00
template: `
<el-pagination
@current-change="handleChange"
2016-10-21 08:14:14 +00:00
:page-size="10"
:total="100" />
`,
methods: {
handleChange(val) {
this.page = val;
}
},
data() {
return { page: 0 };
}
}, true);
const input = vm.$el.querySelector('.el-pagination__jump input');
input.focus();
input.value = -1;
triggerEvent(input, 'change');
expect(vm.page).to.equal(1);
input.value = 10000;
triggerEvent(input, 'change');
expect(vm.page).to.equal(10);
input.value = '我好帅';
triggerEvent(input, 'change');
expect(vm.page).to.equal(1);
});
it('event:current-change', () => {
2016-11-03 02:14:36 +00:00
vm = createVue({
2016-10-21 08:14:14 +00:00
template: `
<el-pagination
:total="1000"
@current-change="change = true" />
2016-10-21 08:14:14 +00:00
`,
data() {
return { change: false };
}
});
const next = vm.$el.querySelector('button.btn-next');
const prev = vm.$el.querySelector('button.btn-prev');
expect(vm.change).to.false;
// click 9
let count = 9;
while (--count) {
next.click();
}
prev.click();
expect(vm.change).to.true;
});
it('event:size-change', done => {
2016-11-03 02:14:36 +00:00
vm = createVue({
2016-10-21 08:14:14 +00:00
template: `
<el-pagination
:total="100"
layout="sizes, prev, pager, next"
@size-change="trigger = true"
2016-10-21 08:14:14 +00:00
:pageSize="10" />
`,
data() {
return { trigger: false };
}
});
expect(vm.trigger).to.false;
vm.$el.querySelectorAll('li.el-select-dropdown__item')[1].click();
setTimeout(_ => {
expect(vm.trigger).to.true;
done();
}, 50);
});
it('pageSize > total', () => {
2016-11-03 02:14:36 +00:00
vm = createVue({
2016-10-21 08:14:14 +00:00
template: `
<el-pagination
@current-change="handleChange"
2016-10-21 08:14:14 +00:00
:page-size="1000"
:total="0" />
`,
methods: {
handleChange(val) {
this.page = val;
}
},
data() {
return { page: 0 };
}
});
const input = vm.$el.querySelector('.el-pagination__jump input');
input.value = 1;
triggerEvent(input, 'change');
expect(vm.page).to.equal(0);
input.value = '我好帅';
triggerEvent(input, 'change');
expect(vm.page).to.equal(0);
});
describe('click pager', () => {
it('click ul', () => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination, {
2016-10-21 08:14:14 +00:00
total: 1000
}, true);
vm.$el.querySelector('.el-pager').click();
expect(vm.internalCurrentPage).to.equal(1);
});
it('click li', () => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination, {
2016-10-21 08:14:14 +00:00
total: 1000
}, true);
vm.$el.querySelectorAll('.el-pager li.number')[1].click();
expect(vm.internalCurrentPage).to.equal(2);
});
it('click next icon-more', () => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination, {
2016-10-21 08:14:14 +00:00
total: 1000
}, true);
vm.$el.querySelector('.el-pager .more').click();
expect(vm.internalCurrentPage).to.equal(6);
});
it('click prev icon-more', done => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination, {
2016-10-21 08:14:14 +00:00
total: 1000
}, true);
vm.$el.querySelector('.btn-quicknext.more').click();
setTimeout(_ => {
expect(vm.$el.querySelector('.btn-quickprev.more')).to.exist;
vm.$el.querySelector('.btn-quickprev.more').click();
expect(vm.internalCurrentPage).to.equal(1);
done();
}, 50);
});
it('click last page', done => {
2016-11-03 02:14:36 +00:00
vm = createTest(Pagination, {
2016-10-21 08:14:14 +00:00
total: 1000
}, true);
const nodes = vm.$el.querySelectorAll('li.number');
nodes[nodes.length - 1].click();
setTimeout(_ => {
expect(vm.$el.querySelector('.btn-quickprev.more')).to.exist;
expect(vm.$el.querySelector('.btn-quicknext.more')).to.not.exist;
done();
}, 50);
});
});
});