65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest"
|
|
|
|
const { mockDb } = vi.hoisted(() => ({
|
|
mockDb: {
|
|
customer: {
|
|
create: vi.fn(),
|
|
findMany: vi.fn(),
|
|
},
|
|
commission: {
|
|
create: vi.fn(),
|
|
findMany: vi.fn(),
|
|
update: vi.fn(),
|
|
},
|
|
},
|
|
}))
|
|
|
|
vi.mock("./client", () => ({
|
|
db: mockDb,
|
|
}))
|
|
|
|
import { createCommission, createCustomer, updateCommissionStatus } from "./commissions"
|
|
|
|
describe("commissions service", () => {
|
|
beforeEach(() => {
|
|
for (const value of Object.values(mockDb)) {
|
|
for (const fn of Object.values(value)) {
|
|
if (typeof fn === "function") {
|
|
fn.mockReset()
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
it("creates customer and commission payloads", async () => {
|
|
mockDb.customer.create.mockResolvedValue({ id: "customer-1" })
|
|
mockDb.commission.create.mockResolvedValue({ id: "commission-1" })
|
|
|
|
await createCustomer({
|
|
name: "Ada Lovelace",
|
|
email: "ada@example.com",
|
|
isRecurring: true,
|
|
})
|
|
|
|
await createCommission({
|
|
title: "Portrait Request",
|
|
status: "new",
|
|
customerId: "550e8400-e29b-41d4-a716-446655440000",
|
|
})
|
|
|
|
expect(mockDb.customer.create).toHaveBeenCalledTimes(1)
|
|
expect(mockDb.commission.create).toHaveBeenCalledTimes(1)
|
|
})
|
|
|
|
it("updates commission status", async () => {
|
|
mockDb.commission.update.mockResolvedValue({ id: "commission-1", status: "done" })
|
|
|
|
await updateCommissionStatus({
|
|
id: "550e8400-e29b-41d4-a716-446655440001",
|
|
status: "done",
|
|
})
|
|
|
|
expect(mockDb.commission.update).toHaveBeenCalledTimes(1)
|
|
})
|
|
})
|