Files
ClaudeDo/tests/ClaudeDo.Worker.Tests/CLAUDE.md

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 IDisposable and create fixtures in constructor
  • Helper factory methods for entities: MakeTask(), CreateListAsync(), SeedListWithAgentTag()
  • Concurrency tests use TaskCompletionSource as gates for deterministic ordering
  • Git-dependent tests are conditionally skipped via Skip = ... when git is not available

Running

dotnet test tests/ClaudeDo.Worker.Tests