import React from 'react'; import { act, fireEvent, render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { Tooltip } from '.'; class ResizeObserver { observe() { // do nothing } unobserve() { // do nothing } disconnect() { // do nothing } } window.ResizeObserver = ResizeObserver; describe('Tooltip component', () => { it('displays content when user hover the children component', async () => { render(

Hi!

, ); expect(screen.getByText('Hi!')).toBeVisible(); expect(screen.queryByRole('tooltip')).not.toBeInTheDocument(); fireEvent.mouseEnter(screen.getByText('Hi!'), { bubbles: true }); await act(async () => {}); expect( await screen.findByRole('tooltip', { name: 'My tooltip' }), ).toBeVisible(); fireEvent.mouseLeave(screen.getByText('Hi!'), { bubbles: true }); expect( screen.queryByRole('tooltip', { name: 'My tooltip' }), ).not.toBeInTheDocument(); }); it('does not show a tooltip if content prop is not defined or empty', async () => { render(

No tooltip

, ); await act(async () => {}); await userEvent.hover(screen.getByText('No tooltip')); expect(screen.queryByRole('tooltip')).not.toBeInTheDocument(); }); it('does not show a tooltip if isDisabled prop is true', async () => { render(

No tooltip

, ); await act(async () => {}); await userEvent.hover(screen.getByText('No tooltip')); expect(screen.queryByRole('tooltip')).not.toBeInTheDocument(); }); it('shows a tooltip without having to hover if isOpen prop is true', async () => { render(

Tooltip

, ); await act(async () => {}); expect(screen.getByRole('tooltip', { name: 'My tooltip' })).toBeVisible(); }); });