page-tree: collectAllIds/collectBranchIds (Expand/Collapse all) без тестов #73

Closed
opened 2026-06-21 02:33:09 +03:00 by Ghost · 0 comments

Найдено в multi-aspect code review всех изменений с коммита 053a9c0d (ветка develop).

Грань: test-coverage · Severity: warning
Где: apps/client/src/features/page/tree/utils/utils.ts:228-256

Проблема
Две новые чистые функции реализуют Collapse all (collectAllIds) и Expand all (collectBranchIds). У каждой реальное ветвление: collectBranchIds добавляет/рекурсит только при truthy n.children?.length (листья исключены), collectAllIds добавляет все узлы и рекурсит только в непустые children. utils.test.ts проверяет только buildTree; ни одна ветка не покрыта. Граница «лист исключается / ветка включается» и «пустой vs отсутствующий children» — классическое место off-by-one. В проекте уже принято юнит-тестировать такие хелперы (tree-model.test.ts, utils.test.ts).

Предлагаемый фикс
Добавить тесты в utils.test.ts: многоуровневое дерево; collectAllIds возвращает все id (roots+branches+leaves), collectBranchIds — только id узлов с непустыми children; включить лист с children:[] и лист без ключа children, чтобы зафиксировать границу.

Найдено в multi-aspect code review всех изменений с коммита `053a9c0d` (ветка develop). **Грань:** test-coverage · **Severity:** warning **Где:** `apps/client/src/features/page/tree/utils/utils.ts:228-256` **Проблема** Две новые чистые функции реализуют Collapse all (collectAllIds) и Expand all (collectBranchIds). У каждой реальное ветвление: collectBranchIds добавляет/рекурсит только при truthy n.children?.length (листья исключены), collectAllIds добавляет все узлы и рекурсит только в непустые children. utils.test.ts проверяет только buildTree; ни одна ветка не покрыта. Граница «лист исключается / ветка включается» и «пустой vs отсутствующий children» — классическое место off-by-one. В проекте уже принято юнит-тестировать такие хелперы (tree-model.test.ts, utils.test.ts). **Предлагаемый фикс** Добавить тесты в utils.test.ts: многоуровневое дерево; collectAllIds возвращает все id (roots+branches+leaves), collectBranchIds — только id узлов с непустыми children; включить лист с children:[] и лист без ключа children, чтобы зафиксировать границу.
Ghost closed this issue 2026-06-21 03:02:08 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#73