feat(session): add durable session archival
This commit is contained in:
parent
010133f6df
commit
2b767d8cb1
14 changed files with 258 additions and 119 deletions
|
|
@ -660,4 +660,32 @@ describe("Session.create", () => {
|
|||
).toBe("Session.NotFoundError")
|
||||
}),
|
||||
)
|
||||
|
||||
it.effect("archives a Session through one durable event", () =>
|
||||
Effect.gen(function* () {
|
||||
const session = yield* Session.Service
|
||||
const created = yield* session.create({ location })
|
||||
|
||||
yield* session.archive(created.id)
|
||||
yield* session.archive(created.id)
|
||||
|
||||
expect((yield* session.get(created.id)).time.archived).toBeDefined()
|
||||
const events = Array.from(yield* logEvents(session, created.id).pipe(Stream.runCollect))
|
||||
expect(events.map((event) => event.type)).toContain("session.archived")
|
||||
expect(events.filter((event) => event.type === "session.archived")).toHaveLength(1)
|
||||
}),
|
||||
)
|
||||
|
||||
it.effect("rejects archiving a missing Session", () =>
|
||||
Effect.gen(function* () {
|
||||
const session = yield* Session.Service
|
||||
|
||||
expect(
|
||||
yield* session.archive(Session.ID.make("ses_missing_archive")).pipe(
|
||||
Effect.flip,
|
||||
Effect.map((error) => error._tag),
|
||||
),
|
||||
).toBe("Session.NotFoundError")
|
||||
}),
|
||||
)
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue