34 lines
1.4 KiB
Python
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)
|