Telegram (ask questions / claim the issue here first): https://t.me/+DOylgFv1jyJlNzM0
Why this matters
tests/soroban-event-worker.test.ts Event processing idempotency only covers stream_created, fee_collected, and replayed stream_paused/stream_resumed - all of which use upsert or set-absolute fields. There is no test that re-processes a tokens_withdrawn event and asserts handleTokensWithdrawn does not double-increment Stream.withdrawnAmount, nor a test confirming handleStreamToppedUp's depositedAmount stays correct under replay.
Acceptance criteria
Files to touch
backend/tests/soroban-event-worker.test.ts
backend/src/workers/soroban-event-worker.ts
Out of scope
- Integration tests against a live RPC
Why this matters
tests/soroban-event-worker.test.ts Event processing idempotency only covers stream_created, fee_collected, and replayed stream_paused/stream_resumed - all of which use upsert or set-absolute fields. There is no test that re-processes a tokens_withdrawn event and asserts handleTokensWithdrawn does not double-increment Stream.withdrawnAmount, nor a test confirming handleStreamToppedUp's depositedAmount stays correct under replay.
Acceptance criteria
Files to touch
backend/tests/soroban-event-worker.test.tsbackend/src/workers/soroban-event-worker.tsOut of scope