ws: PageWsListener.onPageDeleted/onPageMoved/onPageRestored без тестов #74

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/server/src/ws/listeners/page-ws.listener.ts:52-80

Проблема
page-ws.listener.spec.ts покрывает только onPageCreated. У трёх остальных обработчиков своя dispatch/guard-логика без тестов: onPageDeleted имеет fallback for (const page of event.pages ?? []) (ветка пустого/undefined pages не должна падать/вещать); onPageRestored при отсутствующем event.spaceId логирует warn и делает ранний return вместо broadcastRefetchRoot (guard от утечки); onPageMoved маршрутизирует PAGE_MOVED в broadcastPageMoved. Сами WsTreeService.broadcast* протестированы изолированно, но ветвление листенера — нет.

Предлагаемый фикс
Расширить page-ws.listener.spec.ts: onPageDeleted с pages вызывает broadcastPageDeleted, с undefined/пустым — не вызывает и не падает; onPageMoved пробрасывает в broadcastPageMoved; onPageRestored со spaceId вызывает broadcastRefetchRoot, без spaceId — ранний return (опц. logger.warn).

Найдено в multi-aspect code review всех изменений с коммита `053a9c0d` (ветка develop). **Грань:** test-coverage · **Severity:** warning **Где:** `apps/server/src/ws/listeners/page-ws.listener.ts:52-80` **Проблема** page-ws.listener.spec.ts покрывает только onPageCreated. У трёх остальных обработчиков своя dispatch/guard-логика без тестов: onPageDeleted имеет fallback `for (const page of event.pages ?? [])` (ветка пустого/undefined pages не должна падать/вещать); onPageRestored при отсутствующем event.spaceId логирует warn и делает ранний return вместо broadcastRefetchRoot (guard от утечки); onPageMoved маршрутизирует PAGE_MOVED в broadcastPageMoved. Сами WsTreeService.broadcast* протестированы изолированно, но ветвление листенера — нет. **Предлагаемый фикс** Расширить page-ws.listener.spec.ts: onPageDeleted с pages вызывает broadcastPageDeleted, с undefined/пустым — не вызывает и не падает; onPageMoved пробрасывает в broadcastPageMoved; onPageRestored со spaceId вызывает broadcastRefetchRoot, без spaceId — ранний return (опц. logger.warn).
Ghost closed this issue 2026-06-21 03:02:09 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#74