3.0 KiB
Тесты WorkoutRepository (слой Src)
Репозиторий
Server.WatchBody.Core.Dal.Src.Repository: IWorkoutRepository / WorkoutRepository (правила — c-dal; unit-тесты без БД — c-tst, d-tst).
Методы → функции БД
| Метод | Транспорт | Функция БД |
|---|---|---|
Insert(Workout) → Guid |
scalar Guid | src.workout_insert(p_athlete_id, p_id, p_program_version_id, p_started_at, p_session_kind) |
Update(Workout) → int |
scalar int | src.workout_update (все поля, db-m-8) |
Select(WorkoutFilter?) → IEnumerable |
reader | src.workout_select (карточка + sets jsonb) |
Get(int athleteId, Guid workoutId) → Workout? |
reader | src.workout_get (строка + sets + commands jsonb) |
WorkoutFilter: Status (string?), DateFrom (DateOnly?), DateTo (DateOnly?).
Примечание: program_version_id передаётся только в Insert; Update
программную версию не меняет (функция её не пишет).
Механика теста (общая)
ConnectionStringTest (d-tst-11); один DataTable = один конвертер
(d-tst-13). Select/Get читают денормализованные sets/commands (jsonb)
— конвертер разбирает их в коллекции Workout.Sets / Workout.Commands.
Заготовки (DataTable)
Таблица workout_select: id:Guid, athlete_id:int, program_version_id:Guid?,
started_at:DateTime, ended_at:DateTime?, status:string, session_kind:string,
avg_hr:int?, facts_json:string?, fit_file_id:string?, hr_recovery_s:int?,
sets:string (jsonb), commands:string (jsonb — только в get).
Строки: w1 — normal, active, sets='[{"seq":1},{"seq":2}]',
commands='[{"t_offset_s":65}]'; w2 — тот же профиль, sets='[]', commands='[]'.
Тесты: Insert
| № | Тип | Условие | Ожидаемый результат |
|---|---|---|---|
| 1 | основной | w1 без версии (program_version_id = null); scalar = Guid w1 | 5 параметров; NULL → DBNull |
Тесты: Update
| № | Тип | Условие | Ожидаемый результат |
|---|---|---|---|
| 1 | основной | w1 c фактами FitParser; scalar = 1 | параметры p_athlete_id, p_id, p_ended_at, p_status, p_session_kind, p_avg_hr, p_facts_json, p_fit_file_id, p_hr_recovery_s |
Тесты: Select
| № | Тип | Условие | Ожидаемый результат |
|---|---|---|---|
| 1 | основной | таблица [w1] | сущность; Sets = 2 элемента по порядку jsonb |
| 2 | граничный | пустая таблица; фильтры NULL | пустая коллекция |
Тесты: Get
| № | Тип | Условие | Ожидаемый результат |
|---|---|---|---|
| 1 | основной | таблица [w1] | сущность; Sets = 2, Commands = 1 |
| 2 | граничный | пустая таблица | null |