kin: KIN-067 При попытке сохранить настройки и синхронизироваться с обсидианом через настройки ошибка 'Sync error: Error: 400 Bad Request'. Разобраться с проблемой. Синхронизация работает в обе стороны.
This commit is contained in:
parent
81f974e6d3
commit
993362341b
5 changed files with 106 additions and 18 deletions
|
|
@ -1071,3 +1071,65 @@ def test_task_full_project_deploy_command_none_when_not_set(client):
|
|||
data = r.json()
|
||||
assert "project_deploy_command" in data
|
||||
assert data["project_deploy_command"] is None
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# KIN-067 — PATCH obsidian_vault_path + sync/obsidian не возвращает 400
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def test_patch_project_obsidian_vault_path_persisted_via_sql(client):
|
||||
"""PATCH с obsidian_vault_path сохраняется в БД — прямой SQL."""
|
||||
r = client.patch("/api/projects/p1", json={"obsidian_vault_path": "/tmp/vault"})
|
||||
assert r.status_code == 200
|
||||
|
||||
from core.db import init_db
|
||||
conn = init_db(api_module.DB_PATH)
|
||||
row = conn.execute("SELECT obsidian_vault_path FROM projects WHERE id = 'p1'").fetchone()
|
||||
conn.close()
|
||||
assert row is not None
|
||||
assert row[0] == "/tmp/vault"
|
||||
|
||||
|
||||
def test_patch_project_obsidian_vault_path_returned_in_response(client):
|
||||
"""PATCH возвращает обновлённый obsidian_vault_path в ответе."""
|
||||
r = client.patch("/api/projects/p1", json={"obsidian_vault_path": "/my/vault"})
|
||||
assert r.status_code == 200
|
||||
assert r.json()["obsidian_vault_path"] == "/my/vault"
|
||||
|
||||
|
||||
def test_sync_obsidian_without_vault_path_returns_400(client):
|
||||
"""POST sync/obsidian без сохранённого vault_path → 400 Bad Request."""
|
||||
r = client.post("/api/projects/p1/sync/obsidian")
|
||||
assert r.status_code == 400
|
||||
|
||||
|
||||
def test_sync_obsidian_after_patch_vault_path_not_400(client, tmp_path):
|
||||
"""Сценарий бага KIN-067: сначала PATCH vault_path, затем sync → не 400.
|
||||
|
||||
Раньше runSync() вызывал sync/obsidian без предварительного сохранения пути,
|
||||
что приводило к 400. После фикса PATCH вызывается первым.
|
||||
"""
|
||||
vault = tmp_path / "vault"
|
||||
vault.mkdir()
|
||||
|
||||
# Шаг 1: сохранить vault_path через PATCH (как теперь делает runSync)
|
||||
r = client.patch("/api/projects/p1", json={"obsidian_vault_path": str(vault)})
|
||||
assert r.status_code == 200
|
||||
|
||||
# Шаг 2: запустить синхронизацию — не должно вернуть 400
|
||||
r = client.post("/api/projects/p1/sync/obsidian")
|
||||
assert r.status_code != 400, f"Ожидался не 400, получен {r.status_code}: {r.text}"
|
||||
assert r.status_code == 200
|
||||
|
||||
|
||||
def test_sync_obsidian_after_patch_returns_sync_result_fields(client, tmp_path):
|
||||
"""После PATCH vault_path синхронизация возвращает поля exported_decisions и tasks_updated."""
|
||||
vault = tmp_path / "vault"
|
||||
vault.mkdir()
|
||||
|
||||
client.patch("/api/projects/p1", json={"obsidian_vault_path": str(vault)})
|
||||
r = client.post("/api/projects/p1/sync/obsidian")
|
||||
assert r.status_code == 200
|
||||
data = r.json()
|
||||
assert "exported_decisions" in data
|
||||
assert "tasks_updated" in data
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue