Живой тест папок (REST + DAV):TestIntegrationFileStores теперь гоняет по папкам Stat(folder), List(folder), Rename(folder), Move(folder в другую папку) и Delete(folder) через store.Delete. Дочерний файл проверяет, что содержимое папки переживает rename+move. Папки throwaway, чистятся в t.Cleanup.
Фасадный live-тест: новый TestIntegrationFacadeCRUD через c.Files() — create folder / upload / stat / list / rename / move / copy / delete, с проверкой Entry.Provider (write → rest) и Write()/Read() по readOrder.
SQL read-only на фасаде:TestFileClientWriteToReadOnlyStore — write-методы фасада поверх read-only pgStore дают ErrReadOnly.
Прод-фикс file_rest.go: REST-адаптер раньше умел только файлы (Stat через GetFile, MoveFiles, RenameFile, DeleteFiles). Фактический TDD-прогон показал падение TestIntegrationFileStores/rest на Stat(folder). Добавлена классификация id через stat/split; операции над папками идут через folderId/fileId: ListDavFolder для Stat, RenameDavFolder, MoveDavItems/CopyDavItems/DeleteDavItems.
copyEventually — ретрай асинхронного copy (как у существующих move/rename).
Тесты и вывод
go test ./... # all green
go test -tags=integration -run 'TestIntegrationFileStores|TestIntegrationFacadeCRUD' -v .
--- PASS: TestIntegrationFacadeCRUD (2.51s)
--- PASS: TestIntegrationFileStores (14.08s)
--- PASS: TestIntegrationFileStores/rest (7.88s)
--- PASS: TestIntegrationFileStores/dav (5.56s)
PASS
Прогон стабилен 3×, мусор убран.
Замечания
go test -tags=integration ./... остаётся красным на пред-существующем cmd/office/fetch/task_integration_test.go (loader.TaskFields undefined) — не входит в эту задачу.
Проверки
gitleaks: no leaks.
Тесты не ослаблены; прод-код починен, а не замокан.
## W5 — CRUD/rename/move папок + фасадный CRUD (#62)
Closes #62
Эпик: #53
### Что сделано
- **Живой тест папок (REST + DAV):** `TestIntegrationFileStores` теперь гоняет по папкам `Stat(folder)`, `List(folder)`, `Rename(folder)`, `Move(folder в другую папку)` и `Delete(folder)` через `store.Delete`. Дочерний файл проверяет, что содержимое папки переживает rename+move. Папки throwaway, чистятся в `t.Cleanup`.
- **Фасадный live-тест:** новый `TestIntegrationFacadeCRUD` через `c.Files()` — create folder / upload / stat / list / rename / move / copy / delete, с проверкой `Entry.Provider` (write → `rest`) и `Write()/Read()` по `readOrder`.
- **SQL read-only на фасаде:** `TestFileClientWriteToReadOnlyStore` — write-методы фасада поверх read-only `pgStore` дают `ErrReadOnly`.
- **Прод-фикс `file_rest.go`:** REST-адаптер раньше умел только файлы (`Stat` через `GetFile`, `MoveFiles`, `RenameFile`, `DeleteFiles`). Фактический TDD-прогон показал падение `TestIntegrationFileStores/rest` на `Stat(folder)`. Добавлена классификация id через `stat`/`split`; операции над папками идут через folderId/fileId: `ListDavFolder` для `Stat`, `RenameDavFolder`, `MoveDavItems`/`CopyDavItems`/`DeleteDavItems`.
- `copyEventually` — ретрай асинхронного copy (как у существующих move/rename).
### Тесты и вывод
```
go test ./... # all green
go test -tags=integration -run 'TestIntegrationFileStores|TestIntegrationFacadeCRUD' -v .
--- PASS: TestIntegrationFacadeCRUD (2.51s)
--- PASS: TestIntegrationFileStores (14.08s)
--- PASS: TestIntegrationFileStores/rest (7.88s)
--- PASS: TestIntegrationFileStores/dav (5.56s)
PASS
```
Прогон стабилен 3×, мусор убран.
### Замечания
- `go test -tags=integration ./...` остаётся красным на пред-существующем `cmd/office/fetch/task_integration_test.go` (`loader.TaskFields undefined`) — не входит в эту задачу.
### Проверки
- gitleaks: no leaks.
- Тесты не ослаблены; прод-код починен, а не замокан.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
W5 — CRUD/rename/move папок + фасадный CRUD (#62)
Closes #62
Эпик: #53
Что сделано
TestIntegrationFileStoresтеперь гоняет по папкамStat(folder),List(folder),Rename(folder),Move(folder в другую папку)иDelete(folder)черезstore.Delete. Дочерний файл проверяет, что содержимое папки переживает rename+move. Папки throwaway, чистятся вt.Cleanup.TestIntegrationFacadeCRUDчерезc.Files()— create folder / upload / stat / list / rename / move / copy / delete, с проверкойEntry.Provider(write →rest) иWrite()/Read()поreadOrder.TestFileClientWriteToReadOnlyStore— write-методы фасада поверх read-onlypgStoreдаютErrReadOnly.file_rest.go: REST-адаптер раньше умел только файлы (StatчерезGetFile,MoveFiles,RenameFile,DeleteFiles). Фактический TDD-прогон показал падениеTestIntegrationFileStores/restнаStat(folder). Добавлена классификация id черезstat/split; операции над папками идут через folderId/fileId:ListDavFolderдляStat,RenameDavFolder,MoveDavItems/CopyDavItems/DeleteDavItems.copyEventually— ретрай асинхронного copy (как у существующих move/rename).Тесты и вывод
Прогон стабилен 3×, мусор убран.
Замечания
go test -tags=integration ./...остаётся красным на пред-существующемcmd/office/fetch/task_integration_test.go(loader.TaskFields undefined) — не входит в эту задачу.Проверки