Skip to content

Commit 9bf6bd0

Browse files
authored
Merge pull request #423 from nylas/CUST-4511-python-sdk-change-earliest-message-date-attribute-to-optional-on-thread-dataclass
CUST 4511 - earliest_message_date on models.Thread made optional, tests, added line to CHANGELOG
2 parents dccfa0a + 4c1404f commit 9bf6bd0

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ nylas-python Changelog
44
Unreleased
55
----------------
66
* Added support for `earliest_message_date` query parameter for threads
7+
* Fixed `earliest_message_date` not being an optional response field
78
* Added support for new message fields query parameter values: `include_tracking_options` and `raw_mime`
89
* Added `tracking_options` field to Message model for message tracking settings
910
* Added `raw_mime` field to Message model for Base64url-encoded message data

nylas/models/threads.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ class Thread:
6565
has_drafts: bool
6666
starred: bool
6767
unread: bool
68-
earliest_message_date: int
6968
message_ids: List[str]
7069
folders: List[str]
7170
latest_draft_or_message: Union[Message, Draft] = field(
7271
metadata=config(decoder=_decode_draft_or_message)
7372
)
7473
object: str = "thread"
74+
earliest_message_date: Optional[int] = None
7575
latest_message_received_date: Optional[int] = None
7676
draft_ids: Optional[List[str]] = None
7777
snippet: Optional[str] = None

tests/resources/test_threads.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,53 @@ def test_list_threads_with_earliest_message_date_param(self, http_client_list_re
227227

228228
assert result is not None
229229

230+
def test_list_threads_without_earliest_message_date_in_response(self, http_client_list_response):
231+
threads = Threads(http_client_list_response)
232+
233+
http_client_list_response._execute.return_value = {
234+
"request_id": "abc-123",
235+
"data": [{
236+
"id": "thread-123",
237+
"grant_id": "test-grant-id",
238+
"has_drafts": False,
239+
"starred": False,
240+
"unread": False,
241+
"message_ids": ["msg-123"],
242+
"folders": ["folder-123"],
243+
"latest_draft_or_message": {
244+
"body": "Test message body",
245+
"date": 1672617600,
246+
"from": [{"name": "Test User", "email": "test@example.com"}],
247+
"grant_id": "test-grant-id",
248+
"id": "msg-123",
249+
"object": "message",
250+
"subject": "Test subject",
251+
"thread_id": "thread-123",
252+
"to": [{"name": "Recipient", "email": "recipient@example.com"}],
253+
"unread": False,
254+
},
255+
"has_attachments": False,
256+
"participants": [
257+
{"email": "test@example.com", "name": "Test User"}
258+
],
259+
"snippet": "Test snippet",
260+
"subject": "Test subject"
261+
}]
262+
}
263+
264+
result = threads.list(identifier="abc-123")
265+
266+
http_client_list_response._execute.assert_called_with(
267+
"GET",
268+
"/v3/grants/abc-123/threads",
269+
None,
270+
None,
271+
None,
272+
overrides=None,
273+
)
274+
275+
assert result is not None
276+
230277
def test_find_thread(self, http_client_response):
231278
threads = Threads(http_client_response)
232279

0 commit comments

Comments
 (0)