2.1 KiB
2.1 KiB
Тесты BreakRepository (слой Src)
Репозиторий
Server.WatchBody.Core.Dal.Src.Repository: IBreakRepository / BreakRepository (правила — c-dal; unit-тесты без БД — c-tst, d-tst).
Методы → функции БД
| Метод | Транспорт | Функция БД |
|---|---|---|
Insert(Break) → Guid |
scalar Guid | src.break_insert(p_athlete_id, p_id, p_kind, p_source, p_started_on, p_planned_return, p_note) |
Update(Break) → int |
scalar int | src.break_update (все поля, db-m-8; kind NULL валиден) |
Select(BreakFilter?) → IEnumerable |
reader | src.break_select(p_athlete_id, p_kind, p_date_from, p_date_to) |
BreakFilter: Kind (string?), DateFrom (DateOnly?), DateTo (DateOnly?).
Delete нет — журнал перерывов (🛡); закрытие = Update (EndedOn).
Механика теста (общая)
ConnectionStringTest (d-tst-11); 1 тест = 1 вызов (d-tst-13);
Kind = null передаётся AddParameterNullable.
Заготовки (DataTable)
Таблица breaks_*: id:Guid, athlete_id:int, kind:string?, source:string,
started_on:DateOnly, planned_return:DateOnly?, ended_on:DateOnly?, note:string.
Строки: b1 — manual, vacation, открыт (ended_on NULL);
b2 — auto, kind NULL (ответа нет).
Тесты: Insert
| № | Тип | Условие | Ожидаемый результат |
|---|---|---|---|
| 1 | основной | b2 (kind null); scalar = Guid b2 | 7 параметров; kind → DBNull |
Тесты: Update
| № | Тип | Условие | Ожидаемый результат |
|---|---|---|---|
| 1 | основной | b1 с ответом; scalar = 1 | 6 параметров (все поля, db-m-8) |
Тесты: Select
| № | Тип | Условие | Ожидаемый результат |
|---|---|---|---|
| 1 | основной | таблица [b1, b2]; фильтры NULL | 2 сущности; b2.Kind = null |
| 2 | граничный | пустая таблица | пустая коллекция (не null) |