@@ -117,6 +117,14 @@ def test_it_archives_a_message(self, mocker, client, raw_complete_message):
117117 raw_complete_message ["id" ], add_labels = None , remove_labels = ["INBOX" ]
118118 )
119119
120+ def test_reply_to_property (self , client , raw_complete_message ):
121+ message = Message (client , raw_complete_message )
122+ assert message .reply_to is None
123+ raw_complete_message ["payload" ]["headers" ].append (
124+ {
"name" :
"Reply-To" ,
"value" :
"[email protected] " }
125+ )
126+ assert message .
reply_to == "[email protected] " 127+
120128 def test_message_id_property (self , client , raw_complete_message ):
121129 message = Message (client , raw_complete_message )
122130 assert (
@@ -131,6 +139,46 @@ def test_message_id_property(self, client, raw_complete_message):
131139 raw_complete_message ["payload" ]["headers" ][3 ]["name" ] = "Invalid"
132140 assert message .message_id is None
133141
142+ def test_reply (self , client , mocker , raw_complete_message ):
143+ message = Message (client , raw_complete_message )
144+ expected_message_to_be_sent = {"id" : "114ADC" , "internalDate" : "1566398665" }
145+ mocked_send_raw_message = mocker .patch (
146+ "gmail_wrapper.client.GmailClient.send_raw" ,
147+ return_value = expected_message_to_be_sent ,
148+ )
149+ sent_message = message .reply ("The quick brown fox jumps over the lazy dog" )
150+ mocked_send_raw_message .assert_called_once_with (
151+ "Re:Urgent errand" ,
152+ "The quick brown fox jumps over the lazy dog" ,
153+ 154+ None ,
155+ None ,
156+ [
157+ "<BY5PR15MB353717D866FC27FEE4DB4EC7F77E0@BY5PR15MB3537.namprd15.prod.outlook.com>"
158+ ],
159+ [
160+ "<BY5PR15MB353717D866FC27FEE4DB4EC7F77E0@BY5PR15MB3537.namprd15.prod.outlook.com>"
161+ ],
162+ "AA121212" ,
163+ )
164+ assert isinstance (sent_message , Message )
165+ assert sent_message .id == expected_message_to_be_sent ["id" ]
166+
167+ def test_reply_uses_reply_to_if_set (self , client , raw_complete_message , mocker ):
168+ message = Message (client , raw_complete_message )
169+ mocked_send_raw_message = mocker .patch (
170+ "gmail_wrapper.client.GmailClient.send_raw"
171+ )
172+ message .reply ("Any content" )
173+ assert mocked_send_raw_message .
call_args [
0 ][
2 ]
== "[email protected] " 174+ raw_complete_message ["payload" ]["headers" ].append (
175+ {
"name" :
"Reply-To" ,
"value" :
"[email protected] " }
176+ )
177+ message .reply ("Any content, again" )
178+ assert mocked_send_raw_message .
call_args [
0 ][
2 ]
== "[email protected] " 179+ message .reply ("Any content, again and again" , use_reply_to = False )
180+ assert mocked_send_raw_message .
call_args [
0 ][
2 ]
== "[email protected] " 181+
134182
135183class TestAttachment :
136184 def test_it_has_basic_properties_without_additional_fetch (
0 commit comments