Files
obsidian-livesync/test/e2e-obsidian/runner/upgradeContinuity.test.ts
T
2026-07-22 06:21:54 +00:00

55 lines
1.9 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
assertCouchDbCheckpointContinuity,
assertJournalCheckpointLoaded,
assertNoJournalReplay,
type JournalCheckpointSnapshot,
} from "./upgradeContinuity.ts";
const journalCheckpoint: JournalCheckpointSnapshot = {
remoteKey: "remote-a",
lastLocalSeq: 42,
journalEpoch: "2:salt",
knownIDs: ["known-a"],
sentIDs: ["sent-a"],
receivedFiles: ["100-docs.jsonl.gz"],
sentFiles: ["101-docs.jsonl.gz"],
};
describe("upgrade synchronisation continuity assertions", () => {
it("rejects a fresh CouchDB checkpoint lineage even when final documents could still converge", () => {
expect(() =>
assertCouchDbCheckpointContinuity(
[{ id: "_local/original", lastSequence: 42 }],
[{ id: "_local/replacement", lastSequence: 42 }]
)
).toThrow("checkpoint identity changed");
});
it("rejects an Object Storage checkpoint which was reset to its initial state", () => {
expect(() =>
assertJournalCheckpointLoaded(journalCheckpoint, {
remoteKey: journalCheckpoint.remoteKey,
lastLocalSeq: 0,
journalEpoch: "",
knownIDs: [],
sentIDs: [],
receivedFiles: [],
sentFiles: [],
})
).toThrow(/lastLocalSeq regressed|history was lost/u);
});
it("rejects hidden Object Storage replay during an otherwise unchanged sync", () => {
expect(() =>
assertNoJournalReplay(
journalCheckpoint,
journalCheckpoint,
[{ key: "101-docs.jsonl.gz", size: 10, etag: "etag" }],
[{ key: "101-docs.jsonl.gz", size: 10, etag: "etag" }],
{ downloadedJournalKeys: ["101-docs.jsonl.gz"], uploadedJournalKeys: [] }
)
).toThrow("downloaded previously processed journals");
});
});