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 → директория создаётся автоматически
|
||||
# KIN-070: Регрессионный тест на автоматическое создание vault directory
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def test_sync_nonexistent_vault_creates_directory(db, tmp_path):
|
||||
"""Если vault_path не существует, sync автоматически создаёт директорию."""
|
||||
def test_kin070_sync_creates_missing_vault_directory(db, tmp_path):
|
||||
"""KIN-070: Если vault_path не существует, sync автоматически создаёт директорию.
|
||||
|
||||
Проверяет что:
|
||||
- Директория создаётся без ошибок
|
||||
- sync_obsidian не падает с ошибкой
|
||||
- Возвращаемый результат содержит errors=[]
|
||||
"""
|
||||
nonexistent = tmp_path / "ghost_vault"
|
||||
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):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue