Skip to content

Commit d6962b9

Browse files
Ihor BilousIhor Bilous
authored andcommitted
Fix issue #52: Replace enums by string in response models
1 parent 691ddc0 commit d6962b9

8 files changed

Lines changed: 16 additions & 58 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ IS_SANDBOX = os.environ.get("MAILTRAP_USE_SANDBOX", "true").lower() == "true"
7070
INBOX_ID = os.environ.get("MAILTRAP_INBOX_ID")
7171

7272
client = mt.MailtrapClient(
73-
token=API_KEY,
73+
token=API_KEY,
7474
sandbox=IS_SANDBOX,
7575
inbox_id=INBOX_ID, # None is ignored for production
7676
)

mailtrap/models/contacts.py

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from datetime import datetime
2-
from enum import Enum
32
from typing import Any
43
from typing import Optional
54
from typing import Union
@@ -45,11 +44,6 @@ class ContactList:
4544
name: str
4645

4746

48-
class ContactStatus(str, Enum):
49-
SUBSCRIBED = "subscribed"
50-
UNSUBSCRIBED = "unsubscribed"
51-
52-
5347
@dataclass
5448
class CreateContactParams(RequestParams):
5549
email: str
@@ -89,7 +83,7 @@ class Contact:
8983
email: str
9084
fields: dict[str, Union[str, int, float, bool]] # field_merge_tag: value
9185
list_ids: list[int]
92-
status: ContactStatus
86+
status: str
9387
created_at: int
9488
updated_at: int
9589

@@ -99,17 +93,10 @@ class ContactResponse:
9993
data: Contact
10094

10195

102-
class ContactImportStatus(str, Enum):
103-
CREATED = "created"
104-
STARTED = "started"
105-
FINISHED = "finished"
106-
FAILED = "failed"
107-
108-
10996
@dataclass
11097
class ContactImport:
11198
id: int
112-
status: ContactImportStatus
99+
status: str
113100
created_contacts_count: Optional[int] = None
114101
updated_contacts_count: Optional[int] = None
115102
contacts_over_limit_count: Optional[int] = None

mailtrap/models/messages.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from datetime import datetime
2-
from enum import Enum
32
from typing import Any
43
from typing import Optional
54
from typing import Union
@@ -10,12 +9,6 @@
109
from mailtrap.models.common import RequestParams
1110

1211

13-
class BlacklistsResult(str, Enum):
14-
SUCCESS = "success"
15-
PENDING = "pending"
16-
ERROR = "error"
17-
18-
1912
@dataclass
2013
class BlacklistsReport:
2114
name: str
@@ -25,7 +18,7 @@ class BlacklistsReport:
2518

2619
@dataclass
2720
class Blacklists:
28-
result: BlacklistsResult
21+
result: str
2922
domain: str
3023
ip: str
3124
report: list[BlacklistsReport]
@@ -117,14 +110,9 @@ class ErrorItem:
117110
email_clients: EmailClients
118111

119112

120-
class AnalysisReportStatus(str, Enum):
121-
SUCCESS = "success"
122-
ERROR = "error"
123-
124-
125113
@dataclass
126114
class AnalysisReport:
127-
status: AnalysisReportStatus
115+
status: str
128116

129117

130118
@dataclass

mailtrap/models/suppressions.py

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,17 @@
11
from datetime import datetime
2-
from enum import Enum
32
from typing import Optional
43
from typing import Union
54

65
from pydantic.dataclasses import dataclass
76

87

9-
class SuppressionType(str, Enum):
10-
HARD_BOUNCE = "hard bounce"
11-
SPAM_COMPLAINT = "spam complaint"
12-
UNSUBSCRIPTION = "unsubscription"
13-
MANUAL_IMPORT = "manual import"
14-
15-
16-
class SendingStream(str, Enum):
17-
TRANSACTIONAL = "transactional"
18-
BULK = "bulk"
19-
20-
218
@dataclass
229
class Suppression:
2310
id: str
24-
type: SuppressionType
11+
type: str
2512
created_at: datetime
2613
email: str
27-
sending_stream: SendingStream
14+
sending_stream: str
2815
domain_name: Optional[str] = None
2916
message_bounce_category: Optional[str] = None
3017
message_category: Optional[str] = None

tests/unit/api/contacts/test_contact_imports.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from mailtrap.exceptions import APIError
99
from mailtrap.http import HttpClient
1010
from mailtrap.models.contacts import ContactImport
11-
from mailtrap.models.contacts import ContactImportStatus
1211
from mailtrap.models.contacts import ImportContactParams
1312
from tests import conftest
1413

@@ -135,7 +134,7 @@ def test_import_contacts_should_return_started_import(
135134

136135
assert isinstance(contact_import, ContactImport)
137136
assert contact_import.id == IMPORT_ID
138-
assert contact_import.status == ContactImportStatus.STARTED
137+
assert contact_import.status == "started"
139138

140139
@pytest.mark.parametrize(
141140
"status_code,response_json,expected_error_message",
@@ -190,7 +189,7 @@ def test_get_contact_import_should_return_started_import(
190189

191190
assert isinstance(contact_import, ContactImport)
192191
assert contact_import.id == IMPORT_ID
193-
assert contact_import.status == ContactImportStatus.STARTED
192+
assert contact_import.status == "started"
194193

195194
@responses.activate
196195
def test_get_contact_import_should_return_finished_import(
@@ -208,7 +207,7 @@ def test_get_contact_import_should_return_finished_import(
208207

209208
assert isinstance(contact_import, ContactImport)
210209
assert contact_import.id == IMPORT_ID
211-
assert contact_import.status == ContactImportStatus.FINISHED
210+
assert contact_import.status == "finished"
212211
assert contact_import.created_contacts_count == 1
213212
assert contact_import.updated_contacts_count == 3
214213
assert contact_import.contacts_over_limit_count == 3

tests/unit/api/contacts/test_contacts.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from mailtrap.http import HttpClient
1010
from mailtrap.models.common import DeletedObject
1111
from mailtrap.models.contacts import Contact
12-
from mailtrap.models.contacts import ContactStatus
1312
from mailtrap.models.contacts import CreateContactParams
1413
from mailtrap.models.contacts import UpdateContactParams
1514
from tests import conftest
@@ -122,7 +121,7 @@ def test_get_contact_should_return_contact(
122121
assert isinstance(contact, Contact)
123122
assert contact.id == CONTACT_ID
124123
assert contact.email == "john.smith@example.com"
125-
assert contact.status == ContactStatus.SUBSCRIBED
124+
assert contact.status == "subscribed"
126125
assert contact.fields["first_name"] == "John"
127126
assert contact.fields["last_name"] == "Smith"
128127
assert contact.list_ids == [1, 2, 3]
@@ -210,7 +209,7 @@ def test_create_contact_should_return_created_contact(
210209
assert isinstance(contact, Contact)
211210
assert contact.id == CONTACT_ID
212211
assert contact.email == "john.smith@example.com"
213-
assert contact.status == ContactStatus.SUBSCRIBED
212+
assert contact.status == "subscribed"
214213
assert contact.fields["first_name"] == "John"
215214
assert contact.fields["last_name"] == "Smith"
216215
assert contact.list_ids == [1, 2, 3]
@@ -297,7 +296,7 @@ def test_update_contact_should_return_updated_contact(
297296
assert isinstance(contact, Contact)
298297
assert contact.id == CONTACT_ID
299298
assert contact.email == "john.updated@example.com"
300-
assert contact.status == ContactStatus.SUBSCRIBED
299+
assert contact.status == "subscribed"
301300
assert contact.fields["first_name"] == "John Updated"
302301
assert contact.fields["last_name"] == "Smith Updated"
303302

tests/unit/api/suppressions/test_suppressions.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@
88
from mailtrap.config import GENERAL_HOST
99
from mailtrap.exceptions import APIError
1010
from mailtrap.http import HttpClient
11-
from mailtrap.models.suppressions import SendingStream
1211
from mailtrap.models.suppressions import Suppression
13-
from mailtrap.models.suppressions import SuppressionType
1412
from tests import conftest
1513

1614
ACCOUNT_ID = "321"
@@ -168,6 +166,6 @@ def test_delete_suppression_should_return_deleted_suppression(
168166

169167
assert isinstance(deleted_suppression, Suppression)
170168
assert deleted_suppression.id == SUPPRESSION_ID
171-
assert deleted_suppression.type == SuppressionType.UNSUBSCRIPTION
169+
assert deleted_suppression.type == "unsubscription"
172170
assert deleted_suppression.email == "recipient@example.com"
173-
assert deleted_suppression.sending_stream == SendingStream.TRANSACTIONAL
171+
assert deleted_suppression.sending_stream == "transactional"

tests/unit/api/testing/test_messages.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ def test_get_html_analysis_should_return_analysis_report(
543543

544544
result = client.get_html_analysis(INBOX_ID, MESSAGE_ID)
545545

546-
assert result.status.value == "success"
546+
assert result.status == "success"
547547
assert len(result.errors) == 1
548548
assert result.errors[0].error_line == 15
549549

0 commit comments

Comments
 (0)