39 lines
1.9 KiB
Markdown
39 lines
1.9 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 (`Infrastructure/FakeClaudeProcess`, `CapturingHubContext/CapturingHubClients/CapturingClientProxy` for SignalR; file-local fakes for scoped tests)
|
|
- 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
|
|
|
|
Test folders mirror the Worker source folders (`Repositories`, `Runner`, `Queue`, `State`,
|
|
`Planning`, `Prime`, `Report`, `External`, `Lifecycle`, `Hub`, `UiSchema`, `UiVm`) — `ls` the
|
|
folder rather than trusting an inventory here. `UiSchema`/`UiVm` cover UI-facing DTO schemas and
|
|
viewmodel behaviour driven from Worker fakes.
|
|
|
|
## Conventions
|
|
|
|
- Test classes implement `IDisposable` and create fixtures in constructor
|
|
- Helper factory methods for entities: `MakeTask()`, `CreateListAsync()`, `SeedListAsync()`
|
|
- Concurrency tests use `TaskCompletionSource` as gates for deterministic ordering
|
|
- Git-dependent tests bail out with an early `if (!GitRepoFixture.IsGitAvailable()) return;` at the top
|
|
of the method body — a plain `[Fact]`, **not** xUnit's `Skip = ...` and not `SkippableFact`
|
|
(that package is not referenced). Such tests report as passed, not skipped, when git is missing.
|
|
|
|
## Running
|
|
|
|
```bash
|
|
dotnet test tests/ClaudeDo.Worker.Tests
|
|
```
|