Skip to content

test(api): unit-test createTaskEvent via injectable db factory (#430 follow-up) - #432

Merged
limaronaldo merged 1 commit into
mainfrom
rm/db-di-createtaskevent-test
Aug 11, 2026
Merged

test(api): unit-test createTaskEvent via injectable db factory (#430 follow-up)#432
limaronaldo merged 1 commit into
mainfrom
rm/db-di-createtaskevent-test

Conversation

@limaronaldo

Copy link
Copy Markdown
Owner

No description provided.

Follow-up to PR #430 (SSE rework). packages/api/src/core/db.ts —
now packages/api/src/integrations/db.ts — built the neon() client
inside getDb() with no seam to substitute it, so createTaskEvent
could not be unit-tested in isolation.

Refactor (surgical, public API unchanged):
- Extract client construction into createDb(connString?) factory.
- getDb() delegates to createDb(), same lazy import-safe behavior.
- Add setDb()/resetDb() test-only DI seam over the cached singleton.

Tests for createTaskEvent (mock SqlClient via DI, no network):
- (a) enrichment SELECT fails -> event still emitted without
  enrichment (HIGH-1 from #430: SELECT failure must never suppress
  the emit).
- (b) happy path -> event emitted enriched with taskStatus.
- (c) INSERT fails -> rejection propagates and no event is emitted
  (documents current behavior: the INSERT ... RETURNING has no
  try/catch, so it throws before the broadcast block).
- no SSE listeners -> enrichment SELECT is skipped (RML-716 gating).
@limaronaldo
limaronaldo merged commit 6dc57f5 into main Aug 11, 2026
4 checks passed
@limaronaldo
limaronaldo deleted the rm/db-di-createtaskevent-test branch August 11, 2026 03:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant