VEU.WathBody/1-docs/4-modules/m01-server-db/repository_tests/WorkoutMetricsRepository.md

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)