Skip to content

Commit 63ff378

Browse files
KharchenkoDmitriyseratch
authored andcommitted
Fix #903 by parsing in ActionsBlock
1 parent 5340ee3 commit 63ff378

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

slack_sdk/models/blocks/blocks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ def __init__(
243243
super().__init__(type=self.type, block_id=block_id)
244244
show_unknown_key_warning(self, others)
245245

246-
self.elements = elements
246+
self.elements = BlockElement.parse_all(elements)
247247

248248
@JsonValidator(f"elements attribute cannot exceed {elements_max_length} elements")
249249
def _validate_elements_length(self):

tests/slack_sdk/web/classes/test_blocks.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,14 @@
1313
Block,
1414
CallBlock,
1515
ButtonElement,
16+
StaticSelectElement,
17+
OverflowMenuElement,
1618
ImageElement,
1719
LinkButtonElement,
1820
PlainTextObject,
1921
MarkdownTextObject,
2022
HeaderBlock,
23+
Option,
2124
)
2225
from . import STRING_3001_CHARS
2326

@@ -404,6 +407,26 @@ def test_json(self):
404407
with self.assertRaises(SlackObjectFormationError):
405408
ActionsBlock(elements=self.elements * 3).to_dict()
406409

410+
def test_element_parsing(self):
411+
elements = [
412+
ButtonElement(text="Click me", action_id="reg_button", value="1"),
413+
StaticSelectElement(options=[Option(value='SelectOption')]),
414+
ImageElement(image_url='url', alt_text='alt-text'),
415+
OverflowMenuElement(options=[Option(value='MenuOption1'), Option(value='MenuOption2')]),
416+
]
417+
input = {
418+
"type": "actions",
419+
"block_id": "actionblock789",
420+
"elements": [
421+
e.to_dict() for e in elements
422+
],
423+
}
424+
parsed_elements = ActionsBlock(**input).elements
425+
self.assertEqual(len(elements), len(parsed_elements))
426+
for original, parsed in zip(elements, parsed_elements):
427+
self.assertEqual(type(original), type(parsed))
428+
self.assertDictEqual(original.to_dict(), parsed.to_dict())
429+
407430

408431
# ----------------------------------------------
409432
# Context

0 commit comments

Comments
 (0)