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

3.8 KiB
Raw Blame History

Тесты ExerciseRepository и ExerciseReplacementRepository (слой Src)

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

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

Репозиторий Метод Функция БД
Exercise Insert(Exercise) → Guid src.exercise_insert
Exercise Update(Exercise) → int src.exercise_update
Exercise Delete(int athleteId, Guid exerciseId) → int src.exercise_delete
Exercise Select(ExerciseFilter?) → IEnumerable src.exercise_select
Exercise Get(int athleteId, Guid exerciseId) → Exercise? src.exercise_get
ExerciseReplacement Insert(int athleteId, Guid exerciseId, Guid replacementId) → int src.exercise_replacement_insert
ExerciseReplacement Delete(int athleteId, Guid exerciseId, Guid replacementId) → int src.exercise_replacement_delete

ExerciseFilter: Name (string?), GroupId (int?), IsBase (bool?), IsActive (bool?); NULL — не применяется.

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

ConnectionStringTest (d-tst-11); один DataTable = один конвертер; замены приходят денормализованно колонкой replacement_ids (jsonb) — конвертер разбирает её в ReplacementIds.

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

Таблица ответа exercise_*: id:Guid, athlete_id:int, name:string, group_id:int, is_base:bool, is_active:bool, replacement_ids:string (jsonb).

Строки-фикстуры: e1 — TEST-жим, группа 1, активное, replacement_ids='[]'; e2 — TEST-тяга, группа 2, активное, replacement_ids='["<uuid e2-замены>"]'.

Тесты: Insert (Exercise)

№ Тип Условие Ожидаемый результат
1 основной e1; scalar = Guid e1.Id Insert→Guid; параметры p_athlete_id, p_id, p_name, p_group_id, p_is_base

Тесты: Update (Exercise)

№ Тип Условие Ожидаемый результат
1 основной e1 с новым именем; scalar = 1 5 параметров (все поля, db-m-8); ReplacementIds не передаётся

Тесты: Delete (Exercise)

№ Тип Условие Ожидаемый результат
1 основной scalar = 1 Delete→1; параметры p_athlete_id, p_id

Тесты: Select (Exercise)

№ Тип Условие Ожидаемый результат
1 основной таблица [e1, e2]; фильтр IsActive=true 2 сущности; у e2 ReplacementIds = 1 Guid
2 граничный пустая таблица; фильтры NULL пустая коллекция; NULL-фильтры = DBNull

Тесты: Get (Exercise)

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

Тесты: Insert (ExerciseReplacement)

№ Тип Условие Ожидаемый результат
1 основной scalar = 1 3 параметра: p_athlete_id, p_exercise_id, p_replacement_id

Тесты: Delete (ExerciseReplacement)

№ Тип Условие Ожидаемый результат
1 основной scalar = 1 3 параметра; возврат 1