ai-roles: guard от конкурентного soft-delete в update() не покрыт тестом #88
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Найдено в multi-aspect code review всех изменений с коммита
053a9c0d(ветка develop).Грань: test-coverage · Severity: warning
Где:
apps/server/src/core/ai-chat/roles/ai-agent-roles.service.ts:136-140Проблема
Сервис делает два findById: предварительную проверку (L102) и повторную выборку после UPDATE (L136); ветка
if (!updated) throw BadRequestException(L139) покрывает soft-delete между UPDATE и повторной выборкой. В spec заглушкаfindById: jest.fn().mockResolvedValue(opts.existing)возвращает одно и то же на каждый вызов, поэтому оба lookup отдают роль и ветка L139 не исполняется. Кросс-воркспейс тест проверяет только первый guard. Дополнительно: успешный возвратtoView(updated)(L140) не ассертится — проверяется только patch, переданный в repo.update.Предлагаемый фикс
Тест: findById возвращает строку на первом вызове и undefined на втором (
mockResolvedValueOnce(row).mockResolvedValueOnce(undefined)) → отклонение BadRequestException; плюс happy-path тест, проверяющий форму AgentRoleView при успешном update.