EmboFlow/apps/api/test/projects.e2e-spec.ts

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/,
);
});