Skip to content

Commit

Permalink
test: react package의 useIsFirstRender, useUpdateEffect hook 테스트 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
saseungmin committed Sep 7, 2023
1 parent e50567f commit ec35cce
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
27 changes: 27 additions & 0 deletions packages/react/src/hooks/useIsFirstRender.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { act, renderHook } from '@testing-library/react';

import useIsFirstRender from './useIsFirstRender';

describe('useIsFirstRender', () => {
const useIsFirstRenderHook = () => renderHook(useIsFirstRender);

context('첫 렌더링인 경우', () => {
it('true를 반환해야만 한다', () => {
const { result } = useIsFirstRenderHook();

expect(result.current).toBe(true);
});
});

context('첫 렌더링이 아닌 경우', () => {
it('false를 반환해야만 한다', () => {
const { result, rerender } = useIsFirstRenderHook();

act(() => {
rerender();
});

expect(result.current).toBe(false);
});
});
});
37 changes: 37 additions & 0 deletions packages/react/src/hooks/useUpdateEffect.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { renderHook } from '@testing-library/react';

import useIsFirstRender from './useIsFirstRender';
import useUpdateEffect from './useUpdateEffect';

jest.mock('./useIsFirstRender');

describe('useUpdateEffect', () => {
const effectCallback = jest.fn();

beforeEach(() => {
(useIsFirstRender as jest.Mock).mockImplementation(() => given.isFirstRender);
jest.clearAllMocks();
});

const useUpdateEffectHook = () => renderHook(() => useUpdateEffect(effectCallback, []));

context('첫 랜더링인 경우', () => {
given('isFirstRender', () => true);

it('effect callback 함수는 호출되지 않아만한다', () => {
useUpdateEffectHook();

expect(effectCallback).not.toHaveBeenCalled();
});
});

context('첫 렌더링이 아닌 경우', () => {
given('isFirstRender', () => false);

it('첫 랜더링이 아닌 경우 effect callback 함수는 호출되어야만 한다', () => {
useUpdateEffectHook();

expect(effectCallback).toHaveBeenCalledTimes(1);
});
});
});

0 comments on commit ec35cce

Please sign in to comment.