import List from '..'; import { mount, later, mockGetBoundingClientRect } from '../../../test'; test('load event', async () => { const wrapper = mount(List); wrapper.vm.$on('input', value => { wrapper.vm.loading = value; }); await later(); expect(wrapper.emitted('load')).toBeTruthy(); expect(wrapper.emitted('input')).toBeTruthy(); wrapper.vm.loading = false; await later(); expect(wrapper.emitted('input')[1]).toBeTruthy(); wrapper.destroy(); }); test('error loaded, click error-text and reload', async () => { const wrapper = mount(List, { propsData: { errorText: 'Request failed. Click to reload...', error: true, } }); await later(); expect(wrapper.emitted('load')).toBeFalsy(); expect(wrapper.emitted('input')).toBeFalsy(); // simulate the behavior of clicking error-text wrapper.vm.$on('update:error', val => { wrapper.setProps({ error: val }); }); wrapper.find('.van-list__error-text').trigger('click'); await later(); expect(wrapper.vm.$props.error).toBeFalsy(); expect(wrapper.emitted('load')).toBeTruthy(); expect(wrapper.emitted('input')).toBeTruthy(); wrapper.destroy(); }); test('finished', async () => { const wrapper = mount(List, { propsData: { finished: true, finishedText: 'Finished' } }); await later(); expect(wrapper.emitted('load')).toBeFalsy(); expect(wrapper.emitted('input')).toBeFalsy(); expect(wrapper.contains('.van-list__finished-text')).toBeTruthy(); wrapper.vm.finished = false; await later(); expect(wrapper.emitted('load')).toBeTruthy(); expect(wrapper.emitted('input')).toBeTruthy(); expect(wrapper.contains('.van-list__finished-text')).toBeFalsy(); }); test('finished slot', async () => { const wrapper = mount(List, { propsData: { finished: true }, scopedSlots: { finished: () => 'Custom Finished' } }); expect(wrapper).toMatchSnapshot(); }); test('error slot', async () => { const wrapper = mount(List, { propsData: { error: true }, scopedSlots: { error: () => 'Custom Error' } }); expect(wrapper).toMatchSnapshot(); }); test('immediate check false', async () => { const wrapper = mount(List, { propsData: { immediateCheck: false } }); await later(); expect(wrapper.emitted('load')).toBeFalsy(); expect(wrapper.emitted('input')).toBeFalsy(); }); test('check the case that scroller is not window', async () => { const restoreMock = mockGetBoundingClientRect({ top: 0, bottom: 200 }); const wrapper = mount({ template: `