Files
wajs-server/__tests__/seed.test.ts
2026-02-05 16:33:43 +08:00

50 lines
1.5 KiB
TypeScript

import { mock } from "bun:test";
const mockPrisma = {
user: {
upsert: mock(async () => ({ id: "user-1", email: "admin@example.com" })),
},
apiKey: {
upsert: mock(async () => ({ id: "key-1" })),
},
webHook: {
findFirst: mock(async () => null as any),
create: mock(async () => ({ id: "webhook-1" })),
},
chatFlows: {
upsert: mock(async () => ({ id: "flow-1" })),
},
$disconnect: mock(async () => {}),
};
mock.module("@/server/lib/prisma", () => ({
prisma: mockPrisma,
}));
import { expect, test, describe } from "bun:test";
import { seed } from "../prisma/seed";
describe("Prisma Seed", () => {
test("seed function should populate default data", async () => {
const result = await seed();
expect(result.user.email).toBe("admin@example.com");
expect(mockPrisma.user.upsert).toHaveBeenCalled();
expect(mockPrisma.apiKey.upsert).toHaveBeenCalled();
expect(mockPrisma.webHook.findFirst).toHaveBeenCalled();
expect(mockPrisma.webHook.create).toHaveBeenCalled();
expect(mockPrisma.chatFlows.upsert).toHaveBeenCalled();
});
test("seed function should skip webhook creation if it already exists", async () => {
// Reset mocks
mockPrisma.webHook.create.mockClear();
mockPrisma.webHook.findFirst.mockResolvedValueOnce({ id: "existing-webhook" });
await seed();
expect(mockPrisma.webHook.findFirst).toHaveBeenCalled();
expect(mockPrisma.webHook.create).not.toHaveBeenCalled();
});
});