Skip to content

Commit

Permalink
Merge pull request #47 from mbti-nf-team/test/react-hook
Browse files Browse the repository at this point in the history
  • Loading branch information
saseungmin authored Sep 7, 2023
2 parents e50567f + 0cd47bd commit 6f2af86
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .changeset/rich-planes-do.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@nf-team/react": patch
---

test(@nf-team/react): useIsFirstRender, useUpdateEffect hook 테스트 추가
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 6f2af86

Please sign in to comment.