Skip to content

[Enhancement] Expand MessageStore test coverage for streaming lifecycle #232

@samzong

Description

@samzong

What problem are you trying to solve?

MessageStore has only 1 direct unit test (for upsertToolCall). The streaming message lifecycle — appendStreamDelta, finalizeStream, promoteActiveTurn — has no isolated tests. These functions are covered indirectly through session-sync.test.ts integration tests, but edge cases in the streaming lifecycle deserve dedicated coverage.

Where

  • Source: packages/core/src/stores/message-store.ts
  • Existing test: packages/desktop/test/message-store.test.ts (1 test case)

What needs to be done

  1. Open packages/desktop/test/message-store.test.ts
  2. Add test cases for:
    • appendStreamDelta: appending text to an active turn, creating a new active turn if none exists, handling empty deltas
    • finalizeStream: finalizing an active turn marks it as complete, calling finalize with no active turn is a no-op
    • promoteActiveTurn: promoting moves the turn into the message array with correct metadata, promoting when no active turn exists is safe
    • upsertToolCall fallback chain: test all 3 branches — active turn exists, fallback to last assistant message, fallback to creating a new active turn
  3. Run pnpm check to verify

Why does this matter?

Message streaming is the core user-facing data flow. The appendStreamDelta → finalizeStream → promoteActiveTurn lifecycle is subtle and has caused production regressions before (message duplication). Dedicated tests prevent re-introducing these bugs.

Primary area

Task execution

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/coreTask & Session Core WGarea/dxObservability & DX WGenhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions