buefy
Version:
Lightweight UI components for Vue.js (v3) based on Bulma
65 lines (55 loc) • 2.23 kB
text/typescript
import { beforeEach, describe, expect, it, vi } from 'vitest'
import type { MockInstance } from 'vitest'
import { shallowMount } from '@vue/test-utils'
import type { VueWrapper } from '@vue/test-utils'
import BTooltip from '@components/tooltip/Tooltip.vue'
let wrapper: VueWrapper<InstanceType<typeof BTooltip>>
describe('BTooltip', () => {
let spyOnOnHover: MockInstance
let spyOnOnContextMenu: MockInstance
let spyOnOnFocus: MockInstance
let spyOnOpen: MockInstance
beforeEach(() => {
// spies on methods before mounting the component
// because wrapper.vm does not allow spies
spyOnOnHover = vi.spyOn(BTooltip.methods!, 'onHover')
spyOnOnContextMenu = vi.spyOn(BTooltip.methods!, 'onContextMenu')
spyOnOnFocus = vi.spyOn(BTooltip.methods!, 'onFocus')
spyOnOpen = vi.spyOn(BTooltip.methods!, 'open')
wrapper = shallowMount(BTooltip)
})
it('is called', () => {
expect(wrapper.vm).toBeTruthy()
expect(wrapper.vm.$options.name).toBe('BTooltip')
})
it('render correctly', () => {
expect(wrapper.html()).toMatchSnapshot()
})
it('tests isActive watch', async () => {
await wrapper.setProps({ appendToBody: true })
await wrapper.setData({
updateAppendToBody: vi.fn(),
isActive: true
})
expect(wrapper.vm.updateAppendToBody).toHaveBeenCalled()
expect(wrapper.emitted().open).toBeTruthy()
})
it('tests onHover method', async () => {
await wrapper.setProps({ triggers: ['hover'] })
wrapper.vm.onHover()
expect(spyOnOnHover).toHaveBeenCalled()
expect(spyOnOpen).toHaveBeenCalled()
})
it('tests onContextMenu method', async () => {
await wrapper.setProps({ triggers: ['contextmenu'] })
wrapper.vm.onContextMenu({ preventDefault: vi.fn() })
expect(spyOnOnContextMenu).toHaveBeenCalled()
expect(spyOnOpen).toHaveBeenCalled()
})
it('tests onFocus method', async () => {
await wrapper.setProps({ triggers: ['focus'] })
wrapper.vm.onFocus()
expect(spyOnOnFocus).toHaveBeenCalled()
expect(spyOnOpen).toHaveBeenCalled()
})
})