import { beforeEach, describe, expect, it, vi } from "vitest" const { mockDb } = vi.hoisted(() => ({ mockDb: { announcement: { create: vi.fn(), update: vi.fn(), delete: vi.fn(), findMany: vi.fn(), }, }, })) vi.mock("./client", () => ({ db: mockDb, })) import { createAnnouncement, listActiveAnnouncements } from "./announcements" describe("announcements service", () => { beforeEach(() => { for (const fn of Object.values(mockDb.announcement)) { if (typeof fn === "function") { fn.mockReset() } } }) it("creates announcements through schema parsing", async () => { mockDb.announcement.create.mockResolvedValue({ id: "announcement-1" }) await createAnnouncement({ title: "Scheduled Notice", message: "Commission slots are open.", placement: "global_top", }) expect(mockDb.announcement.create).toHaveBeenCalledTimes(1) }) it("queries only visible announcements in the given placement", async () => { mockDb.announcement.findMany.mockResolvedValue([]) await listActiveAnnouncements("homepage") expect(mockDb.announcement.findMany).toHaveBeenCalledTimes(1) expect(mockDb.announcement.findMany.mock.calls[0]?.[0]).toMatchObject({ where: { placement: "homepage", isVisible: true, }, }) }) })