Skip to content

Commit 07d1dbf

Browse files
horn553seratch
andauthored
Fix #1131 Add the method to check equality in Block Kit model classes (#1137)
Co-authored-by: Kazuhiro Sera <seratch@gmail.com>
1 parent 6c46f32 commit 07d1dbf

5 files changed

Lines changed: 40 additions & 0 deletions

File tree

slack_sdk/models/basic_objects.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ def __repr__(self):
8787
else:
8888
return self.__str__()
8989

90+
def __eq__(self, other: Any) -> bool:
91+
if not isinstance(other, JsonObject):
92+
return False
93+
return self.to_dict() == other.to_dict()
94+
9095

9196
class JsonValidator:
9297
def __init__(self, message: str):

tests/slack_sdk/models/test_blocks.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ def test_parse(self):
5454
block.to_dict(),
5555
)
5656

57+
def test_eq(self):
58+
self.assertEqual(Block(), Block())
59+
self.assertEqual(Block(type="test"), Block(type="test"))
60+
self.assertNotEqual(Block(type="test"), Block(type="another test"))
61+
5762

5863
# ----------------------------------------------
5964
# Section

tests/slack_sdk/models/test_elements.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from slack_sdk.errors import SlackObjectFormationError
44
from slack_sdk.models.blocks import (
5+
BlockElement,
56
ButtonElement,
67
DatePickerElement,
78
TimePickerElement,
@@ -29,6 +30,15 @@
2930
from . import STRING_3001_CHARS, STRING_301_CHARS
3031

3132

33+
class BlockElementTests(unittest.TestCase):
34+
def test_eq(self):
35+
self.assertEqual(BlockElement(), BlockElement())
36+
self.assertEqual(BlockElement(type="test"), BlockElement(type="test"))
37+
self.assertNotEqual(
38+
BlockElement(type="test"), BlockElement(type="another test")
39+
)
40+
41+
3242
# -------------------------------------------------
3343
# Interactive Elements
3444
# -------------------------------------------------

tests/slack_sdk/models/test_objects.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,14 @@ def test_get_non_null_attributes_nested_2(self):
148148
)
149149
self.assertDictEqual(expected, nested.get_non_null_attributes())
150150

151+
def test_eq(self):
152+
obj1 = SimpleJsonObject()
153+
self.assertEqual(self.good_test_object, obj1)
154+
155+
obj2 = SimpleJsonObject()
156+
obj2.test = "another"
157+
self.assertNotEqual(self.good_test_object, obj2)
158+
151159

152160
class JsonValidatorTests(unittest.TestCase):
153161
def setUp(self) -> None:

tests/slack_sdk/models/test_views.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,3 +531,15 @@ def test_load_home_tab_view_005(self):
531531
def test_load_home_tab_view_006(self):
532532
with open("tests/slack_sdk_fixture/view_home_006.json") as file:
533533
self.verify_loaded_view_object(file)
534+
535+
def test_eq(self):
536+
input = {
537+
"type": "modal",
538+
"blocks": [DividerBlock()],
539+
}
540+
another_input = {
541+
"type": "modal",
542+
"blocks": [DividerBlock(), DividerBlock()],
543+
}
544+
self.assertEqual(View(**input), View(**input))
545+
self.assertNotEqual(View(**input), View(**another_input))

0 commit comments

Comments
 (0)