kin: KIN-070 При попытке запустить синк с обсидианом: Exported: 0 decisions Updated: 0 tasks Vault path does not exist or is not a directory: '/Users/grosfrumos/Library/Mobile Documents/iCloud~md~obsidian/Documents/myvault/kin'. Проверить задачу и добиться синхронизации.
This commit is contained in:
parent
71c697bf68
commit
a605e9d110
1 changed files with 51 additions and 3 deletions
|
|
@ -228,10 +228,17 @@ def test_export_frontmatter_has_yaml_delimiters(tmp_vault):
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# 9. sync_obsidian — несуществующий vault_path → директория создаётся автоматически
|
# 9. sync_obsidian — несуществующий vault_path → директория создаётся автоматически
|
||||||
|
# KIN-070: Регрессионный тест на автоматическое создание vault directory
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
def test_sync_nonexistent_vault_creates_directory(db, tmp_path):
|
def test_kin070_sync_creates_missing_vault_directory(db, tmp_path):
|
||||||
"""Если vault_path не существует, sync автоматически создаёт директорию."""
|
"""KIN-070: Если vault_path не существует, sync автоматически создаёт директорию.
|
||||||
|
|
||||||
|
Проверяет что:
|
||||||
|
- Директория создаётся без ошибок
|
||||||
|
- sync_obsidian не падает с ошибкой
|
||||||
|
- Возвращаемый результат содержит errors=[]
|
||||||
|
"""
|
||||||
nonexistent = tmp_path / "ghost_vault"
|
nonexistent = tmp_path / "ghost_vault"
|
||||||
models.update_project(db, "proj1", obsidian_vault_path=str(nonexistent))
|
models.update_project(db, "proj1", obsidian_vault_path=str(nonexistent))
|
||||||
|
|
||||||
|
|
@ -244,7 +251,48 @@ def test_sync_nonexistent_vault_creates_directory(db, tmp_path):
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# 10. sync_obsidian — пустой vault → 0 экспортов, 0 обновлений, нет ошибок
|
# 10. sync_obsidian + decisions: несуществующий vault + decisions в БД → export success
|
||||||
|
# KIN-070: Проверяет что decisions экспортируются когда vault создаётся автоматически
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def test_kin070_sync_creates_vault_and_exports_decisions(db, tmp_path):
|
||||||
|
"""KIN-070: sync экспортирует decisions и автоматически создаёт vault_path.
|
||||||
|
|
||||||
|
Проверяет что:
|
||||||
|
- vault директория создаётся автоматически
|
||||||
|
- decisions экспортируются в .md-файлы (exported_decisions > 0)
|
||||||
|
- errors == [] (нет ошибок)
|
||||||
|
"""
|
||||||
|
nonexistent = tmp_path / "missing_vault"
|
||||||
|
models.update_project(db, "proj1", obsidian_vault_path=str(nonexistent))
|
||||||
|
|
||||||
|
# Создаём decision в БД
|
||||||
|
models.add_decision(
|
||||||
|
db,
|
||||||
|
project_id="proj1",
|
||||||
|
type="decision",
|
||||||
|
title="Use SQLite for sync state",
|
||||||
|
description="SQLite will be the single source of truth.",
|
||||||
|
tags=["database", "sync"],
|
||||||
|
)
|
||||||
|
|
||||||
|
result = sync_obsidian(db, "proj1")
|
||||||
|
|
||||||
|
# Проверяем успешный экспорт
|
||||||
|
assert result["errors"] == []
|
||||||
|
assert nonexistent.is_dir() # директория создана
|
||||||
|
assert result["exported_decisions"] == 1 # одно decision экспортировано
|
||||||
|
assert result["tasks_updated"] == 0
|
||||||
|
|
||||||
|
# Проверяем что .md-файл создан в правильной директории
|
||||||
|
decisions_dir = nonexistent / "proj1" / "decisions"
|
||||||
|
assert decisions_dir.is_dir()
|
||||||
|
md_files = list(decisions_dir.glob("*.md"))
|
||||||
|
assert len(md_files) == 1
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# 11. sync_obsidian — пустой vault → 0 экспортов, 0 обновлений, нет ошибок
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
def test_sync_empty_vault_no_errors(db, tmp_vault):
|
def test_sync_empty_vault_no_errors(db, tmp_vault):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue