react-use/tests/createBreakpoint.test.ts
xobotyi b6993a6f95
feat(prettier): make prettier a part of eslint.
Also reduce max line width to 100. And remove `lint:types` step for
commit sequence, it bothers when committing incomplete (wip) changes.
2021-02-01 18:58:55 +03:00

75 lines
1.9 KiB
TypeScript

import { act, renderHook } from '@testing-library/react-hooks';
import createBreakpoint from '../src/factory/createBreakpoint';
const useBreakpointA = createBreakpoint();
const useBreakpointB = createBreakpoint({ mobileM: 350, laptop: 1024, tablet: 768 });
const originalInnerWidth = window.innerWidth;
const changeInnerWidth = (value) =>
Object.defineProperty(window, 'innerWidth', { writable: true, configurable: true, value });
const revert = () => changeInnerWidth(originalInnerWidth);
describe('createBreakpoint', () => {
test('should use default', () => {
const { result } = renderHook(() => useBreakpointA());
act(() => {
changeInnerWidth(100);
window.dispatchEvent(new Event('resize'));
});
expect(result.current).toBe('tablet');
act(() => {
changeInnerWidth(200);
window.dispatchEvent(new Event('resize'));
});
expect(result.current).toBe('tablet');
act(() => {
changeInnerWidth(1100);
window.dispatchEvent(new Event('resize'));
});
expect(result.current).toBe('laptop');
act(() => {
changeInnerWidth(1500);
window.dispatchEvent(new Event('resize'));
});
expect(result.current).toBe('laptopL');
act(() => {
revert();
});
});
test('should use custom', () => {
const { result } = renderHook(() => useBreakpointB());
act(() => {
changeInnerWidth(100);
window.dispatchEvent(new Event('resize'));
});
expect(result.current).toBe('mobileM');
act(() => {
changeInnerWidth(200);
window.dispatchEvent(new Event('resize'));
});
expect(result.current).toBe('mobileM');
act(() => {
changeInnerWidth(800);
window.dispatchEvent(new Event('resize'));
});
expect(result.current).toBe('tablet');
act(() => {
changeInnerWidth(1100);
window.dispatchEvent(new Event('resize'));
});
expect(result.current).toBe('laptop');
act(() => {
revert();
});
});
});