1.9 KiB
1.9 KiB
Тесты WorkoutMetricsRepository (слой Src)
Репозиторий
Server.WatchBody.Core.Dal.Src.Repository: IWorkoutMetricsRepository / WorkoutMetricsRepository (правила — c-dal; unit-тесты без БД — c-tst, d-tst).
Методы → функции БД
| Метод | Транспорт | Функция БД |
|---|---|---|
Upsert(WorkoutMetrics) → int |
scalar int | src.workout_metrics_upsert(p_athlete_id, p_workout_id, p_adherence, p_tonnage, p_tonnage_by_group, p_e1pm_by_exercise, p_hr_metrics, p_red_flags) |
Select(WorkoutMetricsFilter?) → IEnumerable |
reader | src.workout_metrics_select (строка + started_at) |
WorkoutMetricsFilter: WorkoutId (Guid?), DateFrom (DateOnly?), DateTo (DateOnly?).
Примечание: computed_at не передаётся — ставит функция.
Механика теста (общая)
ConnectionStringTest (d-tst-11); jsonb-поля передаются строками;
конвертер читает их как string (разбор JSON — вне DAL, JsonHelper
на уровне BLL).
Заготовки (DataTable)
Таблица workout_metrics_*: id:int, workout_id:Guid, athlete_id:int,
adherence:decimal, tonnage:decimal, tonnage_by_group:string,
e1pm_by_exercise:string, hr_metrics:string, red_flags:string,
computed_at:DateTime, started_at:DateTime.
Строки: mt1 — adherence 92.5, tonnage 4200.0.
Тесты: Upsert
| № | Тип | Условие | Ожидаемый результат |
|---|---|---|---|
| 1 | основной | mt1; scalar = 9 | 8 параметров; возврат 9 |
Тесты: Select
| № | Тип | Условие | Ожидаемый результат |
|---|---|---|---|
| 1 | основной | таблица [mt1] | 1 сущность; StartedAt заполнен |
| 2 | граничный | пустая таблица | пустая коллекция (не null) |