feat: add vitest, vite, move to tdd
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user