mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
129 lines
3.3 KiB
JavaScript
129 lines
3.3 KiB
JavaScript
import PullRefresh from 'packages/pull-refresh';
|
|
import { mount } from 'avoriaz';
|
|
import { triggerTouch } from '../utils';
|
|
|
|
describe('PullRefresh', () => {
|
|
let wrapper;
|
|
afterEach(() => {
|
|
wrapper && wrapper.destroy();
|
|
});
|
|
|
|
it('create a PullRefresh', () => {
|
|
wrapper = mount(PullRefresh, {
|
|
propsData: {
|
|
value: false
|
|
}
|
|
});
|
|
|
|
expect(wrapper.hasClass('van-pull-refresh')).to.be.true;
|
|
});
|
|
|
|
it('change head content when pulling down', (done) => {
|
|
wrapper = mount(PullRefresh, {
|
|
propsData: {
|
|
value: false
|
|
}
|
|
});
|
|
|
|
triggerTouch(wrapper, 'touchstart', 0, 0);
|
|
triggerTouch(wrapper, 'touchmove', 0, 10);
|
|
|
|
wrapper.vm.$nextTick(() => {
|
|
expect(wrapper.find('.van-pull-refresh__text')[0].text()).to.equal('下拉即可刷新...');
|
|
|
|
triggerTouch(wrapper, 'touchmove', 0, 30);
|
|
triggerTouch(wrapper, 'touchmove', 0, 60);
|
|
triggerTouch(wrapper, 'touchmove', 0, 100);
|
|
|
|
wrapper.vm.$nextTick(() => {
|
|
expect(wrapper.find('.van-pull-refresh__text')[0].text()).to.equal('释放即可刷新...');
|
|
|
|
triggerTouch(wrapper, 'touchend', 0, 100);
|
|
|
|
wrapper.vm.$nextTick(() => {
|
|
expect(wrapper.find('.van-pull-refresh__loading span')[1].text()).to.equal('加载中...');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
it('change loading status when pulling down', (done) => {
|
|
wrapper = mount(PullRefresh, {
|
|
propsData: {
|
|
value: false
|
|
}
|
|
});
|
|
|
|
wrapper.vm.$on('input', value => {
|
|
wrapper.vm.value = value;
|
|
|
|
setTimeout(() => {
|
|
wrapper.vm.value = false;
|
|
setTimeout(() => {
|
|
expect(wrapper.vm.status).to.equal('normal');
|
|
done();
|
|
}, 0);
|
|
}, 30);
|
|
});
|
|
|
|
triggerTouch(wrapper, 'touchstart', 0, 0);
|
|
triggerTouch(wrapper, 'touchmove', 0, 100);
|
|
triggerTouch(wrapper, 'touchend', 0, 100);
|
|
|
|
expect(wrapper.vm.value).to.be.true;
|
|
expect(wrapper.vm.status).to.equal('loading');
|
|
|
|
// ignore touch event when loading
|
|
triggerTouch(wrapper, 'touchstart', 0, 0);
|
|
triggerTouch(wrapper, 'touchmove', 0, 100);
|
|
triggerTouch(wrapper, 'touchend', 0, 100);
|
|
});
|
|
|
|
it('pull a short distance', () => {
|
|
wrapper = mount(PullRefresh, {
|
|
propsData: {
|
|
value: false
|
|
}
|
|
});
|
|
|
|
triggerTouch(wrapper, 'touchstart', 0, 0);
|
|
triggerTouch(wrapper, 'touchmove', 0, 10);
|
|
triggerTouch(wrapper, 'touchend', 0, 10);
|
|
|
|
expect(wrapper.vm.value).to.be.false;
|
|
expect(wrapper.vm.status).to.equal('normal');
|
|
});
|
|
|
|
it('not in page top', () => {
|
|
wrapper = mount(PullRefresh, {
|
|
propsData: {
|
|
value: false
|
|
}
|
|
});
|
|
|
|
window.pageYOffset = 100;
|
|
|
|
// ignore touch event when not at page top
|
|
triggerTouch(wrapper, 'touchstart', 0, 0);
|
|
triggerTouch(wrapper, 'touchmove', 0, 100);
|
|
triggerTouch(wrapper, 'touchend', 0, 100);
|
|
|
|
window.pageYOffset = 0;
|
|
triggerTouch(wrapper, 'touchmove', 0, 100);
|
|
expect(wrapper.vm.ceiling).to.be.true;
|
|
});
|
|
|
|
it('horizontal direction', () => {
|
|
wrapper = mount(PullRefresh, {
|
|
propsData: {
|
|
value: false
|
|
}
|
|
});
|
|
triggerTouch(wrapper, 'touchstart', 0, 0);
|
|
triggerTouch(wrapper, 'touchmove', 10, 0);
|
|
triggerTouch(wrapper, 'touchend', 10, 0);
|
|
expect(wrapper.vm.direction).to.equal('horizontal');
|
|
});
|
|
});
|