33 lines
1.4 KiB
Markdown
33 lines
1.4 KiB
Markdown
# Спецификация: чтение программы (GetActive, ListVersions, GetVersion)
|
||
|
||
## 1. `GetActive(int athleteId)` → `ProgramVersion?`
|
||
|
||
Активная версия с body; программы/активной версии нет → `null`.
|
||
Изоляция: только программы этого атлета.
|
||
|
||
| # | Тест | Ожидание |
|
||
|---|---|---|
|
||
| 1 | есть активная | версия со status = active, body ≠ пусто |
|
||
| 2 | программы нет | null |
|
||
| 3 | все версии archived | null |
|
||
|
||
## 2. `ListVersions(int athleteId)` → `IReadOnlyList<ProgramVersion>`
|
||
|
||
Версии программы атлета (без body — поле пустое), по возрастанию
|
||
номера. Программы нет → пустой список.
|
||
|
||
| # | Тест | Ожидание |
|
||
|---|---|---|
|
||
| 4 | три версии | 3 записи, номера 1–3 по возрастанию, статусы соответствуют, body пустые |
|
||
| 5 | чужой атлет | пустой список (изоляция) |
|
||
|
||
## 3. `GetVersion(int athleteId, Guid versionId)` → `ProgramVersion?`
|
||
|
||
Версия с body; чужая версия атлета / не существует → `null` (различие
|
||
не выдаётся).
|
||
|
||
| # | Тест | Ожидание |
|
||
|---|---|---|
|
||
| 6 | своя версия | версия с body |
|
||
| 7 | чужая версия | null |
|