vant/src/share-sheet/test/index.spec.js
月光倾城 d922c2baaa
feat(ShareSheet): add className option (#6886)
* feat: van-share-sheet支持设置分享选项的类名

* Update README.zh-CN.md

* Update README.md

* Update index.vue

* fix: 添加一些van-share-sheet测试用例

* fix: change van-share-sheet test code

Co-authored-by: neverland <416417567@163.com>
2020-07-28 10:59:30 +08:00

102 lines
2.3 KiB
JavaScript

import ShareSheet from '..';
import { mount, trigger, later } from '../../../test';
test('cancel-text prop', () => {
const wrapper = mount(ShareSheet, {
propsData: {
value: true,
cancelText: 'foo',
},
});
expect(wrapper.find('.van-share-sheet__cancel')).toMatchSnapshot();
wrapper.setProps({ cancelText: '' });
expect(wrapper.contains('.van-share-sheet__cancel')).toBeFalsy();
});
test('description prop', () => {
const wrapper = mount(ShareSheet, {
propsData: {
value: true,
description: 'foo',
},
});
expect(wrapper.find('.van-share-sheet__description')).toMatchSnapshot();
wrapper.setProps({ description: '' });
expect(wrapper.contains('.van-share-sheet__description')).toBeFalsy();
});
test('option className', () => {
const wrapper = mount(ShareSheet, {
propsData: {
value: true,
options: [{ name: 'Link', icon: 'link', className: 'foo' }],
},
});
const option = wrapper.find('.van-share-sheet__option').element;
expect(option.className.includes('foo')).toBeTruthy();
});
test('select event', () => {
const wrapper = mount(ShareSheet, {
propsData: {
value: true,
options: [{ icon: 'wechat', name: 'wechat' }],
},
});
wrapper.find('.van-share-sheet__option').trigger('click');
expect(wrapper.emitted('select')[0]).toEqual([
{ icon: 'wechat', name: 'wechat' },
0,
]);
});
test('cancel event', () => {
const wrapper = mount(ShareSheet, {
propsData: {
value: true,
},
});
wrapper.find('.van-share-sheet__cancel').trigger('click');
expect(wrapper.emitted('input')[0][0]).toEqual(false);
expect(wrapper.emitted('cancel')[0]).toBeTruthy();
});
test('title & description slot', () => {
const wrapper = mount(ShareSheet, {
propsData: {
value: true,
},
scopedSlots: {
title: () => 'Custom Title',
description: () => 'Custom Description',
},
});
expect(wrapper).toMatchSnapshot();
});
test('click-overlay event', async () => {
const root = document.createElement('div');
const wrapper = mount(ShareSheet, {
propsData: {
value: true,
getContainer: () => root,
},
});
await later();
const overlay = root.querySelector('.van-overlay');
trigger(overlay, 'click');
expect(wrapper.emitted('click-overlay')).toBeTruthy();
});