From 4ae76748cdbe787e2d6512160d7ddebeca927791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltra=CC=81n=20Alarco=CC=81n?= Date: Fri, 2 Aug 2019 14:38:06 +0200 Subject: [PATCH] Update usePrevious tests --- src/__tests__/usePrevious.test.tsx | 31 ++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/__tests__/usePrevious.test.tsx b/src/__tests__/usePrevious.test.tsx index 024b4f56..f6d63797 100644 --- a/src/__tests__/usePrevious.test.tsx +++ b/src/__tests__/usePrevious.test.tsx @@ -1,20 +1,23 @@ import { renderHook } from '@testing-library/react-hooks'; import usePrevious from '../usePrevious'; -describe('usePrevious', () => { - it('should be defined', () => { - expect(usePrevious).toBeDefined(); - }); +const setUp = () => renderHook(({ state }) => usePrevious(state), { initialProps: { state: 0 } }); - const hook = renderHook(props => usePrevious(props), { initialProps: 0 }); +it('should return undefined on initial render', () => { + const { result } = setUp(); - it('should return undefined on initial render', () => { - expect(hook.result.current).toBe(undefined); - }); - - it('should return previous state after update', () => { - hook.rerender(1); - hook.rerender(2); - expect(hook.result.current).toBe(1); - }); + expect(result.current).toBeUndefined(); +}); + +it('should always return previous state after each update', () => { + const { result, rerender } = setUp(); + + rerender({ state: 2 }); + expect(result.current).toBe(0); + + rerender({ state: 4 }); + expect(result.current).toBe(2); + + rerender({ state: 6 }); + expect(result.current).toBe(4); });