11import unittest
2- from slack_sdk .web .internal_utils import _build_unexpected_body_error_message
2+ from typing import Dict , Sequence , Union
3+
4+ import pytest
5+
6+ from slack_sdk .models .attachments import Attachment
7+ from slack_sdk .models .blocks import Block
8+ from slack_sdk .web .internal_utils import (
9+ _build_unexpected_body_error_message ,
10+ _parse_web_class_objects
11+ )
312
413
514class TestInternalUtils (unittest .TestCase ):
@@ -16,3 +25,33 @@ def test_build_unexpected_body_error_message(self):
1625 assert message .startswith (
1726 """Received a response in a non-JSON format: <!DOCTYPE html><html lang="en"><head><meta charset="utf-8">"""
1827 )
28+
29+
30+ @pytest .mark .parametrize ("initial_blocks" , [
31+ [Block (block_id = "42" ), Block (block_id = "24" )], # list
32+ (Block (block_id = "42" ), Block (block_id = "24" ),), # tuple
33+ ])
34+ def test_can_parse_sequence_of_blocks (initial_blocks : Sequence [Union [Dict , Block ]]):
35+ kwargs = {"blocks" : initial_blocks }
36+
37+ _parse_web_class_objects (kwargs )
38+
39+ assert kwargs ["blocks" ]
40+
41+ for block in kwargs ["blocks" ]:
42+ assert isinstance (block , Dict )
43+
44+
45+ @pytest .mark .parametrize ("initial_attachments" , [
46+ [Attachment (text = "foo" ), Attachment (text = "bar" )], # list
47+ (Attachment (text = "foo" ), Attachment (text = "bar" ),), # tuple
48+ ])
49+ def test_can_parse_sequence_of_attachments (initial_attachments : Sequence [Union [Dict , Attachment ]]):
50+ kwargs = {"attachments" : initial_attachments }
51+
52+ _parse_web_class_objects (kwargs )
53+
54+ assert kwargs ["attachments" ]
55+
56+ for attachment in kwargs ["attachments" ]:
57+ assert isinstance (attachment , Dict )
0 commit comments