58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
from nanobot.channels.feishu import FeishuChannel
|
|
|
|
|
|
def test_parse_md_table_strips_markdown_formatting_in_headers_and_cells() -> None:
|
|
table = FeishuChannel._parse_md_table(
|
|
"""
|
|
| **Name** | __Status__ | *Notes* | ~~State~~ |
|
|
| --- | --- | --- | --- |
|
|
| **Alice** | __Ready__ | *Fast* | ~~Old~~ |
|
|
"""
|
|
)
|
|
|
|
assert table is not None
|
|
assert [col["display_name"] for col in table["columns"]] == [
|
|
"Name",
|
|
"Status",
|
|
"Notes",
|
|
"State",
|
|
]
|
|
assert table["rows"] == [
|
|
{"c0": "Alice", "c1": "Ready", "c2": "Fast", "c3": "Old"}
|
|
]
|
|
|
|
|
|
def test_split_headings_strips_embedded_markdown_before_bolding() -> None:
|
|
channel = FeishuChannel.__new__(FeishuChannel)
|
|
|
|
elements = channel._split_headings("# **Important** *status* ~~update~~")
|
|
|
|
assert elements == [
|
|
{
|
|
"tag": "div",
|
|
"text": {
|
|
"tag": "lark_md",
|
|
"content": "**Important status update**",
|
|
},
|
|
}
|
|
]
|
|
|
|
|
|
def test_split_headings_keeps_markdown_body_and_code_blocks_intact() -> None:
|
|
channel = FeishuChannel.__new__(FeishuChannel)
|
|
|
|
elements = channel._split_headings(
|
|
"# **Heading**\n\nBody with **bold** text.\n\n```python\nprint('hi')\n```"
|
|
)
|
|
|
|
assert elements[0] == {
|
|
"tag": "div",
|
|
"text": {
|
|
"tag": "lark_md",
|
|
"content": "**Heading**",
|
|
},
|
|
}
|
|
assert elements[1]["tag"] == "markdown"
|
|
assert "Body with **bold** text." in elements[1]["content"]
|
|
assert "```python\nprint('hi')\n```" in elements[1]["content"]
|