diff options
Diffstat (limited to 'src/features/surface-host/logic/todo.test.ts')
| -rw-r--r-- | src/features/surface-host/logic/todo.test.ts | 110 |
1 files changed, 55 insertions, 55 deletions
diff --git a/src/features/surface-host/logic/todo.test.ts b/src/features/surface-host/logic/todo.test.ts index 225ecde..66ff036 100644 --- a/src/features/surface-host/logic/todo.test.ts +++ b/src/features/surface-host/logic/todo.test.ts @@ -2,66 +2,66 @@ import { describe, expect, it } from "vitest"; import { parseTodoPayload, type TodoItem } from "./todo"; const item = (content: string, status: TodoItem["status"] = "pending"): TodoItem => ({ - content, - status, + content, + status, }); describe("parseTodoPayload", () => { - it("parses a well-formed payload with items", () => { - const data = parseTodoPayload({ - todos: [ - item("Write tests", "in_progress"), - item("Ship it", "pending"), - item("Read docs", "completed"), - ], - }); - expect(data).toEqual({ - todos: [ - item("Write tests", "in_progress"), - item("Ship it", "pending"), - item("Read docs", "completed"), - ], - }); - }); + it("parses a well-formed payload with items", () => { + const data = parseTodoPayload({ + todos: [ + item("Write tests", "in_progress"), + item("Ship it", "pending"), + item("Read docs", "completed"), + ], + }); + expect(data).toEqual({ + todos: [ + item("Write tests", "in_progress"), + item("Ship it", "pending"), + item("Read docs", "completed"), + ], + }); + }); - it("parses an empty-todos payload", () => { - expect(parseTodoPayload({ todos: [] })).toEqual({ todos: [] }); - }); + it("parses an empty-todos payload", () => { + expect(parseTodoPayload({ todos: [] })).toEqual({ todos: [] }); + }); - it("preserves item order", () => { - const data = parseTodoPayload({ todos: [item("a"), item("b"), item("c")] }); - expect(data?.todos.map((t) => t.content)).toEqual(["a", "b", "c"]); - }); + it("preserves item order", () => { + const data = parseTodoPayload({ todos: [item("a"), item("b"), item("c")] }); + expect(data?.todos.map((t) => t.content)).toEqual(["a", "b", "c"]); + }); - it("accepts all four status values", () => { - const data = parseTodoPayload({ - todos: [ - item("p", "pending"), - item("i", "in_progress"), - item("c", "completed"), - item("x", "cancelled"), - ], - }); - expect(data?.todos.map((t) => t.status)).toEqual([ - "pending", - "in_progress", - "completed", - "cancelled", - ]); - }); + it("accepts all four status values", () => { + const data = parseTodoPayload({ + todos: [ + item("p", "pending"), + item("i", "in_progress"), + item("c", "completed"), + item("x", "cancelled"), + ], + }); + expect(data?.todos.map((t) => t.status)).toEqual([ + "pending", + "in_progress", + "completed", + "cancelled", + ]); + }); - it.each([ - ["null", null], - ["a number", 7], - ["a string", "nope"], - ["missing todos key", { foo: [] }], - ["todos not an array", { todos: "x" }], - ["entry not an object", { todos: ["x"] }], - ["entry missing content", { todos: [{ status: "pending" }] }], - ["entry with non-string content", { todos: [{ content: 1, status: "pending" }] }], - ["entry missing status", { todos: [{ content: "x" }] }], - ["entry with invalid status", { todos: [item("x", "done" as never)] }], - ])("returns null for invalid payload: %s", (_label, payload) => { - expect(parseTodoPayload(payload)).toBeNull(); - }); + it.each([ + ["null", null], + ["a number", 7], + ["a string", "nope"], + ["missing todos key", { foo: [] }], + ["todos not an array", { todos: "x" }], + ["entry not an object", { todos: ["x"] }], + ["entry missing content", { todos: [{ status: "pending" }] }], + ["entry with non-string content", { todos: [{ content: 1, status: "pending" }] }], + ["entry missing status", { todos: [{ content: "x" }] }], + ["entry with invalid status", { todos: [item("x", "done" as never)] }], + ])("returns null for invalid payload: %s", (_label, payload) => { + expect(parseTodoPayload(payload)).toBeNull(); + }); }); |
