mirror of
https://github.com/streamich/react-use.git
synced 2025-12-08 18:02:14 +00:00
Also reduce max line width to 100. And remove `lint:types` step for commit sequence, it bothers when committing incomplete (wip) changes.
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import { renderHook } from '@testing-library/react-hooks';
|
|
import useLogger from '../src/useLogger';
|
|
|
|
const logSpy = jest.spyOn(global.console, 'log').mockImplementation(() => {});
|
|
|
|
describe('useLogger', () => {
|
|
it('should be defined', () => {
|
|
expect(useLogger).toBeDefined();
|
|
});
|
|
|
|
it('should log the provided props on mount', () => {
|
|
const props = { question: 'What is the meaning?', answer: 42 };
|
|
renderHook(() => useLogger('Test', props));
|
|
|
|
expect(logSpy).toBeCalledTimes(1);
|
|
expect(logSpy).toHaveBeenLastCalledWith('Test mounted', props);
|
|
});
|
|
|
|
it('should log when the component has unmounted', () => {
|
|
const props = { question: 'What is the meaning?', answer: 42 };
|
|
const { unmount } = renderHook(() => useLogger('Test', props));
|
|
|
|
unmount();
|
|
|
|
expect(logSpy).toHaveBeenLastCalledWith('Test unmounted');
|
|
});
|
|
|
|
it('should log updates as props change', () => {
|
|
const { rerender } = renderHook(
|
|
({ componentName, props }: { componentName: string; props: any }) =>
|
|
useLogger(componentName, props),
|
|
{
|
|
initialProps: { componentName: 'Test', props: { one: 1 } },
|
|
}
|
|
);
|
|
|
|
const newProps = { one: 1, two: 2 };
|
|
rerender({ componentName: 'Test', props: newProps });
|
|
|
|
expect(logSpy).toHaveBeenLastCalledWith('Test updated', newProps);
|
|
});
|
|
});
|