docbrown/app/javascript/shared/components/__tests__/useMediaQuery.test.js
Nick Taylor d90e5662ef
Created the <MediaQuery /> component and useMediaQuery hook. (#12809)
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
2021-02-25 14:28:44 -05:00

49 lines
1.3 KiB
JavaScript

import { renderHook } from '@testing-library/preact-hooks';
import { cleanup } from '@testing-library/preact';
import { useMediaQuery } from '@components/useMediaQuery';
describe('useMediaQuery', () => {
it('should return false if the media query is not matched', () => {
const addListener = jest.fn();
const removeListener = jest.fn();
global.window.matchMedia = jest.fn((query) => {
return {
matches: false,
media: query,
addListener,
removeListener,
};
});
const { result } = renderHook(() => useMediaQuery('some media query'));
expect(addListener).toHaveBeenCalledTimes(1);
expect(result.current).toEqual(false);
cleanup();
expect(removeListener).toHaveBeenCalledTimes(1);
});
it('should return true if the media query is not matched', () => {
const addListener = jest.fn();
const removeListener = jest.fn();
global.window.matchMedia = jest.fn((query) => {
return {
matches: true,
media: query,
addListener,
removeListener,
};
});
const { result } = renderHook(() => useMediaQuery('some media query'));
expect(addListener).toHaveBeenCalledTimes(1);
expect(result.current).toEqual(true);
cleanup();
expect(removeListener).toHaveBeenCalledTimes(1);
});
});