clawwork-ai / clawwork-ai/ClawWork

[Enhancement] Expand MessageStore test coverage for streaming lifecycle

Open
#232 1 comment 0 reactions 0 assignees View on GitHub
area/core area/dx enhancement
Dominant language
TypeScript
Stars
532
Forks
75
Avg merge
5h 31m
Merged PRs (30d)
1

Description

## 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

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.