kin: auto-commit after pipeline

This commit is contained in:
Gros Frumos 2026-03-18 22:20:05 +02:00
parent 710b284e3f
commit f1c868e335
3 changed files with 490 additions and 2 deletions

View file

@ -1173,3 +1173,78 @@ def test_get_decisions_empty_tags_differs_from_none(conn):
assert len(result_empty) == 0, "tags=[] должен давать 0 результатов"
assert len(result_none) == 2, "tags=None должен давать все 2 результата"
# ---------------------------------------------------------------------------
# Углублённое исследование: дополнительные edge cases get_decisions с []
# Задача KIN-P1-001 revision — оба параметра пустые, пустой проект, decisions без тегов
# ---------------------------------------------------------------------------
def test_get_decisions_both_types_and_tags_empty_returns_empty(conn):
"""types=[] + tags=[] одновременно — должен вернуть 0 результатов.
Ранний возврат по types=[] должен сработать до проверки tags=[], результат [].
"""
models.create_project(conn, "p1", "P1", "/p1")
models.add_decision(conn, "p1", "gotcha", "Ловушка A", "desc", tags=["safari"])
models.add_decision(conn, "p1", "decision", "Решение B", "desc", tags=["chrome"])
result = models.get_decisions(conn, "p1", types=[], tags=[])
assert result == [], (
f"types=[] + tags=[] должен вернуть [], получено {len(result)} записей"
)
def test_get_decisions_empty_types_with_tags_none_returns_empty(conn):
"""types=[] при tags=None — ранний возврат по types, теги не проверяются → 0 результатов."""
models.create_project(conn, "p1", "P1", "/p1")
models.add_decision(conn, "p1", "gotcha", "Ловушка 1", "desc", tags=["safari"])
result = models.get_decisions(conn, "p1", types=[], tags=None)
assert result == [], (
f"types=[] должен дать ранний возврат [], даже когда tags=None, получено {len(result)} записей"
)
def test_get_decisions_empty_tags_with_types_none_returns_empty(conn):
"""tags=[] при types=None — фильтр по тегам даёт ранний возврат → 0 результатов."""
models.create_project(conn, "p1", "P1", "/p1")
models.add_decision(conn, "p1", "gotcha", "Ловушка 1", "desc", tags=["safari"])
result = models.get_decisions(conn, "p1", types=None, tags=[])
assert result == [], (
f"tags=[] должен дать ранний возврат [], даже когда types=None, получено {len(result)} записей"
)
def test_get_decisions_empty_types_on_empty_project_returns_empty(conn):
"""types=[] на проекте без решений — должен вернуть [] (ранний возврат, не обращение к пустой таблице)."""
models.create_project(conn, "p1", "P1", "/p1")
result = models.get_decisions(conn, "p1", types=[])
assert result == [], (
f"types=[] на пустом проекте должен вернуть [], получено {result!r}"
)
def test_get_decisions_empty_tags_on_decisions_without_tags(conn):
"""tags=[] при наличии decisions с tags=None — должен вернуть [] (не включать decisions без тегов)."""
models.create_project(conn, "p1", "P1", "/p1")
models.add_decision(conn, "p1", "decision", "Без тегов 1", "desc", tags=None)
models.add_decision(conn, "p1", "gotcha", "Без тегов 2", "desc", tags=None)
result = models.get_decisions(conn, "p1", tags=[])
assert result == [], (
f"tags=[] должен вернуть [], даже если decisions имеют tags=None, получено {len(result)} записей"
)
def test_get_decisions_empty_types_with_category_ignores_category(conn):
"""types=[] + category='ui' — ранний возврат по types=[], category не влияет → 0 результатов."""
models.create_project(conn, "p1", "P1", "/p1")
models.add_decision(conn, "p1", "gotcha", "UI ловушка", "desc", category="ui")
result = models.get_decisions(conn, "p1", types=[], category="ui")
assert result == [], (
f"types=[] должен давать ранний возврат [] независимо от category, получено {len(result)} записей"
)