diff --git a/package.json b/package.json index b4dd035..5b8ccd8 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "db:studio": "drizzle-kit studio", "dev": "bunx --bun vite dev", "fix": "biome check --write", + "test": "bun test", "typecheck": "tsc --noEmit" }, "dependencies": { diff --git a/src/server/api/contracts/todo.contract.test.ts b/src/server/api/contracts/todo.contract.test.ts new file mode 100644 index 0000000..23a3f78 --- /dev/null +++ b/src/server/api/contracts/todo.contract.test.ts @@ -0,0 +1,20 @@ +import { describe, expect, test } from 'bun:test' +import { createInsertSchema } from 'drizzle-zod' +import { generatedFieldKeys } from '@/server/db/fields' +import { todoTable } from '@/server/db/schema' + +describe('todo insert schema', () => { + const insertSchema = createInsertSchema(todoTable).omit(generatedFieldKeys) + + test('accepts a minimal valid input', () => { + expect(insertSchema.safeParse({ title: 'buy milk' }).success).toBe(true) + }) + + test('rejects missing title', () => { + expect(insertSchema.safeParse({}).success).toBe(false) + }) + + test('rejects non-string title', () => { + expect(insertSchema.safeParse({ title: 42 }).success).toBe(false) + }) +})