Encode Automerge docs for Camino CRDT writes

This commit is contained in:
Timothy J. Aveni
2026-07-12 20:15:51 -07:00
parent 864f8f5de6
commit e72b3c5577
5 changed files with 112 additions and 8 deletions
+20
View File
@@ -3,6 +3,8 @@ import test from "node:test";
import * as Automerge from "@automerge/automerge";
import {
createAutomergeFieldValue,
encodeAutomergeFieldWrite,
isAutomergeFieldDoc,
loadAutomergeFieldDoc,
materializeAutomergeFieldValue,
mergeAutomergeFieldValues,
@@ -21,6 +23,24 @@ test("Automerge CRDT fields lift plain values into stored envelopes", () => {
});
});
test("Automerge CRDT fields encode rehydrated docs for writes", () => {
const base = loadAutomergeFieldDoc(
createAutomergeFieldValue({ title: "draft" }, type),
type,
);
const changed = Automerge.change(base, (doc) => {
(doc.value as { title: string }).title = "edited";
});
assert.equal(isAutomergeFieldDoc(changed), true);
const stored = encodeAutomergeFieldWrite(changed, type);
assert.deepEqual(materializeAutomergeFieldValue(stored, type), {
title: "edited",
});
});
test("Automerge CRDT fields merge divergent saved documents", () => {
const base = loadAutomergeFieldDoc(
createAutomergeFieldValue({ left: false, right: false }, type),