diff --git a/dev-requirements.txt b/dev-requirements.txt index 299f10888..3f2b022dc 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -18,3 +18,4 @@ types-PyYAML types-setuptools types-retry types-decorator +types-tabulate diff --git a/elementary/messages/blocks.py b/elementary/messages/blocks.py index 34afff53c..a4ad8eda6 100644 --- a/elementary/messages/blocks.py +++ b/elementary/messages/blocks.py @@ -1,5 +1,5 @@ from enum import Enum -from typing import List, Optional, Union +from typing import Any, Dict, List, Optional, Union from pydantic import BaseModel from typing_extensions import Literal @@ -94,6 +94,21 @@ class FactListBlock(BaseBlock): facts: List[FactBlock] +class TableBlock(BaseBlock): + type: Literal["table"] = "table" + headers: List[str] + rows: List[List[Any]] + + @classmethod + def from_dicts(cls, data: List[Dict[str, Any]]) -> "TableBlock": + if not data: + return cls(headers=[], rows=[]) + + headers = list(data[0].keys()) + rows = [[row.get(header) for header in headers] for row in data] + return cls(headers=headers, rows=rows) + + class ExpandableBlock(BaseBlock): type: Literal["expandable"] = "expandable" title: str @@ -107,6 +122,7 @@ class ExpandableBlock(BaseBlock): DividerBlock, LinesBlock, FactListBlock, + TableBlock, "ExpandableBlock", ] diff --git a/elementary/messages/formats/adaptive_cards.py b/elementary/messages/formats/adaptive_cards.py index c58c95638..6d5837382 100644 --- a/elementary/messages/formats/adaptive_cards.py +++ b/elementary/messages/formats/adaptive_cards.py @@ -13,6 +13,7 @@ LineBlock, LinesBlock, LinkBlock, + TableBlock, TextBlock, TextStyle, ) @@ -118,6 +119,31 @@ def format_fact_list_block(block: FactListBlock) -> Dict[str, Any]: } +def format_table_block(block: TableBlock) -> Dict[str, Any]: + return { + "type": "Table", + "columns": [{"width": 1} for _ in block.headers], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": str(cell), + } + ], + } + for cell in row + ], + } + for row in [block.headers, *block.rows] + ], + } + + def format_message_block( block: MessageBlock, color: Optional[Color] = None ) -> List[Dict[str, Any]]: @@ -131,6 +157,8 @@ def format_message_block( return [format_fact_list_block(block)] elif isinstance(block, ExpandableBlock): return format_expandable_block(block) + elif isinstance(block, TableBlock): + return [format_table_block(block)] else: raise ValueError(f"Unsupported message block type: {type(block)}") diff --git a/elementary/messages/formats/block_kit.py b/elementary/messages/formats/block_kit.py index 7a1bae456..9765aeeeb 100644 --- a/elementary/messages/formats/block_kit.py +++ b/elementary/messages/formats/block_kit.py @@ -1,6 +1,8 @@ +import json from typing import Any, Dict, List, Optional, Tuple from slack_sdk.models import blocks as slack_blocks +from tabulate import tabulate from elementary.messages.blocks import ( CodeBlock, @@ -15,6 +17,7 @@ LineBlock, LinesBlock, LinkBlock, + TableBlock, TextBlock, TextStyle, ) @@ -31,6 +34,7 @@ class BlockKitBuilder: _SECONDARY_FACT_CHUNK_SIZE = 2 _LONGEST_MARKDOWN_SUFFIX_LEN = 3 # length of markdown's code suffix (```) + _MAX_CELL_LENGTH_BY_COLUMN_COUNT = {4: 11, 3: 14, 2: 22, 1: 40, 0: 40} def __init__(self) -> None: self._blocks: List[dict] = [] @@ -63,6 +67,13 @@ def _format_line_block_text(self, block: LineBlock) -> str: [self._format_inline_block(inline) for inline in block.inlines] ) + def _format_table_cell(self, cell_value: Any, column_count: int) -> str: + value = str(cell_value) + max_cell_length = self._MAX_CELL_LENGTH_BY_COLUMN_COUNT[column_count] + if len(value) > max_cell_length: + return value[: max_cell_length - 2] + ".." + return value + def _format_markdown_section_text(self, text: str) -> dict: if len(text) > slack_blocks.SectionBlock.text_max_length: text = ( @@ -157,6 +168,25 @@ def _add_divider_block(self, block: DividerBlock) -> None: self._add_block({"type": "divider"}) self._is_divided = True + def _add_table_block(self, block: TableBlock) -> None: + column_count = len(block.headers) + if column_count not in self._MAX_CELL_LENGTH_BY_COLUMN_COUNT: + dicts = [ + {header: cell for header, cell in zip(block.headers, row)} + for row in block.rows + ] + table_text = json.dumps(dicts, indent=2) + else: + new_rows = [ + [self._format_table_cell(cell, column_count) for cell in row] + for row in block.rows + ] + new_headers = [ + self._format_table_cell(cell, column_count) for cell in block.headers + ] + table_text = tabulate(new_rows, headers=new_headers, tablefmt="simple") + self._add_block(self._format_markdown_section(f"```{table_text}```")) + def _add_expandable_block(self, block: ExpandableBlock) -> None: """ Expandable blocks are not supported in Slack Block Kit. @@ -183,6 +213,8 @@ def _add_message_block(self, block: MessageBlock) -> None: self._add_divider_block(block) elif isinstance(block, ExpandableBlock): self._add_expandable_block(block) + elif isinstance(block, TableBlock): + self._add_table_block(block) else: raise ValueError(f"Unsupported message block type: {type(block)}") diff --git a/elementary/messages/message_body.py b/elementary/messages/message_body.py index b41a76208..69cccde70 100644 --- a/elementary/messages/message_body.py +++ b/elementary/messages/message_body.py @@ -10,6 +10,7 @@ FactListBlock, HeaderBlock, LinesBlock, + TableBlock, ) @@ -26,6 +27,7 @@ class Color(Enum): LinesBlock, FactListBlock, ExpandableBlock, + TableBlock, ] diff --git a/elementary/monitor/alerts/alert_messages/builder.py b/elementary/monitor/alerts/alert_messages/builder.py index 1865413bb..e78096f39 100644 --- a/elementary/monitor/alerts/alert_messages/builder.py +++ b/elementary/monitor/alerts/alert_messages/builder.py @@ -24,6 +24,7 @@ LineBlock, LinesBlock, LinkBlock, + TableBlock, TextBlock, TextStyle, ) @@ -284,9 +285,14 @@ def _get_result_blocks( ] ) ) - result_blocks.append( - JsonCodeBlock(content=result_sample), - ) + if isinstance(result_sample, list) and len(result_sample[0].keys()) <= 4: + result_blocks.append( + TableBlock.from_dicts(result_sample), + ) + else: + result_blocks.append( + JsonCodeBlock(content=result_sample), + ) if result_query: result_blocks.append( LinesBlock( diff --git a/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-error_link-True_description-True_tags-True_owners-True_table-True_error-True_sample-True_env-True.json b/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-error_link-True_description-True_tags-True_owners-True_table-True_error-True_sample-True_env-True.json index c65fa48d3..c1990bafe 100644 --- a/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-error_link-True_description-True_tags-True_owners-True_table-True_error-True_sample-True_env-True.json +++ b/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-error_link-True_description-True_tags-True_owners-True_table-True_error-True_sample-True_env-True.json @@ -117,16 +117,59 @@ "wrap": true }, { - "type": "Container", - "style": "emphasis", - "items": [ + "type": "Table", + "columns": [ { - "type": "RichTextBlock", - "inlines": [ + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ { - "type": "TextRun", - "text": "{\n \"column1\": \"value1\",\n \"column2\": \"value2\"\n}", - "fontType": "Monospace" + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "column1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "column2" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "value1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "value2" + } + ] } ] } diff --git a/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-fail_link-True_description-True_tags-True_owners-True_table-True_error-True_sample-True_env-False.json b/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-fail_link-True_description-True_tags-True_owners-True_table-True_error-True_sample-True_env-False.json index 72d30886c..9af9bbd6d 100644 --- a/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-fail_link-True_description-True_tags-True_owners-True_table-True_error-True_sample-True_env-False.json +++ b/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-fail_link-True_description-True_tags-True_owners-True_table-True_error-True_sample-True_env-False.json @@ -117,16 +117,59 @@ "wrap": true }, { - "type": "Container", - "style": "emphasis", - "items": [ + "type": "Table", + "columns": [ { - "type": "RichTextBlock", - "inlines": [ + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ { - "type": "TextRun", - "text": "{\n \"column1\": \"value1\",\n \"column2\": \"value2\"\n}", - "fontType": "Monospace" + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "column1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "column2" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "value1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "value2" + } + ] } ] } diff --git a/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-warn_link-True_description-False_tags-True_owners-False_table-True_error-False_sample-True_env-False.json b/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-warn_link-True_description-False_tags-True_owners-False_table-True_error-False_sample-True_env-False.json index c4c212a14..aeb9c70f4 100644 --- a/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-warn_link-True_description-False_tags-True_owners-False_table-True_error-False_sample-True_env-False.json +++ b/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-warn_link-True_description-False_tags-True_owners-False_table-True_error-False_sample-True_env-False.json @@ -92,16 +92,59 @@ "wrap": true }, { - "type": "Container", - "style": "emphasis", - "items": [ + "type": "Table", + "columns": [ { - "type": "RichTextBlock", - "inlines": [ + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "column1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "column2" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "value1" + } + ] + }, { - "type": "TextRun", - "text": "{\n \"column1\": \"value1\",\n \"column2\": \"value2\"\n}", - "fontType": "Monospace" + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "value2" + } + ] } ] } diff --git a/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-warn_link-True_description-True_tags-True_owners-True_table-True_error-True_sample-True_env-True.json b/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-warn_link-True_description-True_tags-True_owners-True_table-True_error-True_sample-True_env-True.json index 2416b232e..839396d72 100644 --- a/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-warn_link-True_description-True_tags-True_owners-True_table-True_error-True_sample-True_env-True.json +++ b/tests/unit/alerts/alert_messages/fixtures/adaptive_card_dbt_test_alert_status-warn_link-True_description-True_tags-True_owners-True_table-True_error-True_sample-True_env-True.json @@ -117,16 +117,59 @@ "wrap": true }, { - "type": "Container", - "style": "emphasis", - "items": [ + "type": "Table", + "columns": [ { - "type": "RichTextBlock", - "inlines": [ + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ { - "type": "TextRun", - "text": "{\n \"column1\": \"value1\",\n \"column2\": \"value2\"\n}", - "fontType": "Monospace" + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "column1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "column2" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "value1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "value2" + } + ] } ] } diff --git a/tests/unit/alerts/alert_messages/test_dbt_test_alert_message.py b/tests/unit/alerts/alert_messages/test_dbt_test_alert_message.py index 9f72bf0c1..34947f6d5 100644 --- a/tests/unit/alerts/alert_messages/test_dbt_test_alert_message.py +++ b/tests/unit/alerts/alert_messages/test_dbt_test_alert_message.py @@ -78,7 +78,7 @@ def test_get_dbt_test_alert_message_body( test_description="Test description" if has_description else None, error_message="Test error message" if has_error else None, test_rows_sample=( - {"column1": "value1", "column2": "value2"} if has_sample else None + [{"column1": "value1", "column2": "value2"}] if has_sample else None ), test_results_query=None, test_params=None, diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_1.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_1.json new file mode 100644 index 000000000..9e62d3462 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_1.json @@ -0,0 +1,106 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_2.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_2.json new file mode 100644 index 000000000..d4713a422 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_2.json @@ -0,0 +1,163 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 1" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_3.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_3.json new file mode 100644 index 000000000..2079b7cd9 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_3.json @@ -0,0 +1,220 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 2" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_4.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_4.json new file mode 100644 index 000000000..a363becb1 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_4.json @@ -0,0 +1,277 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 2" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 3" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_5.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_5.json new file mode 100644 index 000000000..dde2310c5 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_200_5.json @@ -0,0 +1,334 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 2" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 3" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 4" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "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" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_1.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_1.json new file mode 100644 index 000000000..082c62f92 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_1.json @@ -0,0 +1,106 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_2.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_2.json new file mode 100644 index 000000000..76b578a53 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_2.json @@ -0,0 +1,163 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 1" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_3.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_3.json new file mode 100644 index 000000000..fc1334219 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_3.json @@ -0,0 +1,220 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 2" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_4.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_4.json new file mode 100644 index 000000000..69dba0180 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_4.json @@ -0,0 +1,277 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 2" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 3" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_5.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_5.json new file mode 100644 index 000000000..80e32b148 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_30_5.json @@ -0,0 +1,334 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 2" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 3" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 4" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ipsum dolor sit amet, co" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_1.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_1.json new file mode 100644 index 000000000..d0d880097 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_1.json @@ -0,0 +1,106 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_2.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_2.json new file mode 100644 index 000000000..9f8f074cd --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_2.json @@ -0,0 +1,163 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 1" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_3.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_3.json new file mode 100644 index 000000000..621b01587 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_3.json @@ -0,0 +1,220 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 2" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_4.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_4.json new file mode 100644 index 000000000..2afa3f5f8 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_4.json @@ -0,0 +1,277 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 2" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 3" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_5.json b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_5.json new file mode 100644 index 000000000..803ef2e28 --- /dev/null +++ b/tests/unit/messages/formats/adaptive_cards/fixtures/table_block_8_5.json @@ -0,0 +1,334 @@ +{ + "type": "AdaptiveCard", + "body": [ + { + "type": "Container", + "separator": true, + "items": [ + { + "type": "Table", + "columns": [ + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + }, + { + "width": 1 + } + ], + "rows": [ + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 0" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 1" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 2" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 3" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Column 4" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + }, + { + "type": "TableRow", + "cells": [ + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + }, + { + "type": "TableCell", + "items": [ + { + "type": "TextBlock", + "text": "Lorem ip" + } + ] + } + ] + } + ] + } + ] + } + ], + "version": "1.5" +} diff --git a/tests/unit/messages/formats/base_test_format.py b/tests/unit/messages/formats/base_test_format.py index ccc3eeb3f..aaaa8109b 100644 --- a/tests/unit/messages/formats/base_test_format.py +++ b/tests/unit/messages/formats/base_test_format.py @@ -17,6 +17,7 @@ LineBlock, LinesBlock, LinkBlock, + TableBlock, TextBlock, TextStyle, ) @@ -325,3 +326,43 @@ def test_format_message_body_text_length(self, text_length: int): expected_file_path = self.get_expected_file_path(f"text_length_{text_length}") result = self.format(message_body) self.assert_expected_value(result, expected_file_path) + + @pytest.mark.parametrize( + "text_length,column_count", + [ + pytest.param(8, 5, id="short_text_5_columns"), + pytest.param(30, 5, id="long_text_5_columns"), + pytest.param(200, 5, id="very_long_text_5_columns"), + pytest.param(8, 4, id="short_text_4_columns"), + pytest.param(30, 4, id="long_text_4_columns"), + pytest.param(200, 4, id="very_long_text_4_columns"), + pytest.param(8, 3, id="short_text_3_columns"), + pytest.param(30, 3, id="long_text_3_columns"), + pytest.param(200, 3, id="very_long_text_3_columns"), + pytest.param(8, 2, id="short_text_2_columns"), + pytest.param(30, 2, id="long_text_2_columns"), + pytest.param(200, 2, id="very_long_text_2_columns"), + pytest.param(8, 1, id="short_text_1_column"), + pytest.param(30, 1, id="long_text_1_column"), + pytest.param(200, 1, id="very_long_text_1_column"), + ], + ) + def test_format_table_block(self, text_length: int, column_count: int): + lorem_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " * ( + (text_length + 49) // 50 + ) + lorem_text = lorem_text[:text_length] + + row_count = 5 + + table_block = TableBlock( + headers=[f"Column {i}" for i in range(column_count)], + rows=[[lorem_text for _ in range(column_count)] for _ in range(row_count)], + ) + + message_body = MessageBody(blocks=[table_block]) + expected_file_path = self.get_expected_file_path( + f"table_block_{text_length}_{column_count}" + ) + result = self.format(message_body) + self.assert_expected_value(result, expected_file_path) diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_200_1.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_200_1.json new file mode 100644 index 000000000..0ffbc88b2 --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_200_1.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```Column 0\n----------------------------------------\nLorem ipsum dolor sit amet, consectetu..\nLorem ipsum dolor sit amet, consectetu..\nLorem ipsum dolor sit amet, consectetu..\nLorem ipsum dolor sit amet, consectetu..\nLorem ipsum dolor sit amet, consectetu..```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_200_2.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_200_2.json new file mode 100644 index 000000000..6ad6af65e --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_200_2.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```Column 0 Column 1\n---------------------- ----------------------\nLorem ipsum dolor si.. Lorem ipsum dolor si..\nLorem ipsum dolor si.. Lorem ipsum dolor si..\nLorem ipsum dolor si.. Lorem ipsum dolor si..\nLorem ipsum dolor si.. Lorem ipsum dolor si..\nLorem ipsum dolor si.. Lorem ipsum dolor si..```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_200_3.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_200_3.json new file mode 100644 index 000000000..9253322f7 --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_200_3.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```Column 0 Column 1 Column 2\n-------------- -------------- --------------\nLorem ipsum .. Lorem ipsum .. Lorem ipsum ..\nLorem ipsum .. Lorem ipsum .. Lorem ipsum ..\nLorem ipsum .. Lorem ipsum .. Lorem ipsum ..\nLorem ipsum .. Lorem ipsum .. Lorem ipsum ..\nLorem ipsum .. Lorem ipsum .. Lorem ipsum ..```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_200_4.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_200_4.json new file mode 100644 index 000000000..94f2cb148 --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_200_4.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```Column 0 Column 1 Column 2 Column 3\n----------- ----------- ----------- -----------\nLorem ips.. Lorem ips.. Lorem ips.. Lorem ips..\nLorem ips.. Lorem ips.. Lorem ips.. Lorem ips..\nLorem ips.. Lorem ips.. Lorem ips.. Lorem ips..\nLorem ips.. Lorem ips.. Lorem ips.. Lorem ips..\nLorem ips.. Lorem ips.. Lorem ips.. Lorem ips..```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_200_5.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_200_5.json new file mode 100644 index 000000000..a9e7416dc --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_200_5.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```[\n {\n \"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\",\n \"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\",\n \"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\",\n \"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\",\n \"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\"\n },\n {\n \"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\",\n \"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\",\n \"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\",\n \"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\",\n \"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\"\n },\n {\n \"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\",\n \"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\",\n \"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\",\n \"Column 3\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consect...```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_30_1.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_30_1.json new file mode 100644 index 000000000..fbed4f006 --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_30_1.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```Column 0\n------------------------------\nLorem ipsum dolor sit amet, co\nLorem ipsum dolor sit amet, co\nLorem ipsum dolor sit amet, co\nLorem ipsum dolor sit amet, co\nLorem ipsum dolor sit amet, co```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_30_2.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_30_2.json new file mode 100644 index 000000000..6ad6af65e --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_30_2.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```Column 0 Column 1\n---------------------- ----------------------\nLorem ipsum dolor si.. Lorem ipsum dolor si..\nLorem ipsum dolor si.. Lorem ipsum dolor si..\nLorem ipsum dolor si.. Lorem ipsum dolor si..\nLorem ipsum dolor si.. Lorem ipsum dolor si..\nLorem ipsum dolor si.. Lorem ipsum dolor si..```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_30_3.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_30_3.json new file mode 100644 index 000000000..9253322f7 --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_30_3.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```Column 0 Column 1 Column 2\n-------------- -------------- --------------\nLorem ipsum .. Lorem ipsum .. Lorem ipsum ..\nLorem ipsum .. Lorem ipsum .. Lorem ipsum ..\nLorem ipsum .. Lorem ipsum .. Lorem ipsum ..\nLorem ipsum .. Lorem ipsum .. Lorem ipsum ..\nLorem ipsum .. Lorem ipsum .. Lorem ipsum ..```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_30_4.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_30_4.json new file mode 100644 index 000000000..94f2cb148 --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_30_4.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```Column 0 Column 1 Column 2 Column 3\n----------- ----------- ----------- -----------\nLorem ips.. Lorem ips.. Lorem ips.. Lorem ips..\nLorem ips.. Lorem ips.. Lorem ips.. Lorem ips..\nLorem ips.. Lorem ips.. Lorem ips.. Lorem ips..\nLorem ips.. Lorem ips.. Lorem ips.. Lorem ips..\nLorem ips.. Lorem ips.. Lorem ips.. Lorem ips..```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_30_5.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_30_5.json new file mode 100644 index 000000000..fd021cbd2 --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_30_5.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```[\n {\n \"Column 0\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 1\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 2\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 3\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 4\": \"Lorem ipsum dolor sit amet, co\"\n },\n {\n \"Column 0\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 1\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 2\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 3\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 4\": \"Lorem ipsum dolor sit amet, co\"\n },\n {\n \"Column 0\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 1\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 2\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 3\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 4\": \"Lorem ipsum dolor sit amet, co\"\n },\n {\n \"Column 0\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 1\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 2\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 3\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 4\": \"Lorem ipsum dolor sit amet, co\"\n },\n {\n \"Column 0\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 1\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 2\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 3\": \"Lorem ipsum dolor sit amet, co\",\n \"Column 4\": \"Lorem ipsum dolor sit amet, co\"\n }\n]```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_8_1.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_8_1.json new file mode 100644 index 000000000..9323cea71 --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_8_1.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```Column 0\n----------\nLorem ip\nLorem ip\nLorem ip\nLorem ip\nLorem ip```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_8_2.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_8_2.json new file mode 100644 index 000000000..1fe46a992 --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_8_2.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```Column 0 Column 1\n---------- ----------\nLorem ip Lorem ip\nLorem ip Lorem ip\nLorem ip Lorem ip\nLorem ip Lorem ip\nLorem ip Lorem ip```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_8_3.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_8_3.json new file mode 100644 index 000000000..3d65ebd40 --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_8_3.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```Column 0 Column 1 Column 2\n---------- ---------- ----------\nLorem ip Lorem ip Lorem ip\nLorem ip Lorem ip Lorem ip\nLorem ip Lorem ip Lorem ip\nLorem ip Lorem ip Lorem ip\nLorem ip Lorem ip Lorem ip```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_8_4.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_8_4.json new file mode 100644 index 000000000..1617e03a0 --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_8_4.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```Column 0 Column 1 Column 2 Column 3\n---------- ---------- ---------- ----------\nLorem ip Lorem ip Lorem ip Lorem ip\nLorem ip Lorem ip Lorem ip Lorem ip\nLorem ip Lorem ip Lorem ip Lorem ip\nLorem ip Lorem ip Lorem ip Lorem ip\nLorem ip Lorem ip Lorem ip Lorem ip```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +} diff --git a/tests/unit/messages/formats/block_kit/fixtures/table_block_8_5.json b/tests/unit/messages/formats/block_kit/fixtures/table_block_8_5.json new file mode 100644 index 000000000..2cceaa205 --- /dev/null +++ b/tests/unit/messages/formats/block_kit/fixtures/table_block_8_5.json @@ -0,0 +1,16 @@ +{ + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "```[\n {\n \"Column 0\": \"Lorem ip\",\n \"Column 1\": \"Lorem ip\",\n \"Column 2\": \"Lorem ip\",\n \"Column 3\": \"Lorem ip\",\n \"Column 4\": \"Lorem ip\"\n },\n {\n \"Column 0\": \"Lorem ip\",\n \"Column 1\": \"Lorem ip\",\n \"Column 2\": \"Lorem ip\",\n \"Column 3\": \"Lorem ip\",\n \"Column 4\": \"Lorem ip\"\n },\n {\n \"Column 0\": \"Lorem ip\",\n \"Column 1\": \"Lorem ip\",\n \"Column 2\": \"Lorem ip\",\n \"Column 3\": \"Lorem ip\",\n \"Column 4\": \"Lorem ip\"\n },\n {\n \"Column 0\": \"Lorem ip\",\n \"Column 1\": \"Lorem ip\",\n \"Column 2\": \"Lorem ip\",\n \"Column 3\": \"Lorem ip\",\n \"Column 4\": \"Lorem ip\"\n },\n {\n \"Column 0\": \"Lorem ip\",\n \"Column 1\": \"Lorem ip\",\n \"Column 2\": \"Lorem ip\",\n \"Column 3\": \"Lorem ip\",\n \"Column 4\": \"Lorem ip\"\n }\n]```" + } + } + ], + "attachments": [ + { + "blocks": [] + } + ] +}