Files
xboct-flow/docs/REFACTOR-AND-TEST.md
T

2.2 KiB

Vitest + Clean Architecture Refactoring

Цель

Установить Vitest, переделать архитектуру ближе к чистой (порты/адаптеры), написать нехрупкие тесты на реальные юзкейсы.

Изменения

Новые файлы

src/
├── ports.ts                    # Интерфейсы: IFileSystem, ITaskRepository, IConfigProvider
├── storage/
│   ├── FsTaskRepository.ts     # ITaskRepository → зависит только от IFileSystem, markdown, uuid
│   ├── VscodeConfigProvider.ts # IConfigProvider → зависит от vscode
│   └── NodeFileSystem.ts       # IFileSystem → обёртка над fs.promises

tests/
├── utils/
│   ├── markdown.test.ts
│   └── uuid.test.ts
├── storage/
│   ├── FsTaskRepository.test.ts
│   └── helpers/
│       └── InMemoryFileSystem.ts

Удалить

  • src/storage/taskStore.ts
  • src/storage/configStore.ts

Изменить

  • src/views/taskTreeProvider.ts — конструктор принимает ITaskRepository + IConfigProvider
  • src/extension.ts — сборка зависимостей (DI)

Инфраструктура

  • npm i -D vitest
  • vitest.config.ts
  • package.json — скрипты test, test:run

Тесты

Тест I/O Что проверяет
FsTaskRepository InMemoryFileSystem (Map) CRUD, фильтрация по extension, контент файла
markdown parse, serialize, round-trip, default-ы
uuid валидный формат, уникальность
InMemoryFileSystem read/write/readdir/mkdir

Что НЕ тестируем (пока)

  • NodeFileSystem — тривиальная обёртка
  • VscodeConfigProvider — требует Extension Host
  • TaskTreeProvider — UI, требует Extension Host