import PullRefresh from '..'; import { mount } from '@vue/test-utils'; import { triggerTouch, triggerDrag } from '../../../test/touch-utils'; test('change head content when pulling down', () => { const wrapper = mount(PullRefresh, { propsData: { value: false } }); wrapper.vm.$on('input', value => { wrapper.vm.value = value; }); const track = wrapper.find('.van-pull-refresh__track'); // pulling triggerTouch(track, 'touchstart', 0, 0); triggerTouch(track, 'touchmove', 0, 10); expect(wrapper.html()).toMatchSnapshot(); // loosing triggerTouch(track, 'touchmove', 0, 100); expect(wrapper.html()).toMatchSnapshot(); // loading triggerTouch(track, 'touchend', 0, 100); expect(wrapper.html()).toMatchSnapshot(); // still loading triggerDrag(track, 0, 100); expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.emitted('input')).toBeTruthy(); expect(wrapper.emitted('refresh')).toBeTruthy(); // end loading wrapper.vm.value = false; expect(wrapper.html()).toMatchSnapshot(); }); test('pull a short distance', () => { const wrapper = mount(PullRefresh, { propsData: { value: false } }); const track = wrapper.find('.van-pull-refresh__track'); triggerDrag(track, 0, 10); expect(wrapper.emitted('input')).toBeFalsy(); }); test('not in page top', () => { const wrapper = mount(PullRefresh, { propsData: { value: false } }); window.scrollTop = 100; const track = wrapper.find('.van-pull-refresh__track'); // ignore touch event when not at page top triggerDrag(track, 0, 100); window.scrollTop = 0; triggerTouch(track, 'touchmove', 0, 100); expect(wrapper.html()).toMatchSnapshot(); });