# Тесты `AthleteRepository` (слой Src) > Репозиторий `Server.WatchBody.Core.Dal.Src.Repository`: IAthleteRepository / AthleteRepository > (правила — c-dal; концепция unit-тестов без БД — c-tst, d-tst). ## Методы → функции БД | Метод | Транспорт | Функция БД | |---|---|---| | `Insert(Athlete)` | scalar int | `src.athlete_insert(p_name, p_api_key_hash)` | | `Update(Athlete)` | scalar int | `src.athlete_update(p_id, p_name, p_api_key_hash, p_is_blocked)` | | `Select(AthleteFilter?)` | reader | `src.athlete_select(p_api_key_hash, p_is_blocked)` | | `Get(int)` | reader | `src.athlete_get(p_id)` | `AthleteFilter`: `ApiKeyHash` (string?, NULL — не применяется), `IsBlocked` (bool?, NULL — не применяется). ## Механика теста (общая) `ConnectionStringTest` (фейк транспорта, d-tst-11); проверки — в момент вызова: CommandText = имя функции, IsStoredProcedure = true, строгий набор параметров в обе стороны; заготовка = один DataTable (один конвертер); 1 тест = 1 вызов (d-tst-13). ## Заготовки (DataTable) Таблица ответа `athlete_*`: id:int, name:string, api_key_hash:string, is_blocked:bool, created_at:DateTime. Строки-фикстуры: `a1` — TEST-Атлет / TEST-hash-1 / не заблокирован; `a2` — TEST-Атлет-2 / TEST-hash-2 / заблокирован. ## Тесты: `Insert` | № | Тип | Условие | Ожидаемый результат | |---|---|---|---| | 1 | основной | фикстура a1; scalar = 7 | Insert→7; параметры p_name, p_api_key_hash; p_is_blocked/p_created_at не передаются | ## Тесты: `Update` | № | Тип | Условие | Ожидаемый результат | |---|---|---|---| | 1 | основной | a1 с новым именем; scalar = 1 | Update→1; параметры p_id, p_name, p_api_key_hash, p_is_blocked (все поля, db-m-8) | ## Тесты: `Select` | № | Тип | Условие | Ожидаемый результат | |---|---|---|---| | 1 | основной | таблица [a1]; фильтр ApiKeyHash | 1 сущность; поля строго по конвертеру | | 2 | граничный | пустая таблица (колонки без строк); фильтры NULL | пустая коллекция (не null); параметры DBNull | ## Тесты: `Get` | № | Тип | Условие | Ожидаемый результат | |---|---|---|---| | 1 | основной | таблица [a1] | сущность с Id=a1.Id | | 2 | граничный | пустая таблица | null |