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

2.1 KiB
Raw Permalink Blame History

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