import test from "node:test"; import assert from "node:assert/strict"; import { createLocalAuthContext } from "../src/modules/auth/auth.controller.ts"; import { createWorkspaceModule } from "../src/modules/workspaces/workspaces.module.ts"; import { createProjectsModule } from "../src/modules/projects/projects.module.ts"; test("bootstrap personal workspace flow creates a personal workspace for the user", () => { const auth = createLocalAuthContext("user-1"); const workspaces = createWorkspaceModule(); const workspace = workspaces.controller.bootstrapPersonalWorkspace(auth); assert.equal(workspace.type, "personal"); assert.equal(workspace.ownerId, "user-1"); assert.equal(workspace.slug, "user-1-personal"); }); test("create project under a workspace", () => { const auth = createLocalAuthContext("user-2"); const workspaces = createWorkspaceModule(); const projects = createProjectsModule(workspaces.service); const workspace = workspaces.controller.bootstrapPersonalWorkspace(auth); const project = projects.controller.createProject(auth, { workspaceId: workspace.id, name: "Dataset Ops", slug: "dataset-ops", description: "Project for embodied data workflows", }); assert.equal(project.workspaceId, workspace.id); assert.equal(project.name, "Dataset Ops"); assert.equal(project.createdBy, "user-2"); }); test("reject project creation without a workspace id", () => { const auth = createLocalAuthContext("user-3"); const workspaces = createWorkspaceModule(); const projects = createProjectsModule(workspaces.service); assert.throws( () => projects.controller.createProject(auth, { workspaceId: "", name: "Invalid", slug: "invalid", description: "Missing workspace id", }), /workspaceId is required/, ); });