2.8 KiB
2.8 KiB
Тесты 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 |