From 3bd1cbcf9dc4e13607dc612be05b14b10ae8272c Mon Sep 17 00:00:00 2001 From: Ward Oosterlijnck Date: Wed, 8 May 2019 19:40:39 +1000 Subject: [PATCH] Add useToggle tests --- src/__tests__/useToggle.test.tsx | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/__tests__/useToggle.test.tsx diff --git a/src/__tests__/useToggle.test.tsx b/src/__tests__/useToggle.test.tsx new file mode 100644 index 00000000..bcf1d78f --- /dev/null +++ b/src/__tests__/useToggle.test.tsx @@ -0,0 +1,49 @@ +import { act, cleanup, renderHook } from 'react-hooks-testing-library'; +import useToggle from '../useToggle'; + +afterEach(cleanup); + +describe('useToggle', () => { + it('should be defined', () => { + expect(useToggle).toBeDefined(); + }); + + const hook = renderHook(props => useToggle(props), { initialProps: false }); + + it('should return initial state on initial render', () => { + expect(hook.result.current[0]).toBe(false); + }); + + it('should update state with correct value', () => { + hook.rerender(true); + expect(hook.result.current[0]).toBe(true); + + act(() => { + hook.result.current[1](false); + }); + + expect(hook.result.current[0]).toBe(false); + }); + + // it('should toggle state without a value parameter', () => { + // act(() => { + // hook.result.current[1](); + // }); + + // expect(hook.result.current[0]).toBe(true); + // }); + + // it('should ignore non-boolean parameters', () => { + // act(() => { + // hook.result.current[1]('string'); + // }); + + // expect(hook.result.current[0]).toBe(true); + + // act(() => { + // hook.result.current[1]({}); + // }); + + // expect(hook.result.current[0]).toBe(false); + // }); +});