import { describe, test, expect, beforeEach, afterEach, vi } from "vitest"; // insensitiveContains/insensitiveEquals read DATABASE_PROVIDER once at module // load (not per call, see prisma-search.ts) — vi.resetModules() + a fresh // dynamic import per test is required to observe both branches. const originalProvider = process.env.DATABASE_PROVIDER; beforeEach(() => { vi.resetModules(); }); afterEach(() => { if (originalProvider === undefined) delete process.env.DATABASE_PROVIDER; else process.env.DATABASE_PROVIDER = originalProvider; }); describe("insensitiveContains", () => { test("adds mode: insensitive for the postgresql provider", async () => { process.env.DATABASE_PROVIDER = "postgresql"; const { insensitiveContains } = await import("./prisma-search"); expect(insensitiveContains("mild")).toEqual({ contains: "mild", mode: "insensitive" }); }); test("adds mode: insensitive when DATABASE_PROVIDER is unset (default)", async () => { delete process.env.DATABASE_PROVIDER; const { insensitiveContains } = await import("./prisma-search"); expect(insensitiveContains("mild")).toEqual({ contains: "mild", mode: "insensitive" }); }); test("omits mode for the mysql provider", async () => { process.env.DATABASE_PROVIDER = "mysql"; const { insensitiveContains } = await import("./prisma-search"); expect(insensitiveContains("mild")).toEqual({ contains: "mild" }); }); }); describe("insensitiveEquals", () => { test("adds mode: insensitive for the postgresql provider", async () => { process.env.DATABASE_PROVIDER = "postgresql"; const { insensitiveEquals } = await import("./prisma-search"); expect(insensitiveEquals("mild")).toEqual({ equals: "mild", mode: "insensitive" }); }); test("omits mode for the mysql provider", async () => { process.env.DATABASE_PROVIDER = "mysql"; const { insensitiveEquals } = await import("./prisma-search"); expect(insensitiveEquals("mild")).toEqual({ equals: "mild" }); }); });