From 21e4380f41fecb5ca61b713b9c008018f76f010e Mon Sep 17 00:00:00 2001 From: Taylor Jones Date: Tue, 8 Oct 2024 13:46:57 -0500 Subject: [PATCH] test(definitiontooltip): increase test coverage to 100% (#17434) * test(definitiontooltip): increase test coverage to 100% * chore: correct typo * Apply suggestions from code review Co-authored-by: Alison Joseph --------- Co-authored-by: Nikhil Tomar <63502271+2nikhiltom@users.noreply.github.com> Co-authored-by: Preeti Bansal <146315451+preetibansalui@users.noreply.github.com> Co-authored-by: Alison Joseph Co-authored-by: Alison Joseph --- .../__tests__/DefinitionTooltip-test.js | 119 +++++++++++++++++- 1 file changed, 117 insertions(+), 2 deletions(-) diff --git a/packages/react/src/components/Tooltip/__tests__/DefinitionTooltip-test.js b/packages/react/src/components/Tooltip/__tests__/DefinitionTooltip-test.js index 4d555dd0f704..34360c5ebd55 100644 --- a/packages/react/src/components/Tooltip/__tests__/DefinitionTooltip-test.js +++ b/packages/react/src/components/Tooltip/__tests__/DefinitionTooltip-test.js @@ -10,8 +10,8 @@ import userEvent from '@testing-library/user-event'; import React from 'react'; import { DefinitionTooltip } from '../DefinitionTooltip'; -describe('DefintiionTooltip', () => { - it('should display onClick a defintion provided via prop', async () => { +describe('DefinitionTooltip', () => { + it('should display onClick a definition provided via prop', async () => { const definition = 'Uniform Resource Locator'; render(URL); await userEvent.click(screen.getByText('URL')); @@ -29,6 +29,121 @@ describe('DefintiionTooltip', () => { }); describe('Component API', () => { + it('should open onKeyDown', async () => { + const user = userEvent.setup(); + const definition = 'Uniform Resource Locator'; + render( + + URL + + ); + + const button = screen.getByRole('button'); + + await user.tab(); + expect(button).toHaveAttribute('aria-expanded', 'true'); + + await user.keyboard('[Escape]'); + expect(button).toHaveAttribute('aria-expanded', 'false'); + }); + it('should close when trigger is blurred', async () => { + const user = userEvent.setup(); + const definition = 'Uniform Resource Locator'; + render( + + URL + + ); + + const button = screen.getByRole('button'); + + await user.tab(); + expect(button).toHaveAttribute('aria-expanded', 'true'); + await user.tab(); + expect(button).toHaveAttribute('aria-expanded', 'false'); + }); + it('should close on unhover/mouseout when openOnHover is false', async () => { + const user = userEvent.setup(); + const definition = 'Uniform Resource Locator'; + render( + + URL + + ); + + const content = screen.getByText(definition); + + expect(content).toBeVisible(); + await userEvent.unhover(content); + expect(screen.getByRole('button')).toHaveAttribute( + 'aria-expanded', + 'false' + ); + }); + it('should open on hover when openOnHover', async () => { + const user = userEvent.setup(); + const definition = 'Uniform Resource Locator'; + render( + + URL + + ); + + const trigger = screen.getByRole('button'); + + expect(screen.getByRole('button')).toHaveAttribute( + 'aria-expanded', + 'false' + ); + await user.hover(trigger); + expect(screen.getByRole('button')).toHaveAttribute( + 'aria-expanded', + 'true' + ); + await user.unhover(trigger); + expect(screen.getByRole('button')).toHaveAttribute( + 'aria-expanded', + 'false' + ); + }); + it('should not open on hover by default', async () => { + const user = userEvent.setup(); + const definition = 'Uniform Resource Locator'; + render( + + URL + + ); + + const trigger = screen.getByRole('button'); + + expect(screen.getByRole('button')).toHaveAttribute( + 'aria-expanded', + 'false' + ); + await user.hover(trigger); + expect(screen.getByRole('button')).toHaveAttribute( + 'aria-expanded', + 'false' + ); + }); it('should apply additional props to the underlying button element', () => { const definition = 'Uniform Resource Locator'; render(