import { describe, expect, it } from 'vitest' import { mountSuspended } from '@nuxt/test-utils/runtime' import TooltipBase from '~/components/Tooltip/Base.vue' describe('TooltipBase to prop', () => { it('teleports to body by default', async () => { await mountSuspended(TooltipBase, { props: { text: 'Tooltip text', isVisible: true, tooltipAttr: { 'aria-label': 'tooltip' }, }, slots: { default: '', }, }) const tooltip = document.querySelector('[aria-label="tooltip"]') expect(tooltip).not.toBeNull() expect(tooltip?.textContent).toContain('Tooltip text') const currentContainer = tooltip?.parentElement?.parentElement expect(currentContainer).toBe(document.body) }) it('teleports into provided container when using selector string', async () => { const container = document.createElement('div') container.id = 'tooltip-container' document.body.appendChild(container) try { await mountSuspended(TooltipBase, { props: { text: 'Tooltip text', isVisible: true, to: '#tooltip-container', tooltipAttr: { 'aria-label': 'tooltip' }, }, slots: { default: '', }, }) const tooltip = container.querySelector('[aria-label="tooltip"]') expect(tooltip).not.toBeNull() expect(tooltip?.textContent).toContain('Tooltip text') const currentContainer = tooltip?.parentElement?.parentElement expect(currentContainer).toBe(container) } finally { container.remove() } }) })