feat: restore/persist app state in server runtime with queued writes
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
const test = require("node:test");
|
||||
const assert = require("node:assert/strict");
|
||||
const { mapToAppRequest, normalizeHeaders } = require("../src/server");
|
||||
const { mapToAppRequest, normalizeHeaders, createMutationPersister } = require("../src/server");
|
||||
|
||||
test("normalizeHeaders lowercases and joins array values", () => {
|
||||
const headers = normalizeHeaders({
|
||||
@@ -31,3 +31,21 @@ test("mapToAppRequest extracts method/path/headers/body correctly", () => {
|
||||
assert.equal(request.headers["x-signature"], "sha256=abc");
|
||||
assert.equal(request.rawBody, "{\"ok\":true}");
|
||||
});
|
||||
|
||||
test("createMutationPersister writes sequentially and flush waits", async () => {
|
||||
const saved = [];
|
||||
const stateStore = {
|
||||
async save(state) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 5));
|
||||
saved.push(state.id);
|
||||
},
|
||||
};
|
||||
|
||||
const persister = createMutationPersister({ stateStore, logger: { error() {} } });
|
||||
|
||||
persister.enqueue({ id: "s1" });
|
||||
persister.enqueue({ id: "s2" });
|
||||
await persister.flush();
|
||||
|
||||
assert.deepEqual(saved, ["s1", "s2"]);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user