Skip to content

Commit 3fd5ca4

Browse files
committed
feat: add EmergencyVerificationStatus enum and status predicate helpers
Add EmergencyVerificationStatus enum (pending, approved, rejected) and is_pending, is_approved, is_rejected property helpers to EmergencyVerification, matching the Ruby SDK pattern.
1 parent e79e4ac commit 3fd5ca4

3 files changed

Lines changed: 51 additions & 3 deletions

File tree

src/didww/enums.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ class DefaultDstAction(str, Enum):
8181
REJECT_ALL = "reject_all"
8282

8383

84+
class EmergencyVerificationStatus(str, Enum):
85+
PENDING = "pending"
86+
APPROVED = "approved"
87+
REJECTED = "rejected"
88+
89+
8490
class EmergencyCallingServiceStatus(str, Enum):
8591
ACTIVE = "active"
8692
CANCELED = "canceled"

src/didww/resources/emergency_verification.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
from didww.resources.base import DidwwApiModel, DatetimeAttributeField, SafeAttributeField, RelationField, Repository
1+
from didww.enums import EmergencyVerificationStatus
2+
from didww.resources.base import DidwwApiModel, DatetimeAttributeField, SafeAttributeField, EnumAttributeField, RelationField, Repository
23

34

45
class EmergencyVerification(DidwwApiModel):
56
"""Emergency Verification resource.
67
78
Attributes:
89
reference (str): Verification reference code.
9-
status (str): One of "pending", "approved", "rejected".
10+
status (EmergencyVerificationStatus): One of pending, approved, rejected.
1011
reject_reasons (list[str] | None): List of reject reason codes when status is "rejected".
1112
reject_comment (str | None): Optional free-form comment accompanying a rejection.
1213
callback_url (str): Valid URI for callbacks.
@@ -18,7 +19,7 @@ class EmergencyVerification(DidwwApiModel):
1819
_writable_attrs = {"callback_url", "callback_method", "external_reference_id"}
1920

2021
reference = SafeAttributeField("reference")
21-
status = SafeAttributeField("status")
22+
status = EnumAttributeField("status", EmergencyVerificationStatus)
2223
reject_reasons = SafeAttributeField("reject_reasons")
2324
reject_comment = SafeAttributeField("reject_comment")
2425
callback_url = SafeAttributeField("callback_url")
@@ -33,6 +34,18 @@ class EmergencyVerification(DidwwApiModel):
3334
class Meta:
3435
type = "emergency_verifications"
3536

37+
@property
38+
def is_pending(self):
39+
return self.status == EmergencyVerificationStatus.PENDING
40+
41+
@property
42+
def is_approved(self):
43+
return self.status == EmergencyVerificationStatus.APPROVED
44+
45+
@property
46+
def is_rejected(self):
47+
return self.status == EmergencyVerificationStatus.REJECTED
48+
3649

3750
class EmergencyVerificationRepository(Repository):
3851
_resource_class = EmergencyVerification

tests/resources/test_emergency_verification.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,41 @@
11
from datetime import datetime, timezone
22

33
from tests.conftest import my_vcr
4+
from didww.enums import EmergencyVerificationStatus
45
from didww.resources.emergency_verification import EmergencyVerification
56
from didww.resources.address import Address
67
from didww.resources.emergency_calling_service import EmergencyCallingService
78
from didww.resources.did import Did
89

910

11+
class TestEmergencyVerificationStatusHelpers:
12+
def test_is_pending(self):
13+
ev = EmergencyVerification()
14+
ev.status = EmergencyVerificationStatus.PENDING
15+
assert ev.is_pending is True
16+
assert ev.is_approved is False
17+
assert ev.is_rejected is False
18+
19+
def test_is_approved(self):
20+
ev = EmergencyVerification()
21+
ev.status = EmergencyVerificationStatus.APPROVED
22+
assert ev.is_approved is True
23+
assert ev.is_pending is False
24+
assert ev.is_rejected is False
25+
26+
def test_is_rejected(self):
27+
ev = EmergencyVerification()
28+
ev.status = EmergencyVerificationStatus.REJECTED
29+
assert ev.is_rejected is True
30+
assert ev.is_pending is False
31+
assert ev.is_approved is False
32+
33+
def test_status_enum_from_string(self):
34+
ev = EmergencyVerification()
35+
ev.status = "pending"
36+
assert ev.status == EmergencyVerificationStatus.PENDING
37+
38+
1039
class TestEmergencyVerification:
1140
@my_vcr.use_cassette("emergency_verifications/list.yaml")
1241
def test_list_emergency_verifications(self, client):

0 commit comments

Comments
 (0)