from session_bot.render import build_channel_text def test_build_channel_text_includes_phrase_and_status() -> None: config = { "template_text": "{{hidden_link}}\nheader\n\n{{actors}}", "hidden_link_url": "https://example.com/image.png", "actors": [ { "key": "astat", "display_name": "ASTAT", "display_html": "ASTAT", "link": "https://t.me/example", "pronouns": "he/him", "meta_html": " he/him ", "emoji": "🌟", "default_status": "backstage", "phrases": {"open": "принимает тейки"}, } ], "status_labels": {"open": "исполняет роль", "backstage": "в закулисье"}, } state = {"actors": {"astat": {"status": "open", "phrase": "готов к игре"}}} text = build_channel_text(config, state) assert '' in text assert 'ASTAT' in text assert "исполняет роль" in text assert "готов к игре" in text def test_build_channel_text_supports_per_actor_placeholders() -> None: config = { "template_text": "HEAD\n\n{{actor:astat}}\n\nMID\n\n{{actor:mari}}\n\nTAIL", "actors": [ { "key": "astat", "display_name": "ASTAT", "display_html": "ASTAT", "link": "https://t.me/astat", "pronouns": "he/him", "meta_html": " he/him ", "emoji": "🌟", "default_status": "backstage", "phrases": {"backstage": "в закулисье."}, }, { "key": "mari", "display_name": "MARI", "display_html": "MARI", "link": "https://t.me/mari", "pronouns": "she/her", "meta_html": " she/her ", "emoji": "🌟", "default_status": "open", "phrases": {"open": "исполняет роль."}, }, ], } state = {"actors": {}} text = build_channel_text(config, state) assert text.count("ASTAT") == 1 assert text.count("MARI") == 1 def test_build_channel_text_inlines_actor_fragment_without_duplication() -> None: config = { "template_text": ( '🌟 LIEBE she/her {{actor:liebe}}\n' '🌟 VICTOR tech bot' ), "actors": [ { "key": "liebe", "display_name": "LIEBE", "display_html": "LIEBE", "link": "https://t.me/liebe", "pronouns": "she/her", "meta_html": " she/her ", "emoji": "🌟", "default_status": "backstage", "phrases": {"backstage": "в закулисье."}, } ], } state = {"actors": {}} text = build_channel_text(config, state) assert text.count("LIEBE") == 1 assert "she/her в закулисье." in text assert "в закулисье." in text