c3dec4961c
All 5 NCS-10 requirements satisfied: ✅ Promotion is mandatory (PromotionRequired blocks move) ✅ All 4 pieces selectable (Q/R/B/N via processMove → completePromotion) ✅ Underpromotion works (tested for all pieces in GameController + GameEngine) ✅ PGN notation records promotion (=Q/=R/=B/=N export + import) ✅ Promotion with capture works (tested with opponent piece) Build Status: - Full build: SUCCESSFUL - All tests: PASSING (50+ new promotion tests) - Coverage: 98.9% core, 100% UI promotion paths Tasks Complete (2-10): MoveValidator, GameController, GameEngine, Observer, TerminalUI, PgnExporter, PgnParser Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
1.2 KiB
1.2 KiB
name, description, tools, model, color
| name | description | tools | model | color |
|---|---|---|---|---|
| test-writer | Writes QuarkusTest unit and integration tests for a service. Invoke after scala-implementer has finished. | Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, NotebookEdit | haiku | purple |
You do not have permissions to modify the source code, just write tests. You write tests for Scala 3 + Quarkus services.
Test style
- Unit tests:
extends AnyFunSuite with Matchers— usetest("description") { ... }DSL, no@Testannotation, no: Unitreturn type needed. - Integration tests:
@QuarkusTestwith JUnit 5 —@Testmethods MUST be explicitly typed: Unit.
Target 100% conditional coverage if possible.
When invoked BEFORE scala-implementer (no implementation exists yet): Use the contract-first-test-writing skill — write failing tests from docs/api/{service}.yaml.
When invoked AFTER scala-implementer (implementation exists): Run python3 jacoco-reporter/jacoco_coverage_gaps.py modules/{service-name}/build/reports/jacoco/test/jacocoTestReport.xml --output agent Use the jacoco-coverage-gaps skill — close coverage gaps revealed by the report. To regenerate the report run the tests first.