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

2.7 KiB
Raw Blame History

Тесты WorkoutSetRepository и CommandLogRepository (слой Src)

Репозитории Server.WatchBody.Core.Dal.Src.Repository: IWorkoutSetRepository / WorkoutSetRepository, ICommandLogRepository / CommandLogRepository (правила — c-dal; unit-тесты без БД — c-tst, d-tst).

Методы → функции БД

Репозиторий Метод Функция БД
WorkoutSet Insert(WorkoutSet) → Guid src.workout_set_insert (12 параметров)
WorkoutSet Get(int athleteId, Guid setId) → WorkoutSet? src.workout_set_get
CommandLog Insert(CommandLog) → Guid src.command_log_insert (7 параметров)
CommandLog Select(int athleteId, Guid workoutId) → IEnumerable src.command_log_select

Update/Delete не существуют: подход правится новой записью source=edit, журнал команд не редактируется (🛡) — c-dal-2 (набор по функциям БД).

Механика теста (общая)

ConnectionStringTest (d-tst-11); 1 тест = 1 вызов (d-tst-13).

Заготовки (DataTable)

Таблица workout_set_*: id:Guid, workout_id:Guid, athlete_id:int, exercise_id:Guid?, seq:int, weight_kg:decimal, reps:int, done_at:DateTime, source:string, in_plan:bool, rpe:int?, knee_pain:int?. Строки: s1 — seq 1, 50.0×15, voice, rpe NULL.

Таблица command_log_*: id:Guid, workout_id:Guid, t_offset_s:int, recognized_text:string, semantics:string (jsonb), accepted:bool. Строки: c1 — 65 с, 'TEST-вес пятьдесят', accepted.

Тесты: Insert (WorkoutSet)

№ Тип Условие Ожидаемый результат
1 основной s1 (rpe/knee_pain/exercise_id null); scalar = Guid s1 12 параметров; NULL → DBNull

Тесты: Get (WorkoutSet)

№ Тип Условие Ожидаемый результат
1 основной таблица [s1] сущность; Rpe = null
2 граничный пустая таблица null

Тесты: Insert (CommandLog)

№ Тип Условие Ожидаемый результат
1 основной c1; scalar = Guid c1 7 параметров; Semantics как jsonb-строка

Тесты: Select (CommandLog)

№ Тип Условие Ожидаемый результат
1 основной таблица [c1] 1 сущность; поля строго по конвертеру
2 граничный пустая таблица пустая коллекция (не null)