Files
Aurora-SpotiRip/helpers/useMediaQuery.spec.tsx
T

47 lines
1.4 KiB
TypeScript
Raw Normal View History

2026-09-25 23:20:57 -05:00
import { renderHook } from "@testing-library/react";
import { useMediaQuery } from "./useMediaQuery";
describe("useMediaQuery", () => {
let matchMedia: jasmine.Spy;
let addListener: jasmine.Spy;
let removeListener: jasmine.Spy;
beforeEach(() => {
addListener = jasmine.createSpy("addEventListener");
removeListener = jasmine.createSpy("removeEventListener");
matchMedia = jasmine.createSpy("matchMedia").and.returnValue({
matches: false,
addEventListener: addListener,
removeEventListener: removeListener,
});
(window as any).matchMedia = matchMedia;
});
it("should return false by default", () => {
const { result } = renderHook(() => useMediaQuery("(min-width: 768px)"));
expect(result.current).toBe(false);
});
it("should call matchMedia with the provided query", () => {
const query = "(min-width: 768px)";
renderHook(() => useMediaQuery(query));
expect(matchMedia).toHaveBeenCalledWith(query);
});
it("should add event listener on mount", () => {
renderHook(() => useMediaQuery("(min-width: 768px)"));
expect(addListener).toHaveBeenCalledWith("change", jasmine.any(Function));
});
it("should remove event listener on unmount", () => {
const { unmount } = renderHook(() => useMediaQuery("(min-width: 768px)"));
unmount();
expect(removeListener).toHaveBeenCalledWith(
"change",
jasmine.any(Function),
);
});
});