35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
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);
|
|
});
|
|
});
|