Skip to content

Commit 12895c2

Browse files
committed
feat: add EmergencyCallingServiceStatus enum and use it for status field
Replace raw string constants with a proper EmergencyCallingServiceStatus enum (active, canceled, changes_required, in_process, new, pending_update), matching the pattern used by VoiceOutTrunkStatus and ExportStatus. Update predicates to compare against enum members.
1 parent 349ad5d commit 12895c2

3 files changed

Lines changed: 32 additions & 23 deletions

File tree

src/didww/enums.py

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

8383

84+
class EmergencyCallingServiceStatus(str, Enum):
85+
ACTIVE = "active"
86+
CANCELED = "canceled"
87+
CHANGES_REQUIRED = "changes required"
88+
IN_PROCESS = "in process"
89+
NEW = "new"
90+
PENDING_UPDATE = "pending update"
91+
92+
8493
class VoiceOutTrunkStatus(str, Enum):
8594
ACTIVE = "active"
8695
BLOCKED = "blocked"

src/didww/resources/emergency_calling_service.py

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
from didww.resources.base import DidwwApiModel, DatetimeAttributeField, SafeAttributeField, RelationField, ReadOnlyRepository
1+
from didww.enums import EmergencyCallingServiceStatus
2+
from didww.resources.base import DidwwApiModel, DatetimeAttributeField, SafeAttributeField, EnumAttributeField, RelationField, ReadOnlyRepository
23

34

45
class EmergencyCallingService(DidwwApiModel):
@@ -7,8 +8,8 @@ class EmergencyCallingService(DidwwApiModel):
78
Attributes:
89
name (str): Human-readable name for the calling service subscription.
910
reference (str): Server-assigned reference code.
10-
status (str): One of "active", "canceled", "changes required",
11-
"in process", "new", "pending update".
11+
status (EmergencyCallingServiceStatus): One of active, canceled,
12+
changes_required, in_process, new, pending_update.
1213
activated_at (datetime): Timestamp when the service became active. None while pending.
1314
canceled_at (datetime): Timestamp when the service was canceled. None when active.
1415
created_at (datetime): Timestamp when the resource was created.
@@ -17,7 +18,7 @@ class EmergencyCallingService(DidwwApiModel):
1718

1819
name = SafeAttributeField("name")
1920
reference = SafeAttributeField("reference")
20-
status = SafeAttributeField("status")
21+
status = EnumAttributeField("status", EmergencyCallingServiceStatus)
2122
activated_at = DatetimeAttributeField("activated_at")
2223
canceled_at = DatetimeAttributeField("canceled_at")
2324
created_at = DatetimeAttributeField("created_at")
@@ -31,39 +32,32 @@ class EmergencyCallingService(DidwwApiModel):
3132
emergency_verification = RelationField("emergency_verification")
3233
dids = RelationField("dids")
3334

34-
STATUS_ACTIVE = "active"
35-
STATUS_CANCELED = "canceled"
36-
STATUS_CHANGES_REQUIRED = "changes required"
37-
STATUS_IN_PROCESS = "in process"
38-
STATUS_NEW = "new"
39-
STATUS_PENDING_UPDATE = "pending update"
40-
4135
class Meta:
4236
type = "emergency_calling_services"
4337

4438
@property
4539
def is_active(self):
46-
return self.status == self.STATUS_ACTIVE
40+
return self.status == EmergencyCallingServiceStatus.ACTIVE
4741

4842
@property
4943
def is_canceled(self):
50-
return self.status == self.STATUS_CANCELED
44+
return self.status == EmergencyCallingServiceStatus.CANCELED
5145

5246
@property
5347
def is_changes_required(self):
54-
return self.status == self.STATUS_CHANGES_REQUIRED
48+
return self.status == EmergencyCallingServiceStatus.CHANGES_REQUIRED
5549

5650
@property
5751
def is_in_process(self):
58-
return self.status == self.STATUS_IN_PROCESS
52+
return self.status == EmergencyCallingServiceStatus.IN_PROCESS
5953

6054
@property
6155
def is_new(self):
62-
return self.status == self.STATUS_NEW
56+
return self.status == EmergencyCallingServiceStatus.NEW
6357

6458
@property
6559
def is_pending_update(self):
66-
return self.status == self.STATUS_PENDING_UPDATE
60+
return self.status == EmergencyCallingServiceStatus.PENDING_UPDATE
6761

6862

6963
class EmergencyCallingServiceRepository(ReadOnlyRepository):

tests/resources/test_emergency_calling_service.py

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

33
from tests.conftest import my_vcr
4+
from didww.enums import EmergencyCallingServiceStatus
45
from didww.resources.emergency_calling_service import EmergencyCallingService
56

67

78
class TestEmergencyCallingServiceStatusHelpers:
89
def test_is_active(self):
910
ecs = EmergencyCallingService()
10-
ecs.status = "active"
11+
ecs.status = EmergencyCallingServiceStatus.ACTIVE
1112
assert ecs.is_active is True
1213
assert ecs.is_canceled is False
1314

1415
def test_all_predicates(self):
1516
ecs = EmergencyCallingService()
16-
ecs.status = "canceled"
17+
ecs.status = EmergencyCallingServiceStatus.CANCELED
1718
assert ecs.is_canceled is True
18-
ecs.status = "changes required"
19+
ecs.status = EmergencyCallingServiceStatus.CHANGES_REQUIRED
1920
assert ecs.is_changes_required is True
20-
ecs.status = "in process"
21+
ecs.status = EmergencyCallingServiceStatus.IN_PROCESS
2122
assert ecs.is_in_process is True
22-
ecs.status = "new"
23+
ecs.status = EmergencyCallingServiceStatus.NEW
2324
assert ecs.is_new is True
24-
ecs.status = "pending update"
25+
ecs.status = EmergencyCallingServiceStatus.PENDING_UPDATE
2526
assert ecs.is_pending_update is True
2627

28+
def test_status_enum_from_string(self):
29+
ecs = EmergencyCallingService()
30+
ecs.status = "active"
31+
assert ecs.status == EmergencyCallingServiceStatus.ACTIVE
32+
2733

2834
class TestEmergencyCallingService:
2935
@my_vcr.use_cassette("emergency_calling_services/list.yaml")

0 commit comments

Comments
 (0)