diff --git a/hyperglass/ui/hooks/use-boolean-value.test.tsx b/hyperglass/ui/hooks/use-boolean-value.test.tsx index b4e192d..0a0cb4a 100644 --- a/hyperglass/ui/hooks/use-boolean-value.test.tsx +++ b/hyperglass/ui/hooks/use-boolean-value.test.tsx @@ -1,35 +1,20 @@ -import { useState } from 'react'; -import { render } from '@testing-library/react'; +import { renderHook } from '@testing-library/react'; import '@testing-library/jest-dom'; -import userEvent from '@testing-library/user-event'; import { useBooleanValue } from './use-boolean-value'; const VALUE_IF_TRUE = 'Is True'; const VALUE_IF_FALSE = 'Is False'; -const TestComponent = (): JSX.Element => { - const [state, setState] = useState(false); - const value = useBooleanValue(state, VALUE_IF_TRUE, VALUE_IF_FALSE); - return ( -
- {value} - -
- ); -}; - describe('useBooleanValue Hook', () => { it('text should reflect boolean state', () => { - const { queryByText, getByRole } = render(); - - expect(queryByText(VALUE_IF_FALSE)).toBeInTheDocument(); - - userEvent.click(getByRole('button')); - - expect(queryByText(VALUE_IF_FALSE)).not.toBeInTheDocument(); - - expect(queryByText(VALUE_IF_TRUE)).toBeInTheDocument(); + const { result, rerender } = renderHook( + ({ initial }) => useBooleanValue(initial, VALUE_IF_TRUE, VALUE_IF_FALSE), + { initialProps: { initial: false } }, + ); + expect(result.current).toBe(VALUE_IF_FALSE); + rerender({ initial: true }); + expect(result.current).toBe(VALUE_IF_TRUE); + rerender({ initial: false }); + expect(result.current).toBe(VALUE_IF_FALSE); }); }); diff --git a/hyperglass/ui/hooks/use-greeting.test.tsx b/hyperglass/ui/hooks/use-greeting.test.tsx index 7670b58..9133c34 100644 --- a/hyperglass/ui/hooks/use-greeting.test.tsx +++ b/hyperglass/ui/hooks/use-greeting.test.tsx @@ -42,7 +42,7 @@ const TestComponent = (): JSX.Element => { }; describe('useGreeting Hook', () => { - it('should open and close when toggled', () => { + it('should open and close when toggled', async () => { const { container } = render(); const open = container.querySelector('#open'); const close = container.querySelector('#close'); @@ -50,16 +50,16 @@ describe('useGreeting Hook', () => { if (open !== null && close !== null && isOpen !== null) { expect(isOpen).toHaveTextContent(FALSE); - userEvent.click(open); + await userEvent.click(open); expect(isOpen).toHaveTextContent(TRUE); - userEvent.click(close); + await userEvent.click(close); expect(isOpen).toHaveTextContent(FALSE); } else { throw new Error('Test render error'); } }); - it('should properly update acknowledgement state', () => { + it('should properly update acknowledgement state', async () => { const { container } = render(); const open = container.querySelector('#open'); const close = container.querySelector('#close'); @@ -82,31 +82,31 @@ describe('useGreeting Hook', () => { ackFalseNotRequired !== null && ackTrueNotRequired !== null ) { - userEvent.click(open); + await userEvent.click(open); expect(isOpen).toHaveTextContent(TRUE); expect(isAck).toHaveTextContent(FALSE); expect(greetingReady).toHaveTextContent(FALSE); - userEvent.click(open); - userEvent.click(ackFalseRequired); + await userEvent.click(open); + await userEvent.click(ackFalseRequired); expect(isOpen).toHaveTextContent(FALSE); expect(isAck).toHaveTextContent(FALSE); expect(greetingReady).toHaveTextContent(FALSE); - userEvent.click(open); - userEvent.click(ackTrueRequired); + await userEvent.click(open); + await userEvent.click(ackTrueRequired); expect(isOpen).toHaveTextContent(FALSE); expect(isAck).toHaveTextContent(TRUE); expect(greetingReady).toHaveTextContent(TRUE); - userEvent.click(open); - userEvent.click(ackFalseNotRequired); + await userEvent.click(open); + await userEvent.click(ackFalseNotRequired); expect(isOpen).toHaveTextContent(FALSE); expect(isAck).toHaveTextContent(FALSE); expect(greetingReady).toHaveTextContent(TRUE); - userEvent.click(open); - userEvent.click(ackTrueNotRequired); + await userEvent.click(open); + await userEvent.click(ackTrueNotRequired); expect(isOpen).toHaveTextContent(FALSE); expect(isAck).toHaveTextContent(TRUE); expect(greetingReady).toHaveTextContent(TRUE); diff --git a/hyperglass/ui/hooks/use-opposing-color.test.tsx b/hyperglass/ui/hooks/use-opposing-color.test.tsx index 5577c83..5bf4f09 100644 --- a/hyperglass/ui/hooks/use-opposing-color.test.tsx +++ b/hyperglass/ui/hooks/use-opposing-color.test.tsx @@ -23,7 +23,7 @@ const TestComponent = (): JSX.Element => { }; describe('useOpposingColor Hook', () => { - it('should change foreground color', () => { + it('should change foreground color', async () => { const { getByRole, container } = render( @@ -35,12 +35,12 @@ describe('useOpposingColor Hook', () => { expect(test1).toHaveStyle('color: black;'); expect(test2).toHaveStyle('color: black;'); - userEvent.click(getByRole('button')); + await userEvent.click(getByRole('button')); expect(test1).toHaveStyle('color: white;'); expect(test2).toHaveStyle('color: white;'); - userEvent.click(getByRole('button')); + await userEvent.click(getByRole('button')); expect(test1).toHaveStyle('color: black;'); expect(test2).toHaveStyle('color: black;');