from bson import ObjectId from app.services.external_reply_service import build_external_reply_plan from app.services.thread_service import threading_fields_from_parent def test_build_external_reply_references_gmail_parent(): parent = { "_id": ObjectId(), "internet_message_id": "", "message_id": "", "references": [], "subject": "lets try one more time", } plan = build_external_reply_plan( parent_external_message=parent, body_text="I hear you.", recipients=["customer@gmail.com"], ) assert plan.threading.in_reply_to == "" assert plan.threading.references == [""] assert plan.subject == "Re: lets try one more time" assert plan.threading.replying_to_internet_message_id == "" def test_build_external_reply_chains_references_for_multi_round(): parent = { "_id": ObjectId(), "internet_message_id": "", "message_id": "", "references": ["", ""], "subject": "Re: lets try one more time", } threading = threading_fields_from_parent(parent) assert threading["in_reply_to"] == "" assert threading["references"] == [ "", "", "", ] def test_external_reply_never_uses_internal_object_id_as_in_reply_to(): parent = { "_id": ObjectId(), "internet_message_id": "", "message_id": "", "references": [], "subject": "hello", } plan = build_external_reply_plan( parent_external_message=parent, body_text="reply", recipients=["customer@gmail.com"], ) assert str(parent["_id"]) not in (plan.threading.in_reply_to or "") assert all(str(parent["_id"]) not in ref for ref in plan.threading.references)