Spaces:
Paused
Paused
| import { describe, expect, it } from "vitest"; | |
| import { | |
| buildOnboardingIssuePayload, | |
| buildOnboardingProjectPayload, | |
| selectDefaultCompanyGoalId, | |
| } from "./onboarding-launch"; | |
| describe("selectDefaultCompanyGoalId", () => { | |
| it("prefers the earliest active root company goal", () => { | |
| expect( | |
| selectDefaultCompanyGoalId([ | |
| { | |
| id: "team-goal", | |
| companyId: "company-1", | |
| title: "Nested", | |
| description: null, | |
| level: "team", | |
| status: "active", | |
| parentId: null, | |
| ownerAgentId: null, | |
| createdAt: new Date("2026-03-04T00:00:00Z"), | |
| updatedAt: new Date("2026-03-04T00:00:00Z"), | |
| }, | |
| { | |
| id: "goal-2", | |
| companyId: "company-1", | |
| title: "Later active root", | |
| description: null, | |
| level: "company", | |
| status: "active", | |
| parentId: null, | |
| ownerAgentId: null, | |
| createdAt: new Date("2026-03-03T00:00:00Z"), | |
| updatedAt: new Date("2026-03-03T00:00:00Z"), | |
| }, | |
| { | |
| id: "goal-1", | |
| companyId: "company-1", | |
| title: "Earliest active root", | |
| description: null, | |
| level: "company", | |
| status: "active", | |
| parentId: null, | |
| ownerAgentId: null, | |
| createdAt: new Date("2026-03-02T00:00:00Z"), | |
| updatedAt: new Date("2026-03-02T00:00:00Z"), | |
| }, | |
| ]), | |
| ).toBe("goal-1"); | |
| }); | |
| it("falls back to the earliest root company goal when none are active", () => { | |
| expect( | |
| selectDefaultCompanyGoalId([ | |
| { | |
| id: "goal-2", | |
| companyId: "company-1", | |
| title: "Cancelled root", | |
| description: null, | |
| level: "company", | |
| status: "cancelled", | |
| parentId: null, | |
| ownerAgentId: null, | |
| createdAt: new Date("2026-03-03T00:00:00Z"), | |
| updatedAt: new Date("2026-03-03T00:00:00Z"), | |
| }, | |
| { | |
| id: "goal-1", | |
| companyId: "company-1", | |
| title: "Earliest root", | |
| description: null, | |
| level: "company", | |
| status: "planned", | |
| parentId: null, | |
| ownerAgentId: null, | |
| createdAt: new Date("2026-03-02T00:00:00Z"), | |
| updatedAt: new Date("2026-03-02T00:00:00Z"), | |
| }, | |
| ]), | |
| ).toBe("goal-1"); | |
| }); | |
| }); | |
| describe("onboarding launch payloads", () => { | |
| it("links the onboarding project and first issue to the selected goal", () => { | |
| expect(buildOnboardingProjectPayload("goal-1")).toEqual({ | |
| name: "Onboarding", | |
| status: "in_progress", | |
| goalIds: ["goal-1"], | |
| }); | |
| expect( | |
| buildOnboardingIssuePayload({ | |
| title: " Hire your first engineer ", | |
| description: " Kick off the hiring plan ", | |
| assigneeAgentId: "agent-1", | |
| projectId: "project-1", | |
| goalId: "goal-1", | |
| }), | |
| ).toEqual({ | |
| title: "Hire your first engineer", | |
| description: "Kick off the hiring plan", | |
| assigneeAgentId: "agent-1", | |
| projectId: "project-1", | |
| goalId: "goal-1", | |
| status: "todo", | |
| }); | |
| }); | |
| it("omits goal links when no default company goal exists", () => { | |
| expect(buildOnboardingProjectPayload(null)).toEqual({ | |
| name: "Onboarding", | |
| status: "in_progress", | |
| }); | |
| expect( | |
| buildOnboardingIssuePayload({ | |
| title: "Task", | |
| description: "", | |
| assigneeAgentId: "agent-1", | |
| projectId: "project-1", | |
| goalId: null, | |
| }), | |
| ).toEqual({ | |
| title: "Task", | |
| assigneeAgentId: "agent-1", | |
| projectId: "project-1", | |
| status: "todo", | |
| }); | |
| }); | |
| }); | |