Skip to content

Commit c422feb

Browse files
authored
fix: entity id should compare based on name and key
1 parent 57c4a22 commit c422feb

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

azure/durable_functions/models/utils/entity_utils.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,15 @@ def __str__(self) -> str:
8989
A SchedulerId-based string representation of the EntityId
9090
"""
9191
return EntityId.get_scheduler_id(entity_id=self)
92+
93+
def __eq__(self, other: object) -> bool:
94+
"""Check if two EntityId objects are equal.
95+
96+
Parameters
97+
----------
98+
other: object
99+
"""
100+
if not isinstance(other, EntityId):
101+
return False
102+
103+
return self.name == other.name and self.key == other.key

tests/utils/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

tests/utils/test_entity_utils.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import pytest
2+
from azure.durable_functions.models.utils.entity_utils import EntityId
3+
4+
@pytest.mark.parametrize(
5+
("name_e1", "key_1", "name_e2", "key_2", "expected"),
6+
[
7+
("name1", "key1", "name1", "key1", True),
8+
("name1", "key1", "name1", "key2", False),
9+
("name1", "key1", "name2", "key1", False),
10+
("name1", "key1", "name2", "key2", False),
11+
],
12+
)
13+
def test_equal_entity_by_name_and_key(name_e1, key_1, name_e2, key_2, expected):
14+
15+
entity1 = EntityId(name_e1, key_1)
16+
entity2 = EntityId(name_e2, key_2)
17+
18+
assert (entity1 == entity2) == expected
19+
20+
def test_equality_with_non_entity_id():
21+
22+
entity = EntityId("name", "key")
23+
24+
assert (entity == "not an entity id") == False

0 commit comments

Comments
 (0)