From bba984bd898e1ff40673be92b976812cb5d56ce9 Mon Sep 17 00:00:00 2001 From: wmoooid Date: Sun, 2 Jun 2024 15:13:19 +0400 Subject: [PATCH] [test]: useIsFirstRender --- .../useIsFirstRender/useIsFirstRender.test.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/hooks/useIsFirstRender/useIsFirstRender.test.ts diff --git a/src/hooks/useIsFirstRender/useIsFirstRender.test.ts b/src/hooks/useIsFirstRender/useIsFirstRender.test.ts new file mode 100644 index 0000000..0817dc2 --- /dev/null +++ b/src/hooks/useIsFirstRender/useIsFirstRender.test.ts @@ -0,0 +1,35 @@ +import { renderHook } from '@testing-library/react'; + +import { useIsFirstRender } from './useIsFirstRender'; + +it('Should return true on the first render', () => { + const { result } = renderHook(useIsFirstRender); + + expect(result.current).toBe(true); +}); + +it('Should return false on subsequent renders', () => { + const { result, rerender } = renderHook(useIsFirstRender); + + expect(result.current).toBe(true); + + rerender(); + expect(result.current).toBe(false); + + rerender(); + expect(result.current).toBe(false); +}); + +it('Should maintain state across multiple components', () => { + const { result: result1, rerender: rerender1 } = renderHook(useIsFirstRender); + const { result: result2, rerender: rerender2 } = renderHook(useIsFirstRender); + + expect(result1.current).toBe(true); + expect(result2.current).toBe(true); + + rerender1(); + expect(result1.current).toBe(false); + + rerender2(); + expect(result2.current).toBe(false); +});