diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 260d30f0c..3480ad5f5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: rev: "v3.0.0" hooks: - id: prettier - exclude: \.html$|^docs/ + exclude: \.html$|^docs/|^tests/unit/messages/formats/markdown/fixtures/ - repo: https://github.com/crate-ci/typos rev: v1.16.6 diff --git a/elementary/.prettierignore b/elementary/.prettierignore new file mode 100644 index 000000000..cf6cfbf98 --- /dev/null +++ b/elementary/.prettierignore @@ -0,0 +1 @@ +tests/unit/messages/formats/markdown/fixtures/* \ No newline at end of file diff --git a/elementary/messages/blocks.py b/elementary/messages/blocks.py index bc2160f2f..2f24b206f 100644 --- a/elementary/messages/blocks.py +++ b/elementary/messages/blocks.py @@ -113,7 +113,7 @@ class ActionsBlock(BaseBlock): "LineBlock", ] -LineBlock.update_forward_refs() +LineBlock.model_rebuild() class HeaderBlock(BaseBlock): @@ -184,4 +184,4 @@ class ExpandableBlock(BaseBlock): ] # Update forward references for recursive types -ExpandableBlock.update_forward_refs() +ExpandableBlock.model_rebuild() diff --git a/elementary/messages/formats/adaptive_cards.py b/elementary/messages/formats/adaptive_cards.py index df14c97b7..925fd33bb 100644 --- a/elementary/messages/formats/adaptive_cards.py +++ b/elementary/messages/formats/adaptive_cards.py @@ -21,7 +21,7 @@ TextStyle, WhitespaceBlock, ) -from elementary.messages.formats.html import ICON_TO_HTML +from elementary.messages.formats.unicode import ICON_TO_UNICODE from elementary.messages.message_body import Color, MessageBlock, MessageBody COLOR_TO_STYLE = { @@ -32,7 +32,7 @@ def format_icon(icon: Icon) -> str: - return ICON_TO_HTML[icon] + return ICON_TO_UNICODE[icon] def format_text_block(block: TextBlock) -> str: diff --git a/elementary/messages/formats/block_kit.py b/elementary/messages/formats/block_kit.py index f88d2f02e..fe543a00f 100644 --- a/elementary/messages/formats/block_kit.py +++ b/elementary/messages/formats/block_kit.py @@ -29,7 +29,7 @@ UserSelectActionBlock, WhitespaceBlock, ) -from elementary.messages.formats.html import ICON_TO_HTML +from elementary.messages.formats.unicode import ICON_TO_UNICODE from elementary.messages.message_body import Color, MessageBlock, MessageBody COLOR_MAP = { @@ -61,7 +61,7 @@ def __init__( self._resolve_mention = resolve_mention or (lambda x: None) def _format_icon(self, icon: Icon) -> str: - return ICON_TO_HTML[icon] + return ICON_TO_UNICODE[icon] def _format_text_block(self, block: TextBlock) -> str: if block.style == TextStyle.BOLD: diff --git a/elementary/messages/formats/markdown.py b/elementary/messages/formats/markdown.py new file mode 100644 index 000000000..a8a454211 --- /dev/null +++ b/elementary/messages/formats/markdown.py @@ -0,0 +1,148 @@ +import json +import re +from enum import Enum + +from tabulate import tabulate + +from elementary.messages.blocks import ( + ActionsBlock, + CodeBlock, + DividerBlock, + ExpandableBlock, + FactListBlock, + HeaderBlock, + Icon, + IconBlock, + InlineBlock, + InlineCodeBlock, + LineBlock, + LinesBlock, + LinkBlock, + MentionBlock, + TableBlock, + TextBlock, + TextStyle, + WhitespaceBlock, +) +from elementary.messages.formats.unicode import ICON_TO_UNICODE +from elementary.messages.message_body import MessageBlock, MessageBody + + +class TableStyle(Enum): + TABULATE = "tabulate" + JSON = "json" + + +class MarkdownFormatter: + def __init__(self, table_style: TableStyle): + self._table_style = table_style + + def format_icon(self, icon: Icon) -> str: + return ICON_TO_UNICODE[icon] + + def format_text_block(self, block: TextBlock) -> str: + if block.style == TextStyle.BOLD: + return f"**{block.text}**" + elif block.style == TextStyle.ITALIC: + return f"_{block.text}_" + else: + return block.text + + def format_inline_block(self, block: InlineBlock) -> str: + if isinstance(block, IconBlock): + return self.format_icon(block.icon) + elif isinstance(block, TextBlock): + return self.format_text_block(block) + elif isinstance(block, LinkBlock): + return f"[{block.text}]({block.url})" + elif isinstance(block, InlineCodeBlock): + return f"`{block.code}`" + elif isinstance(block, MentionBlock): + return block.user + elif isinstance(block, LineBlock): + return self.format_line_block(block) + elif isinstance(block, WhitespaceBlock): + return " " + else: + raise ValueError(f"Unsupported inline block type: {type(block)}") + + def format_line_block(self, block: LineBlock) -> str: + return block.sep.join( + [self.format_inline_block(inline) for inline in block.inlines] + ) + + def format_lines_block(self, block: LinesBlock) -> str: + formatted_parts = [] + for index, line_block in enumerate(block.lines): + formatted_line = self.format_line_block(line_block) + formatted_parts.append(formatted_line) + is_bullet = re.match(r"^\s*[*-]", formatted_line) + is_last = index == len(block.lines) - 1 + if not is_bullet and not is_last: + # in markdown, single line breaks are not rendered as new lines, except for bullet lists + # so we need to add a backslash to force a new line + formatted_parts.append("\\") + if not is_last: + formatted_parts.append("\n") + return "".join(formatted_parts) + + def format_fact_list_block(self, block: FactListBlock) -> str: + facts = [ + f"{self.format_line_block(fact.title)}: {self.format_line_block(fact.value)}" + for fact in block.facts + ] + return " | ".join(facts) + + def format_table_block(self, block: TableBlock) -> str: + if self._table_style == TableStyle.TABULATE: + table = tabulate(block.rows, headers=block.headers, tablefmt="simple") + return f"```\n{table}\n```" + elif self._table_style == TableStyle.JSON: + dicts = [ + {header: cell for header, cell in zip(block.headers, row)} + for row in block.rows + ] + return f"```\n{json.dumps(dicts, indent=2)}\n```" + else: + raise ValueError(f"Invalid table style: {self._table_style}") + + def format_expandable_block(self, block: ExpandableBlock) -> str: + body = self.format_message_blocks(block.body) + quoted_body = "\n> ".join(body.split("\n")) + return f"> **{block.title}**\\\n> {quoted_body}" + + def format_message_block(self, block: MessageBlock) -> str: + if isinstance(block, HeaderBlock): + return f"# {block.text}" + elif isinstance(block, CodeBlock): + return f"```\n{block.text}\n```" + elif isinstance(block, LinesBlock): + return self.format_lines_block(block) + elif isinstance(block, FactListBlock): + return self.format_fact_list_block(block) + elif isinstance(block, ExpandableBlock): + return self.format_expandable_block(block) + elif isinstance(block, TableBlock): + return self.format_table_block(block) + elif isinstance(block, DividerBlock): + return "---" + elif isinstance(block, ActionsBlock): + # Actions not supported for text + return "" + else: + raise ValueError(f"Unsupported message block type: {type(block)}") + + def format_message_blocks(self, blocks: list[MessageBlock]) -> str: + if not blocks: + return "" + return "\n\n".join([self.format_message_block(block) for block in blocks]) + + def format(self, message: MessageBody) -> str: + return self.format_message_blocks(message.blocks) + + +def format_markdown( + message: MessageBody, table_style: TableStyle = TableStyle.TABULATE +) -> str: + formatter = MarkdownFormatter(table_style) + return formatter.format(message) diff --git a/elementary/messages/formats/text.py b/elementary/messages/formats/text.py new file mode 100644 index 000000000..18aaaddb5 --- /dev/null +++ b/elementary/messages/formats/text.py @@ -0,0 +1,140 @@ +import json +from enum import Enum +from typing import List + +from tabulate import tabulate + +from elementary.messages.blocks import ( + ActionsBlock, + CodeBlock, + DividerBlock, + ExpandableBlock, + FactListBlock, + HeaderBlock, + Icon, + IconBlock, + InlineBlock, + InlineCodeBlock, + LineBlock, + LinesBlock, + LinkBlock, + MentionBlock, + TableBlock, + TextBlock, + WhitespaceBlock, +) +from elementary.messages.formats.unicode import ICON_TO_UNICODE +from elementary.messages.message_body import MessageBlock, MessageBody + + +class IconStyle(Enum): + UNICODE = "unicode" + NAME = "name" + OMIT = "omit" + + +class TableStyle(Enum): + TABULATE = "tabulate" + JSON = "json" + + +class TextFormatter: + def __init__(self, icon_style: IconStyle, table_style: TableStyle): + self._icon_style = icon_style + self._table_style = table_style + + def format_icon(self, icon: Icon) -> str: + if self._icon_style == IconStyle.OMIT: + return "" + elif self._icon_style == IconStyle.UNICODE: + return ICON_TO_UNICODE[icon] + elif self._icon_style == IconStyle.NAME: + return f":{icon.value}:" + else: + raise ValueError(f"Invalid icon style: {self._icon_style}") + + def format_inline_block(self, block: InlineBlock) -> str: + if isinstance(block, IconBlock): + return self.format_icon(block.icon) + elif isinstance(block, TextBlock): + return block.text + elif isinstance(block, LinkBlock): + return f"{block.text} ({block.url})" + elif isinstance(block, InlineCodeBlock): + return block.code + elif isinstance(block, MentionBlock): + return block.user + elif isinstance(block, LineBlock): + return self.format_line_block(block) + elif isinstance(block, WhitespaceBlock): + return " " + else: + raise ValueError(f"Unsupported inline block type: {type(block)}") + + def format_line_block(self, block: LineBlock) -> str: + return block.sep.join( + [self.format_inline_block(inline) for inline in block.inlines] + ) + + def format_lines_block(self, block: LinesBlock) -> str: + return "\n".join( + [self.format_line_block(line_block) for line_block in block.lines] + ) + + def format_fact_list_block(self, block: FactListBlock) -> str: + facts = [ + f"{self.format_line_block(fact.title)}: {self.format_line_block(fact.value)}" + for fact in block.facts + ] + return " | ".join(facts) + + def format_table_block(self, block: TableBlock) -> str: + if self._table_style == TableStyle.TABULATE: + return tabulate(block.rows, headers=block.headers, tablefmt="simple") + elif self._table_style == TableStyle.JSON: + dicts = [ + {header: cell for header, cell in zip(block.headers, row)} + for row in block.rows + ] + return json.dumps(dicts, indent=2) + else: + raise ValueError(f"Invalid table style: {self._table_style}") + + def format_expandable_block(self, block: ExpandableBlock) -> str: + return f"{block.title}\n{self.format_message_blocks(block.body)}" + + def format_message_block(self, block: MessageBlock) -> str: + if isinstance(block, (HeaderBlock, CodeBlock)): + return block.text + elif isinstance(block, LinesBlock): + return self.format_lines_block(block) + elif isinstance(block, FactListBlock): + return self.format_fact_list_block(block) + elif isinstance(block, ExpandableBlock): + return self.format_expandable_block(block) + elif isinstance(block, TableBlock): + return self.format_table_block(block) + elif isinstance(block, ActionsBlock): + # Actions not supported for text + return "" + elif isinstance(block, DividerBlock): + return "--------------------------------" + else: + raise ValueError(f"Unsupported message block type: {type(block)}") + + def format_message_blocks(self, blocks: List[MessageBlock]) -> str: + if not blocks: + return "" + return "\n".join([self.format_message_block(block) for block in blocks]) + + def format(self, message: MessageBody) -> str: + return self.format_message_blocks(message.blocks) + + +def format_text( + message: MessageBody, + icon_style: IconStyle = IconStyle.UNICODE, + table_style: TableStyle = TableStyle.TABULATE, +) -> str: + formatter = TextFormatter(icon_style, table_style) + return formatter.format(message) diff --git a/elementary/messages/formats/html.py b/elementary/messages/formats/unicode.py similarity index 77% rename from elementary/messages/formats/html.py rename to elementary/messages/formats/unicode.py index 367ef97a0..44107a026 100644 --- a/elementary/messages/formats/html.py +++ b/elementary/messages/formats/unicode.py @@ -1,6 +1,6 @@ from elementary.messages.blocks import Icon -ICON_TO_HTML = { +ICON_TO_UNICODE = { Icon.RED_TRIANGLE: "đŸ”ē", Icon.X: "❌", Icon.WARNING: "âš ī¸", @@ -18,5 +18,5 @@ } for icon in Icon: - if icon not in ICON_TO_HTML: - raise RuntimeError(f"No HTML representation for icon {icon}") + if icon not in ICON_TO_UNICODE: + raise RuntimeError(f"No unicode representation for icon {icon}") diff --git a/elementary/messages/message_body.py b/elementary/messages/message_body.py index e9675c868..0ff8cc572 100644 --- a/elementary/messages/message_body.py +++ b/elementary/messages/message_body.py @@ -39,4 +39,4 @@ class MessageBody(BaseModel): id: Optional[str] = None -MessageBody.update_forward_refs() +MessageBody.model_rebuild() diff --git a/tests/unit/alerts/alert_messages/test_alert_utils.py b/tests/unit/alerts/alert_messages/test_alert_utils.py index 20babb402..f452e7c80 100644 --- a/tests/unit/alerts/alert_messages/test_alert_utils.py +++ b/tests/unit/alerts/alert_messages/test_alert_utils.py @@ -23,7 +23,7 @@ from elementary.monitor.data_monitoring.alerts.integrations.utils.report_link import ( ReportLinkData as ReportLink, ) -from tests.unit.messages.utils import assert_expected_json, get_expected_json_path +from tests.unit.messages.utils import assert_expected_json, get_expected_file_path FIXTURES_DIR = Path(__file__).resolve().parent / "fixtures" @@ -320,7 +320,7 @@ def assert_expected_json_adaptive_card( ): adaptive_card_filename = f"{filename}.json" adaptive_card_json = format_adaptive_card(message_body) - expected_adaptive_card_json_path = get_expected_json_path( + expected_adaptive_card_json_path = get_expected_file_path( FIXTURES_DIR / "adaptive_card", adaptive_card_filename ) assert_expected_json(adaptive_card_json, expected_adaptive_card_json_path) @@ -345,7 +345,7 @@ def assert_expected_json_block_kit( os.environ["TEST_SLACK_CHANNEL"], formatted_block_kit_message, ) - expected_block_kit_json_path = get_expected_json_path( + expected_block_kit_json_path = get_expected_file_path( FIXTURES_DIR / "block_kit", block_kit_filename ) assert_expected_json( diff --git a/tests/unit/messages/formats/adaptive_cards/test_adaptive_cards.py b/tests/unit/messages/formats/adaptive_cards/test_adaptive_cards.py index 3d661c691..2dc707e78 100644 --- a/tests/unit/messages/formats/adaptive_cards/test_adaptive_cards.py +++ b/tests/unit/messages/formats/adaptive_cards/test_adaptive_cards.py @@ -17,7 +17,7 @@ from elementary.messages.formats.adaptive_cards import format_adaptive_card from elementary.messages.message_body import MessageBody from tests.unit.messages.formats.base_test_format import BaseTestFormat -from tests.unit.messages.utils import assert_expected_json, get_expected_json_path +from tests.unit.messages.utils import assert_expected_json, get_expected_file_path FIXTURES_DIR = Path(__file__).resolve().parent / "fixtures" @@ -43,8 +43,8 @@ class TestAdaptiveCards(BaseTestFormat[dict]): def format(self, message_body: MessageBody) -> dict: return format_adaptive_card(message_body) - def get_expected_file_path(self, name: str) -> str: - return get_expected_json_path(FIXTURES_DIR, f"{name}.json") + def get_expected_file_path(self, name: str) -> Path: + return get_expected_file_path(FIXTURES_DIR, f"{name}.json") def assert_expected_value(self, result: dict, expected_file_path: Path) -> None: assert_expected_json(result, expected_file_path) diff --git a/tests/unit/messages/formats/block_kit/test_block_kit.py b/tests/unit/messages/formats/block_kit/test_block_kit.py index 53ec0e63c..1fe44af46 100644 --- a/tests/unit/messages/formats/block_kit/test_block_kit.py +++ b/tests/unit/messages/formats/block_kit/test_block_kit.py @@ -10,7 +10,7 @@ SlackWebMessagingIntegration, ) from tests.unit.messages.formats.base_test_format import BaseTestFormat -from tests.unit.messages.utils import assert_expected_json, get_expected_json_path +from tests.unit.messages.utils import assert_expected_json, get_expected_file_path FIXTURES_DIR = Path(__file__).parent / "fixtures" @@ -20,7 +20,7 @@ def format(self, message_body: MessageBody) -> FormattedBlockKitMessage: return format_block_kit(message_body, resolve_mention=lambda x: "resolved_" + x) def get_expected_file_path(self, name: str) -> Path: - return get_expected_json_path(FIXTURES_DIR, f"{name}.json") + return get_expected_file_path(FIXTURES_DIR, f"{name}.json") def assert_expected_value( self, result: FormattedBlockKitMessage, expected_file_path: Path diff --git a/tests/unit/messages/formats/markdown/__init__.py b/tests/unit/messages/formats/markdown/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/unit/messages/formats/markdown/fixtures/all_blocks_green.md b/tests/unit/messages/formats/markdown/fixtures/all_blocks_green.md new file mode 100644 index 000000000..c663e1ae2 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/all_blocks_green.md @@ -0,0 +1,16 @@ +# Main Header + +Normal text **Bold text** _Italic text_ + +- First bullet point +- Second bullet point + +✅ Check item + +Status: Passed | Tags: test, example + +> **Show Details**\ +> 🔎 **Details Section**\ +> Here's some content with a [link](https://example.com) + +user1 `select 1` diff --git a/tests/unit/messages/formats/markdown/fixtures/all_blocks_no_color.md b/tests/unit/messages/formats/markdown/fixtures/all_blocks_no_color.md new file mode 100644 index 000000000..c663e1ae2 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/all_blocks_no_color.md @@ -0,0 +1,16 @@ +# Main Header + +Normal text **Bold text** _Italic text_ + +- First bullet point +- Second bullet point + +✅ Check item + +Status: Passed | Tags: test, example + +> **Show Details**\ +> 🔎 **Details Section**\ +> Here's some content with a [link](https://example.com) + +user1 `select 1` diff --git a/tests/unit/messages/formats/markdown/fixtures/all_blocks_red.md b/tests/unit/messages/formats/markdown/fixtures/all_blocks_red.md new file mode 100644 index 000000000..c663e1ae2 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/all_blocks_red.md @@ -0,0 +1,16 @@ +# Main Header + +Normal text **Bold text** _Italic text_ + +- First bullet point +- Second bullet point + +✅ Check item + +Status: Passed | Tags: test, example + +> **Show Details**\ +> 🔎 **Details Section**\ +> Here's some content with a [link](https://example.com) + +user1 `select 1` diff --git a/tests/unit/messages/formats/markdown/fixtures/all_blocks_yellow.md b/tests/unit/messages/formats/markdown/fixtures/all_blocks_yellow.md new file mode 100644 index 000000000..c663e1ae2 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/all_blocks_yellow.md @@ -0,0 +1,16 @@ +# Main Header + +Normal text **Bold text** _Italic text_ + +- First bullet point +- Second bullet point + +✅ Check item + +Status: Passed | Tags: test, example + +> **Show Details**\ +> 🔎 **Details Section**\ +> Here's some content with a [link](https://example.com) + +user1 `select 1` diff --git a/tests/unit/messages/formats/markdown/fixtures/all_icons.md b/tests/unit/messages/formats/markdown/fixtures/all_icons.md new file mode 100644 index 000000000..fd9bd4710 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/all_icons.md @@ -0,0 +1 @@ +RED_TRIANGLE đŸ”ē X ❌ WARNING âš ī¸ EXCLAMATION ❗ CHECK ✅ MAGNIFYING_GLASS 🔎 HAMMER_AND_WRENCH đŸ› ī¸ POLICE_LIGHT 🚨 INFO â„šī¸ EYE đŸ‘ī¸ GEAR âš™ī¸ BELL 🔔 GEM 💎 SPARKLES ✨ diff --git a/tests/unit/messages/formats/markdown/fixtures/bullet_list.md b/tests/unit/messages/formats/markdown/fixtures/bullet_list.md new file mode 100644 index 000000000..27af9276a --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/bullet_list.md @@ -0,0 +1,5 @@ +- First bullet +- Second bullet + +✅ Check item 1\ +✅ Check item 2 diff --git a/tests/unit/messages/formats/markdown/fixtures/code_block_200.md b/tests/unit/messages/formats/markdown/fixtures/code_block_200.md new file mode 100644 index 000000000..a9b74b1b4 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/code_block_200.md @@ -0,0 +1,3 @@ +``` +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/code_block_50.md b/tests/unit/messages/formats/markdown/fixtures/code_block_50.md new file mode 100644 index 000000000..9e53aa9ca --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/code_block_50.md @@ -0,0 +1,3 @@ +``` +Lorem ipsum dolor sit amet, consectetur adipiscing +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/code_block_500.md b/tests/unit/messages/formats/markdown/fixtures/code_block_500.md new file mode 100644 index 000000000..0bbd27f3d --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/code_block_500.md @@ -0,0 +1,3 @@ +``` +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adip +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/colored_header.md b/tests/unit/messages/formats/markdown/fixtures/colored_header.md new file mode 100644 index 000000000..10f212979 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/colored_header.md @@ -0,0 +1 @@ +# Test Header diff --git a/tests/unit/messages/formats/markdown/fixtures/divider_blocks.md b/tests/unit/messages/formats/markdown/fixtures/divider_blocks.md new file mode 100644 index 000000000..e77cd7522 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/divider_blocks.md @@ -0,0 +1,5 @@ +# First Section + +--- + +# Second Section diff --git a/tests/unit/messages/formats/markdown/fixtures/expandable_block.md b/tests/unit/messages/formats/markdown/fixtures/expandable_block.md new file mode 100644 index 000000000..04f5d6e34 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/expandable_block.md @@ -0,0 +1,2 @@ +> **Show More**\ +> Hidden content diff --git a/tests/unit/messages/formats/markdown/fixtures/fact_list.md b/tests/unit/messages/formats/markdown/fixtures/fact_list.md new file mode 100644 index 000000000..e84d43d86 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/fact_list.md @@ -0,0 +1 @@ +Status: Passed diff --git a/tests/unit/messages/formats/markdown/fixtures/nested_expandable.md b/tests/unit/messages/formats/markdown/fixtures/nested_expandable.md new file mode 100644 index 000000000..1b53e8313 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/nested_expandable.md @@ -0,0 +1,7 @@ +> **Outer Block**\ +> 🔎 **Title with Icon**\ +> Some content with a [link](https://example.com) +> +> > **Inner Block**\ +> > Inner content + diff --git a/tests/unit/messages/formats/markdown/fixtures/simple_header.md b/tests/unit/messages/formats/markdown/fixtures/simple_header.md new file mode 100644 index 000000000..10f212979 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/simple_header.md @@ -0,0 +1 @@ +# Test Header diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_200_1.md b/tests/unit/messages/formats/markdown/fixtures/table_block_200_1.md new file mode 100644 index 000000000..39e4eb1ba --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_200_1.md @@ -0,0 +1,9 @@ +``` +Column 0 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_200_2.md b/tests/unit/messages/formats/markdown/fixtures/table_block_200_2.md new file mode 100644 index 000000000..c014b75fd --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_200_2.md @@ -0,0 +1,9 @@ +``` +Column 0 Column 1 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_200_3.md b/tests/unit/messages/formats/markdown/fixtures/table_block_200_3.md new file mode 100644 index 000000000..d401bf19f --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_200_3.md @@ -0,0 +1,9 @@ +``` +Column 0 Column 1 Column 2 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_200_4.md b/tests/unit/messages/formats/markdown/fixtures/table_block_200_4.md new file mode 100644 index 000000000..6feb5d1ba --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_200_4.md @@ -0,0 +1,9 @@ +``` +Column 0 Column 1 Column 2 Column 3 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_200_5.md b/tests/unit/messages/formats/markdown/fixtures/table_block_200_5.md new file mode 100644 index 000000000..7cfbe632f --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_200_5.md @@ -0,0 +1,9 @@ +``` +Column 0 Column 1 Column 2 Column 3 Column 4 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_30_1.md b/tests/unit/messages/formats/markdown/fixtures/table_block_30_1.md new file mode 100644 index 000000000..7d8d5dcd2 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_30_1.md @@ -0,0 +1,9 @@ +``` +Column 0 +------------------------------ +Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_30_2.md b/tests/unit/messages/formats/markdown/fixtures/table_block_30_2.md new file mode 100644 index 000000000..1b59a2e74 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_30_2.md @@ -0,0 +1,9 @@ +``` +Column 0 Column 1 +------------------------------ ------------------------------ +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_30_3.md b/tests/unit/messages/formats/markdown/fixtures/table_block_30_3.md new file mode 100644 index 000000000..b295c161f --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_30_3.md @@ -0,0 +1,9 @@ +``` +Column 0 Column 1 Column 2 +------------------------------ ------------------------------ ------------------------------ +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_30_4.md b/tests/unit/messages/formats/markdown/fixtures/table_block_30_4.md new file mode 100644 index 000000000..47684db0b --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_30_4.md @@ -0,0 +1,9 @@ +``` +Column 0 Column 1 Column 2 Column 3 +------------------------------ ------------------------------ ------------------------------ ------------------------------ +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_30_5.md b/tests/unit/messages/formats/markdown/fixtures/table_block_30_5.md new file mode 100644 index 000000000..394aedfcf --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_30_5.md @@ -0,0 +1,9 @@ +``` +Column 0 Column 1 Column 2 Column 3 Column 4 +------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_8_1.md b/tests/unit/messages/formats/markdown/fixtures/table_block_8_1.md new file mode 100644 index 000000000..c6b7f07d4 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_8_1.md @@ -0,0 +1,9 @@ +``` +Column 0 +---------- +Lorem ip +Lorem ip +Lorem ip +Lorem ip +Lorem ip +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_8_2.md b/tests/unit/messages/formats/markdown/fixtures/table_block_8_2.md new file mode 100644 index 000000000..ec0da766c --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_8_2.md @@ -0,0 +1,9 @@ +``` +Column 0 Column 1 +---------- ---------- +Lorem ip Lorem ip +Lorem ip Lorem ip +Lorem ip Lorem ip +Lorem ip Lorem ip +Lorem ip Lorem ip +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_8_3.md b/tests/unit/messages/formats/markdown/fixtures/table_block_8_3.md new file mode 100644 index 000000000..4cb03e96f --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_8_3.md @@ -0,0 +1,9 @@ +``` +Column 0 Column 1 Column 2 +---------- ---------- ---------- +Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_8_4.md b/tests/unit/messages/formats/markdown/fixtures/table_block_8_4.md new file mode 100644 index 000000000..6e9772dcf --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_8_4.md @@ -0,0 +1,9 @@ +``` +Column 0 Column 1 Column 2 Column 3 +---------- ---------- ---------- ---------- +Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/table_block_8_5.md b/tests/unit/messages/formats/markdown/fixtures/table_block_8_5.md new file mode 100644 index 000000000..1f11e4f4c --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/table_block_8_5.md @@ -0,0 +1,9 @@ +``` +Column 0 Column 1 Column 2 Column 3 Column 4 +---------- ---------- ---------- ---------- ---------- +Lorem ip Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip Lorem ip +``` diff --git a/tests/unit/messages/formats/markdown/fixtures/text_length_1000.md b/tests/unit/messages/formats/markdown/fixtures/text_length_1000.md new file mode 100644 index 000000000..f7b26edb1 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/text_length_1000.md @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, con diff --git a/tests/unit/messages/formats/markdown/fixtures/text_length_200.md b/tests/unit/messages/formats/markdown/fixtures/text_length_200.md new file mode 100644 index 000000000..47e751544 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/text_length_200.md @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c diff --git a/tests/unit/messages/formats/markdown/fixtures/text_length_50.md b/tests/unit/messages/formats/markdown/fixtures/text_length_50.md new file mode 100644 index 000000000..6ef9570bc --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/text_length_50.md @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing diff --git a/tests/unit/messages/formats/markdown/fixtures/text_length_500.md b/tests/unit/messages/formats/markdown/fixtures/text_length_500.md new file mode 100644 index 000000000..5f7389513 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/text_length_500.md @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adip diff --git a/tests/unit/messages/formats/markdown/fixtures/text_styles.md b/tests/unit/messages/formats/markdown/fixtures/text_styles.md new file mode 100644 index 000000000..ad64bca71 --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/text_styles.md @@ -0,0 +1 @@ +Normal text **Bold text** _Italic text_ diff --git a/tests/unit/messages/formats/markdown/fixtures/whitespace_block.md b/tests/unit/messages/formats/markdown/fixtures/whitespace_block.md new file mode 100644 index 000000000..0cbc8653f --- /dev/null +++ b/tests/unit/messages/formats/markdown/fixtures/whitespace_block.md @@ -0,0 +1,2 @@ +This should not be indented\ +  This should be indented diff --git a/tests/unit/messages/formats/markdown/test_markdown.py b/tests/unit/messages/formats/markdown/test_markdown.py new file mode 100644 index 000000000..ec0eb64c8 --- /dev/null +++ b/tests/unit/messages/formats/markdown/test_markdown.py @@ -0,0 +1,19 @@ +from pathlib import Path + +from elementary.messages.formats.markdown import format_markdown +from elementary.messages.message_body import MessageBody +from tests.unit.messages.formats.base_test_format import BaseTestFormat +from tests.unit.messages.utils import assert_expected_text, get_expected_file_path + +FIXTURES_DIR = Path(__file__).parent / "fixtures" + + +class TestMarkdown(BaseTestFormat[str]): + def format(self, message_body: MessageBody) -> str: + return format_markdown(message_body) + + def get_expected_file_path(self, name: str) -> Path: + return get_expected_file_path(FIXTURES_DIR, f"{name}.md") + + def assert_expected_value(self, result: str, expected_file_path: Path) -> None: + assert_expected_text(result, expected_file_path) diff --git a/tests/unit/messages/formats/text/__init__.py b/tests/unit/messages/formats/text/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/unit/messages/formats/text/fixtures/all_blocks_green.txt b/tests/unit/messages/formats/text/fixtures/all_blocks_green.txt new file mode 100644 index 000000000..9a7c72685 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/all_blocks_green.txt @@ -0,0 +1,10 @@ +Main Header +Normal text Bold text Italic text +- First bullet point +- Second bullet point +✅ Check item +Status: Passed | Tags: test, example +Show Details +🔎 Details Section +Here's some content with a link (https://example.com) +user1 select 1 diff --git a/tests/unit/messages/formats/text/fixtures/all_blocks_no_color.txt b/tests/unit/messages/formats/text/fixtures/all_blocks_no_color.txt new file mode 100644 index 000000000..9a7c72685 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/all_blocks_no_color.txt @@ -0,0 +1,10 @@ +Main Header +Normal text Bold text Italic text +- First bullet point +- Second bullet point +✅ Check item +Status: Passed | Tags: test, example +Show Details +🔎 Details Section +Here's some content with a link (https://example.com) +user1 select 1 diff --git a/tests/unit/messages/formats/text/fixtures/all_blocks_red.txt b/tests/unit/messages/formats/text/fixtures/all_blocks_red.txt new file mode 100644 index 000000000..9a7c72685 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/all_blocks_red.txt @@ -0,0 +1,10 @@ +Main Header +Normal text Bold text Italic text +- First bullet point +- Second bullet point +✅ Check item +Status: Passed | Tags: test, example +Show Details +🔎 Details Section +Here's some content with a link (https://example.com) +user1 select 1 diff --git a/tests/unit/messages/formats/text/fixtures/all_blocks_yellow.txt b/tests/unit/messages/formats/text/fixtures/all_blocks_yellow.txt new file mode 100644 index 000000000..9a7c72685 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/all_blocks_yellow.txt @@ -0,0 +1,10 @@ +Main Header +Normal text Bold text Italic text +- First bullet point +- Second bullet point +✅ Check item +Status: Passed | Tags: test, example +Show Details +🔎 Details Section +Here's some content with a link (https://example.com) +user1 select 1 diff --git a/tests/unit/messages/formats/text/fixtures/all_icons.txt b/tests/unit/messages/formats/text/fixtures/all_icons.txt new file mode 100644 index 000000000..fd9bd4710 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/all_icons.txt @@ -0,0 +1 @@ +RED_TRIANGLE đŸ”ē X ❌ WARNING âš ī¸ EXCLAMATION ❗ CHECK ✅ MAGNIFYING_GLASS 🔎 HAMMER_AND_WRENCH đŸ› ī¸ POLICE_LIGHT 🚨 INFO â„šī¸ EYE đŸ‘ī¸ GEAR âš™ī¸ BELL 🔔 GEM 💎 SPARKLES ✨ diff --git a/tests/unit/messages/formats/text/fixtures/bullet_list.txt b/tests/unit/messages/formats/text/fixtures/bullet_list.txt new file mode 100644 index 000000000..421a20f0b --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/bullet_list.txt @@ -0,0 +1,4 @@ +- First bullet +- Second bullet +✅ Check item 1 +✅ Check item 2 diff --git a/tests/unit/messages/formats/text/fixtures/code_block_200.txt b/tests/unit/messages/formats/text/fixtures/code_block_200.txt new file mode 100644 index 000000000..47e751544 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/code_block_200.txt @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c diff --git a/tests/unit/messages/formats/text/fixtures/code_block_50.txt b/tests/unit/messages/formats/text/fixtures/code_block_50.txt new file mode 100644 index 000000000..6ef9570bc --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/code_block_50.txt @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing diff --git a/tests/unit/messages/formats/text/fixtures/code_block_500.txt b/tests/unit/messages/formats/text/fixtures/code_block_500.txt new file mode 100644 index 000000000..5f7389513 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/code_block_500.txt @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adip diff --git a/tests/unit/messages/formats/text/fixtures/colored_header.txt b/tests/unit/messages/formats/text/fixtures/colored_header.txt new file mode 100644 index 000000000..3d526bebb --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/colored_header.txt @@ -0,0 +1 @@ +Test Header diff --git a/tests/unit/messages/formats/text/fixtures/divider_blocks.txt b/tests/unit/messages/formats/text/fixtures/divider_blocks.txt new file mode 100644 index 000000000..b287fcada --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/divider_blocks.txt @@ -0,0 +1,3 @@ +First Section +-------------------------------- +Second Section diff --git a/tests/unit/messages/formats/text/fixtures/expandable_block.txt b/tests/unit/messages/formats/text/fixtures/expandable_block.txt new file mode 100644 index 000000000..fe9bc6afd --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/expandable_block.txt @@ -0,0 +1,2 @@ +Show More +Hidden content diff --git a/tests/unit/messages/formats/text/fixtures/fact_list.txt b/tests/unit/messages/formats/text/fixtures/fact_list.txt new file mode 100644 index 000000000..e84d43d86 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/fact_list.txt @@ -0,0 +1 @@ +Status: Passed diff --git a/tests/unit/messages/formats/text/fixtures/nested_expandable.txt b/tests/unit/messages/formats/text/fixtures/nested_expandable.txt new file mode 100644 index 000000000..767db5567 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/nested_expandable.txt @@ -0,0 +1,5 @@ +Outer Block +🔎 Title with Icon +Some content with a link (https://example.com) +Inner Block +Inner content diff --git a/tests/unit/messages/formats/text/fixtures/simple_header.txt b/tests/unit/messages/formats/text/fixtures/simple_header.txt new file mode 100644 index 000000000..3d526bebb --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/simple_header.txt @@ -0,0 +1 @@ +Test Header diff --git a/tests/unit/messages/formats/text/fixtures/table_block_200_1.txt b/tests/unit/messages/formats/text/fixtures/table_block_200_1.txt new file mode 100644 index 000000000..29a6c6d0c --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_200_1.txt @@ -0,0 +1,7 @@ +Column 0 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c diff --git a/tests/unit/messages/formats/text/fixtures/table_block_200_2.txt b/tests/unit/messages/formats/text/fixtures/table_block_200_2.txt new file mode 100644 index 000000000..cbc13c014 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_200_2.txt @@ -0,0 +1,7 @@ +Column 0 Column 1 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c diff --git a/tests/unit/messages/formats/text/fixtures/table_block_200_3.txt b/tests/unit/messages/formats/text/fixtures/table_block_200_3.txt new file mode 100644 index 000000000..a407146e2 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_200_3.txt @@ -0,0 +1,7 @@ +Column 0 Column 1 Column 2 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c diff --git a/tests/unit/messages/formats/text/fixtures/table_block_200_4.txt b/tests/unit/messages/formats/text/fixtures/table_block_200_4.txt new file mode 100644 index 000000000..b87df5d2b --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_200_4.txt @@ -0,0 +1,7 @@ +Column 0 Column 1 Column 2 Column 3 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c diff --git a/tests/unit/messages/formats/text/fixtures/table_block_200_5.txt b/tests/unit/messages/formats/text/fixtures/table_block_200_5.txt new file mode 100644 index 000000000..e6a3a8a50 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_200_5.txt @@ -0,0 +1,7 @@ +Column 0 Column 1 Column 2 Column 3 Column 4 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c diff --git a/tests/unit/messages/formats/text/fixtures/table_block_30_1.txt b/tests/unit/messages/formats/text/fixtures/table_block_30_1.txt new file mode 100644 index 000000000..84b7603f7 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_30_1.txt @@ -0,0 +1,7 @@ +Column 0 +------------------------------ +Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co diff --git a/tests/unit/messages/formats/text/fixtures/table_block_30_2.txt b/tests/unit/messages/formats/text/fixtures/table_block_30_2.txt new file mode 100644 index 000000000..612917feb --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_30_2.txt @@ -0,0 +1,7 @@ +Column 0 Column 1 +------------------------------ ------------------------------ +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co diff --git a/tests/unit/messages/formats/text/fixtures/table_block_30_3.txt b/tests/unit/messages/formats/text/fixtures/table_block_30_3.txt new file mode 100644 index 000000000..db6a9c5d9 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_30_3.txt @@ -0,0 +1,7 @@ +Column 0 Column 1 Column 2 +------------------------------ ------------------------------ ------------------------------ +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co diff --git a/tests/unit/messages/formats/text/fixtures/table_block_30_4.txt b/tests/unit/messages/formats/text/fixtures/table_block_30_4.txt new file mode 100644 index 000000000..a7a139528 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_30_4.txt @@ -0,0 +1,7 @@ +Column 0 Column 1 Column 2 Column 3 +------------------------------ ------------------------------ ------------------------------ ------------------------------ +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co diff --git a/tests/unit/messages/formats/text/fixtures/table_block_30_5.txt b/tests/unit/messages/formats/text/fixtures/table_block_30_5.txt new file mode 100644 index 000000000..37ae9d413 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_30_5.txt @@ -0,0 +1,7 @@ +Column 0 Column 1 Column 2 Column 3 Column 4 +------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co +Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co diff --git a/tests/unit/messages/formats/text/fixtures/table_block_8_1.txt b/tests/unit/messages/formats/text/fixtures/table_block_8_1.txt new file mode 100644 index 000000000..24d9fac51 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_8_1.txt @@ -0,0 +1,7 @@ +Column 0 +---------- +Lorem ip +Lorem ip +Lorem ip +Lorem ip +Lorem ip diff --git a/tests/unit/messages/formats/text/fixtures/table_block_8_2.txt b/tests/unit/messages/formats/text/fixtures/table_block_8_2.txt new file mode 100644 index 000000000..05fb30da3 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_8_2.txt @@ -0,0 +1,7 @@ +Column 0 Column 1 +---------- ---------- +Lorem ip Lorem ip +Lorem ip Lorem ip +Lorem ip Lorem ip +Lorem ip Lorem ip +Lorem ip Lorem ip diff --git a/tests/unit/messages/formats/text/fixtures/table_block_8_3.txt b/tests/unit/messages/formats/text/fixtures/table_block_8_3.txt new file mode 100644 index 000000000..930fd7766 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_8_3.txt @@ -0,0 +1,7 @@ +Column 0 Column 1 Column 2 +---------- ---------- ---------- +Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip diff --git a/tests/unit/messages/formats/text/fixtures/table_block_8_4.txt b/tests/unit/messages/formats/text/fixtures/table_block_8_4.txt new file mode 100644 index 000000000..85e9b98ea --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_8_4.txt @@ -0,0 +1,7 @@ +Column 0 Column 1 Column 2 Column 3 +---------- ---------- ---------- ---------- +Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip diff --git a/tests/unit/messages/formats/text/fixtures/table_block_8_5.txt b/tests/unit/messages/formats/text/fixtures/table_block_8_5.txt new file mode 100644 index 000000000..038fcbac7 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/table_block_8_5.txt @@ -0,0 +1,7 @@ +Column 0 Column 1 Column 2 Column 3 Column 4 +---------- ---------- ---------- ---------- ---------- +Lorem ip Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip Lorem ip +Lorem ip Lorem ip Lorem ip Lorem ip Lorem ip diff --git a/tests/unit/messages/formats/text/fixtures/text_length_1000.txt b/tests/unit/messages/formats/text/fixtures/text_length_1000.txt new file mode 100644 index 000000000..f7b26edb1 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/text_length_1000.txt @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, con diff --git a/tests/unit/messages/formats/text/fixtures/text_length_200.txt b/tests/unit/messages/formats/text/fixtures/text_length_200.txt new file mode 100644 index 000000000..47e751544 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/text_length_200.txt @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, c diff --git a/tests/unit/messages/formats/text/fixtures/text_length_50.txt b/tests/unit/messages/formats/text/fixtures/text_length_50.txt new file mode 100644 index 000000000..6ef9570bc --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/text_length_50.txt @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing diff --git a/tests/unit/messages/formats/text/fixtures/text_length_500.txt b/tests/unit/messages/formats/text/fixtures/text_length_500.txt new file mode 100644 index 000000000..5f7389513 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/text_length_500.txt @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adip diff --git a/tests/unit/messages/formats/text/fixtures/text_styles.txt b/tests/unit/messages/formats/text/fixtures/text_styles.txt new file mode 100644 index 000000000..fd0f52179 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/text_styles.txt @@ -0,0 +1 @@ +Normal text Bold text Italic text diff --git a/tests/unit/messages/formats/text/fixtures/whitespace_block.txt b/tests/unit/messages/formats/text/fixtures/whitespace_block.txt new file mode 100644 index 000000000..382a96ed6 --- /dev/null +++ b/tests/unit/messages/formats/text/fixtures/whitespace_block.txt @@ -0,0 +1,2 @@ +This should not be indented + This should be indented diff --git a/tests/unit/messages/formats/text/test_text.py b/tests/unit/messages/formats/text/test_text.py new file mode 100644 index 000000000..b31833961 --- /dev/null +++ b/tests/unit/messages/formats/text/test_text.py @@ -0,0 +1,19 @@ +from pathlib import Path + +from elementary.messages.formats.text import format_text +from elementary.messages.message_body import MessageBody +from tests.unit.messages.formats.base_test_format import BaseTestFormat +from tests.unit.messages.utils import assert_expected_text, get_expected_file_path + +FIXTURES_DIR = Path(__file__).parent / "fixtures" + + +class TestText(BaseTestFormat[str]): + def format(self, message_body: MessageBody) -> str: + return format_text(message_body) + + def get_expected_file_path(self, name: str) -> Path: + return get_expected_file_path(FIXTURES_DIR, f"{name}.txt") + + def assert_expected_value(self, result: str, expected_file_path: Path) -> None: + assert_expected_text(result, expected_file_path) diff --git a/tests/unit/messages/utils.py b/tests/unit/messages/utils.py index 21e96cae0..1425016c7 100644 --- a/tests/unit/messages/utils.py +++ b/tests/unit/messages/utils.py @@ -14,10 +14,14 @@ OVERRIDE = os.getenv("OVERRIDE", "false").lower() == "true" -def get_expected_json_path(fixture_dir: Path, filename: str) -> Path: +def get_expected_file_path(fixture_dir: Path, filename: str) -> Path: path = fixture_dir / filename if not path.exists(): - path.write_text(json.dumps({})) + path.parent.mkdir(parents=True, exist_ok=True) + if filename.endswith(".json"): + path.write_text(json.dumps({})) + else: + path.write_text("") return path @@ -37,3 +41,15 @@ def assert_expected_json(result: dict, expected_json_path: Path) -> None: f"\nDiff: \n{diff.to_json(indent=2)}\n" ) raise AssertionError(error_message) from e + + +def assert_expected_text(result: str, expected_file_path: Path) -> None: + expected = expected_file_path.read_text() + if OVERRIDE: + logger.warning(f"Overriding expected text file: {expected_file_path}") + if not result.endswith("\n"): + # for code quality, we want to ensure that all files end with a newline + result += "\n" + expected_file_path.write_text(result) + else: + assert result.strip() == expected.strip()