Encode Automerge docs for Camino CRDT writes
This commit is contained in:
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user