import { mount } from '@vue/test-utils';
import { ReadTip, } from '../index';
import { nextTick } from 'vue';
import Template from '../src/read-tip-template';
describe('read-tip test', () => {
beforeEach(() => {
const el = document.createElement('div');
el.className = 'readtip-target';
document.body.appendChild(el);
});
afterEach(() => {
document.body.outerHTML = '';
});
it('read-tip init render', async () => {
const readTipOptions = {
trigger: 'hover',
rules: {
trigger: 'click',
position: 'top',
appendToBody: false,
selector: '.readtip-target',
title: 'Name: Jack',
content: 'This is Jack\'s profile',
},
};
const wrapper = mount(ReadTip, {
props: {
readTipOptions
},
slots: {
default: `<span class="readtip-target">@Jack</span>`
}
});
expect(wrapper.find('.readtip-target').classes()).toContain('readtip-target');
await wrapper.find('.readtip-target').trigger('click');
await nextTick();
let template = wrapper.findComponent(Template);
expect(template.exists()).toBe(true);
expect(wrapper.findAll('[data-test="todo"]')).toHaveLength(1);
await document.body.click();
await nextTick();
template = wrapper.findComponent(Template);
expect(template.exists()).toBe(false);
expect(wrapper.findAll('[data-test="todo"]')).toHaveLength(1);
});
it('read-tip more show tip', async () => {
const readTipOptions = {
trigger: 'hover',
rules: {
trigger: 'hover',
selector: '.readtip-target',
title: 'Name: Jack',
content: 'This is Jack\'s profile',
},
};
const wrapper = mount(ReadTip, {
props: {
readTipOptions
},
slots: {
default: `
<span class="readtip-target">@Jack</span>
<span class="readtip-target">@Mary</span>
`
}
});
await wrapper.find('.readtip-target').trigger('mouseover');
expect(wrapper.findAll('[data-test="todo"]')).toHaveLength(2);
await wrapper.find('.readtip-target').trigger('mouseout');
await nextTick();
expect(wrapper.findAll('[data-test="todo"]')).toHaveLength(2);
});
});