2.3 KiB
2.3 KiB
Vitest + Clean Architecture Refactoring
Цель
Установить Vitest, переделать архитектуру ближе к чистой (порты/адаптеры), написать нехрупкие тесты на реальные юзкейсы.
Изменения
Новые файлы
src/
├── ports.ts # Интерфейсы: IFileSystem, ITaskRepository, IConfigProvider
├── storage/
│ ├── FsTaskRepository.ts # ITaskRepository → зависит только от IFileSystem, markdown, uuid
│ ├── FsTaskRepository.test.ts # unit (sociable) — colocation с модулем
│ ├── VscodeConfigProvider.ts # IConfigProvider → зависит от vscode
│ └── NodeFileSystem.ts # IFileSystem → обёртка над fs.promises
├── utils/
│ └── markdown.test.ts # unit — colocation
tests/
└── helpers/
└── InMemoryFileSystem.ts # shared fakes; integration/e2e — сюда же позже
Удалить
src/storage/taskStore.tssrc/storage/configStore.ts
Изменить
src/views/taskTreeProvider.ts— конструктор принимаетITaskRepository+IConfigProvidersrc/extension.ts— сборка зависимостей (DI)
Инфраструктура
npm i -D vitestvitest.config.tspackage.json— скриптыtest,test:run
Тесты
| Тест | Где | I/O | Что проверяет |
|---|---|---|---|
| FsTaskRepository | src/storage/*.test.ts |
InMemoryFileSystem (Map) | CRUD, фильтрация по extension, контент файла |
| markdown | src/utils/*.test.ts |
— | parse, serialize, round-trip, default-ы |
Unit/sociable unit — рядом с модулем (src/**/*.test.ts).
Shared fakes и будущие integration/e2e — в tests/.
Что НЕ тестируем (пока)
- NodeFileSystem — тривиальная обёртка
- VscodeConfigProvider — требует Extension Host
- TaskTreeProvider — UI, требует Extension Host