feat: add vitest, vite, move to tdd

This commit is contained in:
2026-07-13 07:07:44 +05:00
parent 4704a1d5a0
commit 62862beb06
18 changed files with 2043 additions and 346 deletions
+60
View File
@@ -0,0 +1,60 @@
# Vitest + Clean Architecture Refactoring
## Цель
Установить Vitest, переделать архитектуру ближе к чистой (порты/адаптеры),
написать нехрупкие тесты на реальные юзкейсы.
## Изменения
### Новые файлы
```txt
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