# Тесты `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) |