test(mvp1): expand domain schema and service unit coverage

This commit is contained in:
2026-02-12 20:13:03 +01:00
parent 7c4b667bc7
commit 24676bd384
3 changed files with 144 additions and 1 deletions

View File

@@ -0,0 +1,75 @@
import { beforeEach, describe, expect, it, vi } from "vitest"
const { mockDb } = vi.hoisted(() => ({
mockDb: {
post: {
create: vi.fn(),
findMany: vi.fn(),
findUnique: vi.fn(),
update: vi.fn(),
delete: vi.fn(),
},
},
}))
vi.mock("./client", () => ({
db: mockDb,
}))
import { createPost, getPostBySlug, listPosts, updatePost } from "./posts"
describe("posts service", () => {
beforeEach(() => {
for (const fn of Object.values(mockDb.post)) {
if (typeof fn === "function") {
fn.mockReset()
}
}
})
it("lists posts ordered by update date desc", async () => {
mockDb.post.findMany.mockResolvedValue([])
await listPosts()
expect(mockDb.post.findMany).toHaveBeenCalledTimes(1)
expect(mockDb.post.findMany.mock.calls[0]?.[0]).toMatchObject({
orderBy: {
updatedAt: "desc",
},
})
})
it("parses create and update payloads through crud service", async () => {
mockDb.post.create.mockResolvedValue({ id: "post-1" })
mockDb.post.findUnique.mockResolvedValue({ id: "550e8400-e29b-41d4-a716-446655440000" })
mockDb.post.update.mockResolvedValue({ id: "post-1" })
await createPost({
title: "A title",
slug: "a-title",
body: "Body",
status: "draft",
})
await updatePost("550e8400-e29b-41d4-a716-446655440000", {
title: "Updated",
})
expect(mockDb.post.create).toHaveBeenCalledTimes(1)
expect(mockDb.post.update).toHaveBeenCalledTimes(1)
})
it("finds posts by slug", async () => {
mockDb.post.findUnique.mockResolvedValue({ id: "post-1", slug: "hello" })
await getPostBySlug("hello")
expect(mockDb.post.findUnique).toHaveBeenCalledTimes(1)
expect(mockDb.post.findUnique).toHaveBeenCalledWith({
where: {
slug: "hello",
},
})
})
})