Files
linuxcncWebWASM/web/app/test_frontend_m3.mjs

24 lines
1.7 KiB
JavaScript

import assert from "node:assert/strict";
import { MemoryStorage } from "../workspace/journal.mjs";
import { ReplayTimeline } from "../worker/replay.mjs";
import { createCheckpoint } from "../workspace/recovery.mjs";
import { ProjectWorkflow } from "./project-workflow.mjs";
import { recoveryView } from "./recovery-panel.mjs";
const workflow = new ProjectWorkflow({ contextId: "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", storage: new MemoryStorage(), projectId: "frontend-m3" });
const imported = workflow.importFiles([{ path: "config/main.ini", data: "[EMC]\n" }, { path: "programs/main.ngc", data: "G0 X1\n" }]);
assert.equal(imported.status, "verified");
assert.deepEqual(workflow.exportFiles(), [{ path: "config/main.ini", data: "[EMC]\n" }, { path: "programs/main.ngc", data: "G0 X1\n" }]);
const timeline = new ReplayTimeline();
timeline.appendEvent(1, 0, "SESSION_READY", {});
timeline.checkpoint(1, 0, { tick: 0 });
const checkpoint = createCheckpoint({ contextId: workflow.contextId, timeline, state: { tick: 0 }, operations: [] });
const pkg = workflow.package({ timeline, checkpoint, committedSeq: 1 });
assert.equal(workflow.verify(pkg).package_hash, pkg.package_hash);
const migrated = workflow.migrate(pkg, 2);
assert.equal(workflow.verify(migrated, { expectedVersion: 2 }).format_version, 2);
const offline = workflow.offline(migrated, [{ path: "ui/index.html", data: "<main>" }]);
assert.equal(workflow.verifyOffline(offline, { workspacePackage: migrated, available: [{ path: "ui/index.html", data: "<main>" }] }).status, "ready");
assert.equal(recoveryView({ status: "blocked", half_commits: [2] }).message, "half_commit_ignored");
console.log(`frontend_m3=passed files=${workflow.exportFiles().length}`);