1.8 KiB
1.8 KiB
ClaudeDo.Worker.Tests
xUnit integration tests for the Worker and Data layers.
Framework
- xUnit 2.5.3 with
xunit.runner.visualstudio - No mocking library — custom sealed fakes (FakeClaudeProcess, FakeHubContext, FakeHubClients, FakeClientProxy)
- Real SQLite databases per test via
DbFixture - Real git repos for worktree tests via
GitRepoFixture - coverlet for coverage collection
Test Infrastructure
- DbFixture — creates unique temp SQLite DB, applies schema, cleans up DB + WAL/SHM files on dispose
- GitRepoFixture — creates temp git repo with initial commit, configures user/email, handles Windows read-only .git cleanup. Tests skip if git is unavailable.
Test Areas
| Area | File | What it covers |
|---|---|---|
| Repositories | ListRepositoryTests |
CRUD, tag junctions |
TaskRepositoryTests |
CRUD, status transitions, agent tag filtering, effective tags, stale flip | |
| Runner | WorktreeManagerTests |
Worktree creation, commit detection, error on non-git dir |
CommitMessageBuilderTests |
Slug generation, title/description truncation | |
MessageParserTests |
NDJSON parsing, malformed input | |
| Services | QueueServiceTests |
FIFO ordering, override slot contention, cancellation, active tracking |
StaleTaskRecoveryTests |
Flips orphaned running tasks to failed |
Conventions
- Test classes implement
IDisposableand create fixtures in constructor - Helper factory methods for entities:
MakeTask(),CreateListAsync(),SeedListWithAgentTag() - Concurrency tests use
TaskCompletionSourceas gates for deterministic ordering - Git-dependent tests are conditionally skipped via
Skip = ...when git is not available
Running
dotnet test tests/ClaudeDo.Worker.Tests