66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
import { renderHook, act } from '@testing-library/react';
|
|
import useBoolean from 'lib/hooks/useBoolean';
|
|
|
|
describe('useBoolean CustomHook', () => {
|
|
it('should check true initial values', () => {
|
|
let initialValue = true;
|
|
const { result, rerender } = renderHook(() => useBoolean(initialValue));
|
|
expect(result.current.value).toBe(initialValue);
|
|
initialValue = false;
|
|
rerender();
|
|
// because state is in useState
|
|
expect(result.current.value).not.toBe(initialValue);
|
|
});
|
|
|
|
it('should check false initial values', () => {
|
|
let initialValue = false;
|
|
const { result, rerender } = renderHook(() => useBoolean(initialValue));
|
|
expect(result.current.value).toBe(initialValue);
|
|
|
|
initialValue = true;
|
|
rerender();
|
|
// because state is in useState
|
|
expect(result.current.value).not.toBe(initialValue);
|
|
});
|
|
|
|
it('should check setTrue function', () => {
|
|
const { result } = renderHook(() => useBoolean());
|
|
expect(result.current.value).toBeFalsy();
|
|
act(() => {
|
|
result.current.setTrue();
|
|
});
|
|
expect(result.current.value).toBeTruthy();
|
|
});
|
|
|
|
it('should check setFalse function', () => {
|
|
const { result } = renderHook(() => useBoolean());
|
|
|
|
expect(result.current.value).toBeFalsy();
|
|
act(() => {
|
|
result.current.setTrue();
|
|
});
|
|
|
|
expect(result.current.value).toBeTruthy();
|
|
|
|
act(() => {
|
|
result.current.setFalse();
|
|
});
|
|
expect(result.current.value).toBeFalsy();
|
|
});
|
|
|
|
it('should check setToggle function', () => {
|
|
const { result } = renderHook(() => useBoolean());
|
|
|
|
expect(result.current.value).toBeFalsy();
|
|
act(() => {
|
|
result.current.toggle();
|
|
});
|
|
|
|
expect(result.current.value).toBeTruthy();
|
|
|
|
act(() => {
|
|
result.current.toggle();
|
|
});
|
|
expect(result.current.value).toBeFalsy();
|
|
});
|
|
});
|