Files
portal/knowledge/aleksandra/brain/tests/test_cards.py
T

34 lines
1.4 KiB
Python

from pathlib import Path
from brain.cards import parse_card, assemble_brief
FIX = Path(__file__).parent / "fixtures"
def test_parse_child_card():
c = parse_card(FIX / "стоматология.md")
assert c.nisha == "стоматология / имплантация"
assert c.roditel == "Медицина"
assert "импланты" in c.sinonimy
assert c.trendy_obnovleno == "2026-07-16"
assert "Острая боль" in c.body
def test_parse_domain_card_has_no_parent():
c = parse_card(FIX / "медицина.md")
assert c.nisha == "Медицина"
assert c.roditel is None
assert "медцентр" in c.sinonimy
def test_assemble_brief_prepends_parent_body():
child = parse_card(FIX / "стоматология.md")
parent = parse_card(FIX / "медицина.md")
brief = assemble_brief(child, {"Медицина": parent})
# общее домена идёт первым, потом специфика+тренды ниши
assert brief.index("доверии") < brief.index("Острая боль")
assert "Тренды" in brief
def test_malformed_frontmatter_raises(tmp_path):
import pytest
p = tmp_path / "битая.md"
p.write_text("---\nnisha: X\nroditel: Y\n(нет закрывающего разделителя)\n", encoding="utf-8")
with pytest.raises(ValueError):
parse_card(p)