From 1f46055938c4f1da78ec8b0ee05adb40e62082ae Mon Sep 17 00:00:00 2001 From: Golo Roden Date: Wed, 7 Oct 2026 16:12:37 +0200 Subject: [PATCH] chore: Test that writing an event keeps its trace context. The client already sends the trace context of an event as traceparent and tracestate, the names the server expects. No test wrote an event with a trace context, though, so sending other names, as the Go client did, would have gone unnoticed. The new test writes an event with a trace context, and checks it on the written event and on the event read back. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Hc2MPSLu7HDHTm8HiBsrDz --- src/writeEvents.test.ts | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/writeEvents.test.ts b/src/writeEvents.test.ts index 748291e..98f2f73 100644 --- a/src/writeEvents.test.ts +++ b/src/writeEvents.test.ts @@ -1,6 +1,7 @@ import assert from 'node:assert/strict'; import { afterEach, beforeEach, suite, test } from 'node:test'; import { Container } from './Container.js'; +import type { Event } from './Event.js'; import type { EventCandidate } from './EventCandidate.js'; import { getImageVersionFromDockerfile } from './getImageVersionFromDockerfile.js'; import { isEventQlQueryTrue } from './isEventQlQueryTrue.js'; @@ -76,6 +77,45 @@ suite('writeEvents', { timeout: 30_000 }, () => { assert.equal(secondWrittenEvent.data.value, 42); }); + test('writes the trace context of an event.', async (): Promise => { + const client = container.getClient(); + + const traceparent = '00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01'; + const tracestate = 'rojo=00f067aa0ba902b7'; + + const event: EventCandidate = { + source: 'https://www.eventsourcingdb.io', + subject: '/test', + type: 'io.eventsourcingdb.test', + data: { + value: 42, + }, + traceparent, + tracestate, + }; + + const writtenEvents = await client.writeEvents([event]); + + assert.equal(writtenEvents.length, 1); + const [writtenEvent] = writtenEvents; + assert.ok(writtenEvent); + assert.equal(writtenEvent.traceparent, traceparent); + assert.equal(writtenEvent.tracestate, tracestate); + + const eventsRead: Event[] = []; + for await (const eventRead of client.readEvents('/test', { + recursive: false, + })) { + eventsRead.push(eventRead); + } + + assert.equal(eventsRead.length, 1); + const [eventRead] = eventsRead; + assert.ok(eventRead); + assert.equal(eventRead.traceparent, traceparent); + assert.equal(eventRead.tracestate, tracestate); + }); + test('supports the isSubjectPristine precondition.', async (): Promise => { const client = container.getClient();