Files
upstream-hocuspocus/tests/extension-redis/onChange.ts
upstream-mirror e0c588ca1c
Some checks failed
build / lint (22) (push) Failing after 17s
build / test (22) (push) Failing after 8s
build / lint (23) (push) Failing after 2s
build / build (22) (push) Has been skipped
build / build (23) (push) Has been skipped
build / test (23) (push) Failing after 4s
docsearch / docsearch (push) Failing after 1s
snapshot of https://github.com/ueberdosis/hocuspocus.git @ cf3cfa355b4d3bb61c6b6c80071f71783e32470e (2026-09-15)
2026-09-15 17:21:35 +05:00

61 lines
1.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { Redis } from "@hocuspocus/extension-redis";
import test from "ava";
import {
newHocuspocus,
newHocuspocusProvider,
redisConnectionSettings,
} from "../utils/index.ts";
test("syncs updates between servers and clients", async (t) => {
await new Promise(async (resolve) => {
let resolved = false;
const server = await newHocuspocus(t, {
extensions: [
new Redis({
...redisConnectionSettings,
identifier: `server${crypto.randomUUID()}`,
}),
],
});
const anotherServer = await newHocuspocus(t, {
extensions: [
new Redis({
...redisConnectionSettings,
identifier: `anotherServer${crypto.randomUUID()}`,
}),
],
});
// Once we’re setup make an edit on anotherProvider. To get to the provider it will need
// to pass through Redis:
// provider -> server -> Redis -> anotherServer -> anotherProvider
const provider = newHocuspocusProvider(t, server, {
onSynced() {
provider.document.getArray("foo").insert(0, ["bar"]);
},
});
// Once the initial data is synced, wait for an additional update to check
// if both documents have the same content.
const anotherProvider = newHocuspocusProvider(t, anotherServer, {
onSynced() {
provider.on("message", () => {
if (resolved) return;
resolved = true;
setTimeout(() => {
t.is(
provider.document.getArray("foo").get(0),
anotherProvider.document.getArray("foo").get(0),
);
resolve("done");
}, 200);
});
},
});
});
});