Files
ST-Bionic-Memory-Ecology/tests/opfs-meta-fast-path.mjs
2026-04-22 18:34:56 +08:00

79 lines
2.0 KiB
JavaScript

import assert from "node:assert/strict";
import {
BME_GRAPH_LOCAL_STORAGE_MODE_OPFS_SHADOW,
OpfsGraphStore,
} from "../sync/bme-opfs-store.js";
import { createMemoryOpfsRoot } from "./helpers/memory-opfs.mjs";
const rootDirectory = createMemoryOpfsRoot();
const store = new OpfsGraphStore("chat-opfs-meta-fast-path", {
rootDirectoryFactory: async () => rootDirectory,
storeMode: BME_GRAPH_LOCAL_STORAGE_MODE_OPFS_SHADOW,
});
await store.open();
await store.importSnapshot(
{
meta: {
revision: 3,
lastBackupFilename: "before.json",
lastSyncUploadedAt: 10,
},
state: {
lastProcessedFloor: 2,
extractionCount: 1,
},
nodes: [
{
id: "node-1",
type: "event",
fields: { title: "A" },
archived: false,
updatedAt: 1,
},
],
edges: [],
tombstones: [],
},
{
mode: "replace",
preserveRevision: true,
},
);
const originalLoadSnapshot = store._loadSnapshot.bind(store);
let loadSnapshotCalls = 0;
store._loadSnapshot = async (...args) => {
loadSnapshotCalls += 1;
return await originalLoadSnapshot(...args);
};
assert.equal(await store.getMeta("lastBackupFilename", ""), "before.json");
assert.equal(await store.getRevision(), 3);
await store.patchMeta({
lastBackupFilename: "after.json",
lastProcessedFloor: 9,
extractionCount: 4,
});
const probe = await store.exportSnapshotProbe();
assert.equal(
loadSnapshotCalls,
0,
"manifest-only meta fast path should not load full snapshot",
);
assert.equal(probe.__stBmeProbeOnly, true);
assert.equal(probe.meta.lastBackupFilename, "after.json");
assert.equal(probe.meta.nodeCount, 1);
assert.equal(probe.state.lastProcessedFloor, 9);
assert.equal(probe.state.extractionCount, 4);
const snapshot = await originalLoadSnapshot();
assert.equal(snapshot.meta.lastBackupFilename, "after.json");
assert.equal(snapshot.state.lastProcessedFloor, 9);
assert.equal(snapshot.state.extractionCount, 4);
assert.equal(snapshot.nodes.length, 1);
console.log("opfs-meta-fast-path tests passed");