97 lines
3.2 KiB
TypeScript
97 lines
3.2 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";
|
|
import { createStorageModule } from "../src/modules/storage/storage.module.ts";
|
|
import { createAssetsModule } from "../src/modules/assets/assets.module.ts";
|
|
|
|
test("register an uploaded asset record", () => {
|
|
const auth = createLocalAuthContext("user-4");
|
|
const workspaces = createWorkspaceModule();
|
|
const projects = createProjectsModule(workspaces.service);
|
|
const storage = createStorageModule();
|
|
const assets = createAssetsModule(storage.service);
|
|
|
|
const workspace = workspaces.controller.bootstrapPersonalWorkspace(auth);
|
|
const project = projects.controller.createProject(auth, {
|
|
workspaceId: workspace.id,
|
|
name: "Assets",
|
|
slug: "assets",
|
|
description: "Asset intake project",
|
|
});
|
|
|
|
const asset = assets.controller.createAsset(auth, {
|
|
workspaceId: workspace.id,
|
|
projectId: project.id,
|
|
type: "archive",
|
|
sourceType: "upload",
|
|
displayName: "demo.zip",
|
|
});
|
|
|
|
assert.equal(asset.type, "archive");
|
|
assert.equal(asset.projectId, project.id);
|
|
assert.equal(asset.status, "pending");
|
|
});
|
|
|
|
test("create a probe report for a raw asset", () => {
|
|
const auth = createLocalAuthContext("user-5");
|
|
const workspaces = createWorkspaceModule();
|
|
const projects = createProjectsModule(workspaces.service);
|
|
const storage = createStorageModule();
|
|
const assets = createAssetsModule(storage.service);
|
|
|
|
const workspace = workspaces.controller.bootstrapPersonalWorkspace(auth);
|
|
const project = projects.controller.createProject(auth, {
|
|
workspaceId: workspace.id,
|
|
name: "Probe",
|
|
slug: "probe",
|
|
description: "Probe test project",
|
|
});
|
|
|
|
const asset = assets.controller.createAsset(auth, {
|
|
workspaceId: workspace.id,
|
|
projectId: project.id,
|
|
type: "folder",
|
|
sourceType: "upload",
|
|
displayName: "BJ_001_0001_OsmoNano_2026-03-19_14-51-43",
|
|
});
|
|
|
|
const report = assets.controller.probeAsset(asset.id);
|
|
|
|
assert.equal(report.assetId, asset.id);
|
|
assert.equal(report.detectedFormatCandidates.includes("delivery_package"), true);
|
|
});
|
|
|
|
test("return recommended next actions from probe metadata", () => {
|
|
const auth = createLocalAuthContext("user-6");
|
|
const workspaces = createWorkspaceModule();
|
|
const projects = createProjectsModule(workspaces.service);
|
|
const storage = createStorageModule();
|
|
const assets = createAssetsModule(storage.service);
|
|
|
|
const workspace = workspaces.controller.bootstrapPersonalWorkspace(auth);
|
|
const project = projects.controller.createProject(auth, {
|
|
workspaceId: workspace.id,
|
|
name: "Recommendations",
|
|
slug: "recommendations",
|
|
description: "Recommendation test project",
|
|
});
|
|
|
|
const asset = assets.controller.createAsset(auth, {
|
|
workspaceId: workspace.id,
|
|
projectId: project.id,
|
|
type: "archive",
|
|
sourceType: "upload",
|
|
displayName: "20260324-data-demo.zip",
|
|
});
|
|
|
|
const report = assets.controller.probeAsset(asset.id);
|
|
|
|
assert.deepEqual(report.recommendedNextNodes, [
|
|
"extract_archive",
|
|
"validate_structure",
|
|
]);
|
|
});
|