test(share-ai): нет тестов на условную подпись ассистента (typing-indicator / message-item) #108

Closed
opened 2026-06-21 05:22:52 +03:00 by Ghost · 0 comments

Найдено в ходе код-ревью коммита 18105ff («feat(share-ai): label public chat with the assistant identity name»).

Проблема

Коммит вводит новую условную логику подписи — это и есть суть фичи, — но она не покрыта тестами.

Файлы:

  • apps/client/src/features/ai-chat/components/typing-indicator.tsx
    • const name = assistantName?.trim();
    • метка: {name || t("AI agent")}
    • строка набора: {name ? t("{{name}} is typing…", { name }) : t("AI agent is typing…")}
  • apps/client/src/features/ai-chat/components/message-item.tsx:70
    • метка: {assistantName?.trim() || t("AI agent")}

Непокрытые ветки (одинаковый предикат в обоих файлах):

  1. имя задано → показывается имя / интерполированная строка «{{name}} is typing…»;
  2. имя из пробелов " " → откат на «AI agent» (ради этого случая стоит .trim());
  3. имя undefined → откат на «AI agent».

Почему это важно

Это центральное новое поведение коммита, и оно без тестов. В этой же папке уже есть прецедент тестов области: apps/client/src/features/ai-chat/components/show-typing-indicator.test.ts покрывает родственный pure-хелпер showTypingIndicator (включая случай " "), а в репозитории есть render-тесты на @testing-library/react (*.test.tsx).

Логика проста и при ревью вручную проверена как корректная для всех значений, поэтому не блокер, но это единственный содержательный gap по покрытию.

Что сделать

Добавить typing-indicator.test.tsx (с моком useTranslation), проверяющий три случая: имя задано, пробелы, отсутствие. Той же проверкой закрыть метку в MessageItem.

Severity: warning (покрытие тестами), не блокирует merge.

Найдено в ходе код-ревью коммита `18105ff` («feat(share-ai): label public chat with the assistant identity name»). ## Проблема Коммит вводит новую условную логику подписи — это и есть суть фичи, — но она не покрыта тестами. Файлы: - `apps/client/src/features/ai-chat/components/typing-indicator.tsx` - `const name = assistantName?.trim();` - метка: `{name || t("AI agent")}` - строка набора: `{name ? t("{{name}} is typing…", { name }) : t("AI agent is typing…")}` - `apps/client/src/features/ai-chat/components/message-item.tsx:70` - метка: `{assistantName?.trim() || t("AI agent")}` Непокрытые ветки (одинаковый предикат в обоих файлах): 1. имя задано → показывается имя / интерполированная строка «{{name}} is typing…»; 2. имя из пробелов `" "` → откат на «AI agent» (ради этого случая стоит `.trim()`); 3. имя `undefined` → откат на «AI agent». ## Почему это важно Это центральное новое поведение коммита, и оно без тестов. В этой же папке уже есть прецедент тестов области: `apps/client/src/features/ai-chat/components/show-typing-indicator.test.ts` покрывает родственный pure-хелпер `showTypingIndicator` (включая случай `" "`), а в репозитории есть render-тесты на `@testing-library/react` (`*.test.tsx`). Логика проста и при ревью вручную проверена как корректная для всех значений, поэтому **не блокер**, но это единственный содержательный gap по покрытию. ## Что сделать Добавить `typing-indicator.test.tsx` (с моком `useTranslation`), проверяющий три случая: имя задано, пробелы, отсутствие. Той же проверкой закрыть метку в `MessageItem`. Severity: warning (покрытие тестами), не блокирует merge.
Ghost added the test label 2026-06-21 05:22:52 +03:00
Ghost closed this issue 2026-06-21 14:10:36 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#108