mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-07-23 13:02:58 +00:00
Preserve legacy settings across same-profile upgrades
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
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");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user