diff --git a/packages/image-preview/image-preview.vue b/packages/image-preview/image-preview.vue index eeb119d78..002e97e74 100644 --- a/packages/image-preview/image-preview.vue +++ b/packages/image-preview/image-preview.vue @@ -31,6 +31,14 @@ export default create({ }, props: { + images: { + type: Array, + default: () => [] + }, + startPosition: { + type: Number, + default: 0 + }, overlay: { type: Boolean, default: true @@ -41,13 +49,6 @@ export default create({ } }, - data() { - return { - images: [], - startPosition: 0 - }; - }, - methods: { onTouchStart() { this.touchStartTime = new Date(); diff --git a/packages/image-preview/test/__snapshots__/index.spec.js.snap b/packages/image-preview/test/__snapshots__/index.spec.js.snap new file mode 100644 index 000000000..8e138af40 --- /dev/null +++ b/packages/image-preview/test/__snapshots__/index.spec.js.snap @@ -0,0 +1,20 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`render image 1`] = ` +
+`; diff --git a/packages/image-preview/test/index.spec.js b/packages/image-preview/test/index.spec.js new file mode 100644 index 000000000..e096a721c --- /dev/null +++ b/packages/image-preview/test/index.spec.js @@ -0,0 +1,47 @@ +import Vue from 'vue'; +import ImagePreview from '..'; +import ImagePreviewVue from '../image-preview'; +import { mount } from '@vue/test-utils'; +import { triggerDrag } from '../../../test/utils'; + +const images = [ + 'https://img.yzcdn.cn/1.png', + 'https://img.yzcdn.cn/2.png', + 'https://img.yzcdn.cn/3.png' +]; + +test('render image', () => { + const wrapper = mount(ImagePreviewVue, { + propsData: { images } + }); + + expect(wrapper.html()).toMatchSnapshot(); + + const swipe = wrapper.find('.van-swipe__track'); + triggerDrag(swipe, 500, 0); + expect(wrapper.emitted('input')).toBeFalsy(); + triggerDrag(swipe, 0, 0); + expect(wrapper.emitted('input')[0][0]).toBeFalsy(); +}); + +test('function call', (done) => { + ImagePreview(images); + ImagePreview(images.slice(0, 1)); + Vue.nextTick(() => { + const wrapper = document.querySelector('.van-image-preview'); + const swipe = wrapper.querySelector('.van-swipe__track'); + triggerDrag(swipe, 0, 0); + + expect(wrapper.querySelectorAll('img').length).toEqual(1); + + Vue.nextTick(() => { + expect(wrapper.style.display).toEqual('none'); + done(); + }); + }); +}); + +test('register component', () => { + Vue.use(ImagePreview); + expect(Vue.component('van-image-preview')).toBeTruthy(); +});