Files
xboct-flow/docs/AUDIT-PLAN.md
T

4.6 KiB

Аудит и план доработок

1. Невыполненный пункт todo.md

Выполнено

Добавлен vscode.workspace.onDidChangeConfiguration в extension.ts — при изменении xboctukFlow.* настроек пересоздаются file watchers и вызывается tree.refresh().


2. Рефакторинг: слияние frontmatterBlock.ts → frontmatterFields.ts

Выполнено

  • frontmatterBlock.ts удалён, логика перенесена в frontmatterFields.ts
  • Обновлены импорты в validateFrontmatter.ts и parseTaskTags.ts
  • Написаны 7 unit-тестов на extractFrontmatterBlock

3. Тесты на edge cases

Выполнено — добавлено 14 тестов + интеграционный тест.

Модуль Что добавили
dashboard/sortTasks пустой массив, одинаковые created, invalid даты
kanban/buildKanbanBoard одинаковые updated (стабильность)
storage/FsTaskRepository кириллица, title 80 символов, спецсимволы в тегах, slug для Fix___bug
dashboard/applyRawTaskContent разный порядок полей, пустое body
dashboard/buildDashboardView пустой массив
dashboard/groupTasks неизвестный статус/приоритет
dashboard/filterTasks пустой массив
FsTaskRepository интеграционный: create → file → parse → сверка

4. rename: TODO → OPEN + UNKNOWN

Выполнено

  • TaskStatus.TODOTaskStatus.OPEN (wire: "open")
  • Добавлены TaskStatus.UNKNOWN и TaskPriority.UNKNOWN
  • Невалидные статусы/приоритеты при парсинге → UNKNOWN (решает проблему невидимых задач в groupTasks)
  • normalizeTaskStatus / normalizeTaskPriority в utils/markdown.ts
  • defaultHidden: true для UNKNOWN (как backlog/cancelled)

5. Хрупкие тесты

Выполнено

Snapshot-тесты

  • Оставлены toMatchSnapshot() как есть (сознательное решение — обновляются через --update).

_unsafeUnwrap() → безопасный паттерн

  • addProjectTag.test.ts — 3 места
  • parseProjectConfig.test.ts — 2 места
  • serializeProjectConfig.test.ts — 2 места

Все заменены на isOk()/isErr() + ранний return.


6. Untested-модули

Выполнено

config.test.ts — 4 теста:

  • getConfigSection возвращает непустую строку
  • getSettingDefault для обоих ключей
  • ошибка при missing key

taskFile.test.ts — 6 тестов:

  • extension и language id — непустые строки
  • MAX_TASK_TITLE_LENGTH — положительное число
  • isTaskFileName — корректно проверяет расширение

7. Сырые строки → константы в тестах

Выполнено

Во всех тестовых файлах "open"/"done"/"in-progress"/"unknown" и приоритеты заменены на TaskStatus.* / TaskPriority.*. Serialization-ассерты (toContain("status: open")) и YAML-фикстуры оставлены как есть.


Текущий статус

  • РефакторингfrontmatterBlock.tsfrontmatterFields.ts + тесты
  • Edge case тесты — 14 тестов + интеграционный
  • rename TODO → OPEN + UNKNOWN
  • Хрупкие тесты — snapshot оставлены, _unsafeUnwrap заменён
  • config.ts + taskFile.ts — unit-тесты
  • todo.md — refresh боковой панели
  • Сырые строки → константы в тестах