36 tests covering build_families (linear chains, branching, disjoint, Shedinja case), resolve_base_form, to_roman (parametrized), and strip_roman_suffix including round-trip verification. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
28 lines
1.2 KiB
Markdown
28 lines
1.2 KiB
Markdown
---
|
||
# nuzlocke-tracker-iam7
|
||
title: Unit tests for services layer
|
||
status: completed
|
||
type: task
|
||
priority: normal
|
||
created_at: 2026-02-10T09:33:08Z
|
||
updated_at: 2026-02-21T12:01:23Z
|
||
parent: nuzlocke-tracker-yzpb
|
||
---
|
||
|
||
Write unit tests for the business logic in `backend/src/app/services/`. Currently this is the `families.py` service which handles Pokemon evolution family resolution.
|
||
|
||
## Checklist
|
||
|
||
- [x] Test family resolution with simple linear evolution chains (e.g. A → B → C)
|
||
- [x] Test family resolution with branching evolutions (e.g. Eevee / Shedinja)
|
||
- [x] Test disjoint chains remain separate families
|
||
- [x] Test edge cases: empty list, single-stage Pokemon, base form, middle form
|
||
- [x] Test resolve_base_form: linear, branching, Shedinja, not-in-any-evolution
|
||
- [x] Test to_roman: parametrized 1–100, genlocke sequence I–V
|
||
- [x] Test strip_roman_suffix: II/III/IV/X, no suffix, round-trip with to_roman
|
||
|
||
## Notes
|
||
|
||
- `services/families.py` contains the core logic for resolving Pokemon evolution families
|
||
- These tests may need mock database sessions or in-memory data depending on how the service queries data
|
||
- If the service methods take a DB session, mock it; if they operate on data objects, pass test data directly |