64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
import { renderHook } from "@testing-library/react-hooks";
|
|
import { vi } from "vitest";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
import { useParamsWithFallback } from "./useParamsWithFallback";
|
|
|
|
describe("useParamsWithFallback hook", () => {
|
|
it("should return router.query when param is null", () => {
|
|
vi.mock("next/navigation", () => ({
|
|
useParams: vi.fn().mockReturnValue(null),
|
|
}));
|
|
|
|
vi.mock("next/compat/router", () => ({
|
|
useRouter: vi.fn().mockReturnValue({ query: { id: 1 } }),
|
|
}));
|
|
|
|
const { result } = renderHook(() => useParamsWithFallback());
|
|
|
|
expect(result.current).toEqual({ id: 1 });
|
|
});
|
|
|
|
it("should return router.query when param is undefined", () => {
|
|
vi.mock("next/navigation", () => ({
|
|
useParams: vi.fn().mockReturnValue(undefined),
|
|
}));
|
|
|
|
vi.mock("next/compat/router", () => ({
|
|
useRouter: vi.fn().mockReturnValue({ query: { id: 1 } }),
|
|
}));
|
|
|
|
const { result } = renderHook(() => useParamsWithFallback());
|
|
|
|
expect(result.current).toEqual({ id: 1 });
|
|
});
|
|
|
|
it("should return useParams() if it exists", () => {
|
|
vi.mock("next/navigation", () => ({
|
|
useParams: vi.fn().mockReturnValue({ id: 1 }),
|
|
}));
|
|
|
|
vi.mock("next/compat/router", () => ({
|
|
useRouter: vi.fn().mockReturnValue(null),
|
|
}));
|
|
|
|
const { result } = renderHook(() => useParamsWithFallback());
|
|
|
|
expect(result.current).toEqual({ id: 1 });
|
|
});
|
|
|
|
it("should return useParams() if it exists", () => {
|
|
vi.mock("next/navigation", () => ({
|
|
useParams: vi.fn().mockReturnValue({ id: 1 }),
|
|
}));
|
|
|
|
vi.mock("next/compat/router", () => ({
|
|
useRouter: vi.fn().mockReturnValue({ query: { id: 2 } }),
|
|
}));
|
|
|
|
const { result } = renderHook(() => useParamsWithFallback());
|
|
|
|
expect(result.current).toEqual({ id: 1 });
|
|
});
|
|
});
|