2
0
Files
cal/calcom/packages/lib/hooks/useParamsWithFallback.test.ts
2024-08-09 00:39:27 +02:00

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 });
});
});