26 lines
934 B
TypeScript
26 lines
934 B
TypeScript
import { assert, describe, it } from "@effect/vitest"
|
|
import { Effect } from "effect"
|
|
import * as EventJournal from "effect/unstable/eventlog/EventJournal"
|
|
|
|
describe("EventJournal", () => {
|
|
it.effect("records entries in memory and publishes local changes", () =>
|
|
Effect.gen(function*() {
|
|
const journal = yield* EventJournal.EventJournal
|
|
let created = 0
|
|
yield* journal.write({
|
|
event: "test",
|
|
primaryKey: "pk-1",
|
|
payload: new Uint8Array([1, 2, 3]),
|
|
effect: (entry) =>
|
|
Effect.sync(() => {
|
|
created = entry.createdAtMillis
|
|
})
|
|
})
|
|
const entries = yield* journal.entries
|
|
assert.strictEqual(entries.length, 1)
|
|
assert.strictEqual(entries[0].event, "test")
|
|
assert.strictEqual(entries[0].primaryKey, "pk-1")
|
|
assert.strictEqual(entries[0].createdAtMillis, created)
|
|
}).pipe(Effect.provide(EventJournal.layerMemory)))
|
|
})
|