import { describe, expect, it } from "vitest"; import { resolveAssignment, TaskServiceError } from "./taskService.server"; /** * Single-assignee rule (AK-P4b DoD 2): a task is assigned to exactly one of a * user or a group; default = creator. Pure logic, no DB. */ describe("resolveAssignment", () => { it("defaults to the creator when neither user nor group is given", () => { expect(resolveAssignment({ creatorUserId: "u-creator" })).toEqual({ assignedToUserId: "u-creator", assignedToGroupId: null, }); }); it("keeps a single user assignment", () => { expect(resolveAssignment({ creatorUserId: "u-creator", assignedToUserId: "u-1" })).toEqual({ assignedToUserId: "u-1", assignedToGroupId: null, }); }); it("keeps a single group assignment", () => { expect(resolveAssignment({ creatorUserId: "u-creator", assignedToGroupId: "g-1" })).toEqual({ assignedToUserId: null, assignedToGroupId: "g-1", }); }); it("rejects assigning to both a user and a group", () => { expect(() => resolveAssignment({ creatorUserId: "u-creator", assignedToUserId: "u-1", assignedToGroupId: "g-1" })).toThrow(TaskServiceError); }); });