diff --git a/tests/gmail/test_draft_gmail_message.py b/tests/gmail/test_draft_gmail_message.py index b5def51..fae369a 100644 --- a/tests/gmail/test_draft_gmail_message.py +++ b/tests/gmail/test_draft_gmail_message.py @@ -143,6 +143,15 @@ async def test_draft_gmail_message_autofills_reply_headers_from_thread(): include_signature=False, ) + # Verify threads().get() was called with correct parameters + thread_get_kwargs = ( + mock_service.users.return_value.threads.return_value.get.call_args.kwargs + ) + assert thread_get_kwargs["userId"] == "me" + assert thread_get_kwargs["id"] == "thread123" + assert thread_get_kwargs["format"] == "metadata" + assert "Message-ID" in thread_get_kwargs["metadataHeaders"] + assert "Draft created! Draft ID: draft_reply" in result create_kwargs = ( @@ -249,3 +258,31 @@ async def test_draft_gmail_message_gracefully_degrades_when_thread_fetch_fails() assert "In-Reply-To:" not in raw_text assert "References:" not in raw_text + + +@pytest.mark.asyncio +async def test_draft_gmail_message_gracefully_degrades_when_thread_has_no_messages(): + mock_service = Mock() + mock_service.users().drafts().create().execute.return_value = {"id": "draft_reply"} + mock_service.users().threads().get().execute.return_value = {"messages": []} + + result = await _unwrap(draft_gmail_message)( + service=mock_service, + user_google_email="user@example.com", + to="recipient@example.com", + subject="Meeting tomorrow", + body="Thanks for the update.", + thread_id="thread123", + include_signature=False, + ) + + assert "Draft created! Draft ID: draft_reply" in result + + create_kwargs = ( + mock_service.users.return_value.drafts.return_value.create.call_args.kwargs + ) + raw_message = create_kwargs["body"]["message"]["raw"] + raw_text = base64.urlsafe_b64decode(raw_message).decode("utf-8", errors="ignore") + + assert "In-Reply-To:" not in raw_text + assert "References:" not in raw_text