53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
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/,
|
|
);
|
|
});
|