- Ui CLAUDE.md rewritten around the islands architecture (old MainWindow/TaskList/StatusBar VMs no longer exist) - Worker: folder layout (Refine/, Lifecycle/Planning extras), full hub method/event surface, external MCP tool inventory - Data: complete GitService operation list incl. commit-range diffs - App: missing DI registrations; Tests: current test-area overview - root: project list (Localization, Installer, six test projects) and honest docs index; plan.md/improvement-plan.md marked historical - open.md: date bump + visual check for new diff viewer / attention band Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
44 lines
2.3 KiB
Markdown
44 lines
2.3 KiB
Markdown
# ClaudeDo.Worker.Tests
|
|
|
|
xUnit integration tests for the Worker and Data layers. One of six test projects under `tests/` (also: `ClaudeDo.Data.Tests`, `ClaudeDo.Ui.Tests`, `ClaudeDo.Localization.Tests`, `ClaudeDo.Installer.Tests`, `ClaudeDo.Releases.Tests`).
|
|
|
|
## 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
|
|
|
|
Tests are organized by Worker area (mirroring the source folders); 30+ test files in total. Highlights per area:
|
|
|
|
| Area | Covers |
|
|
|------|--------|
|
|
| Repositories | `ListRepositoryTests`/`TaskRepositoryTests` + config, delete-config, agent-settings, planning, orphan-guard, and roadblock variants |
|
|
| Runner | `WorktreeManagerTests`, `CommitMessageBuilderTests`, `StreamAnalyzerTests`, standalone-children routing |
|
|
| Queue / Services | `QueueServiceTests` (FIFO, override slot contention, cancellation, active tracking), `QueueServiceSlotGuardTests`, `StaleTaskRecoveryTests`, `TaskResetServiceTests`, `TaskMergeServiceTests`, `WorktreeMaintenanceServiceTests`, `AgentFileServiceTests`, `DefaultAgentSeederTests` |
|
|
| State | `TaskStateService` transition coverage |
|
|
| Planning | session manager, chain coordinator, merge orchestrator, end-to-end planning flow |
|
|
| Prime / Report / External / Lifecycle / Hub | daily prep, weekly report, external MCP tools, recovery services, hub methods |
|
|
| UiSchema / UiVm | UI-facing DTO schemas and viewmodel behavior driven from Worker fakes |
|
|
|
|
## 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
|
|
|
|
```bash
|
|
dotnet test tests/ClaudeDo.Worker.Tests
|
|
```
|