§
    x�’j  ã                   ó¸   — d dl Zd dlmc mZ d dlmZmZ d dl	Z	d dl
mZ d dlmZ  ee¦  «        Ze	j        d„ ¦   «         Ze	j        d„ ¦   «         Zd„ Zd„ Zd	„ ZdS )
é    N)Ú	AsyncMockÚpatch)Ú
TestClient)Úappc               #   óà   K  — t          d¦  «        5 } | j        }ddi|j        _        ddi|j        _        ddi|j        _        ddi|j        _        |V — d d d ¦  «         d S # 1 swxY w Y   d S )Nz7app.modules.zalo_crm.presentation.router.PostgresClientÚidÚtest)r   Úreturn_valueÚupsert_contactÚupsert_zalo_accountÚupsert_conversationÚinsert_message©ÚmockÚinstances     ú0C:\Projects\DSCons\tests\api\test_crm_webhook.pyÚmock_postgresr      sÃ   è è € å	ÐHÑ	IÔ	Ið ÈTØÔ$ˆØ04°f¨~ˆÔÔ,Ø59¸6°NˆÔ$Ô1Ø59¸6°NˆÔ$Ô1Ø04°f¨~ˆÔÔ,Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ’AA#Á#A'Á*A'c               #   ó2  K  — t          d¦  «        5 } | j        }t          d¬¦  «        |_        t          ¦   «         |_        t          ¦   «         |_        t          ¦   «         |_        t          ¦   «         |_        |V — d d d ¦  «         d S # 1 swxY w Y   d S )Nz7app.modules.zalo_crm.presentation.router.TelegramBridgeÚ123)r
   )r   r
   r   Úcreate_topicÚforward_inbound_messageÚprocess_webhookr   s     r   Úmock_telegram_bridger      sÊ   è è € å	ÐHÑ	IÔ	Ið ÈTØÔ$ˆÝ )°uÐ =Ñ =Ô =ˆÔÝ+4©;¬;ˆÔ(Ý#,¡;¤;ˆÔ Ý+4©;¬;ˆÔ(Ý#,¡;¤;ˆÔ Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ’A-BÂBÂBc                 ó˜  — ddddddœ}t                                d|¬¦  «        }|j        }d	}||k    }|sªt          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|                     ¦   «         }	|	d         }
d}|
|k    }|slt          j        d
|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}
x}}| j                             ¦   «          | j        j        d         d         }|d         }
d}|
|u }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}
x}}|j                             ¦   «          d S )NÚmessageÚext_123u   Nguyá»…n VÄƒn A - Ä�á»‘i tÃ¡cu	   Xin chÃ oì    ³w%©Ú
event_nameÚ	sender_idÚsender_namer   Ú	timestampú/crm/webhook©ÚjsonéÈ   ©ú==©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚresponse©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7ÚstatusÚsuccess)z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6r   Úis_internalF©Úis©z%(py1)s is %(py4)s)ÚclientÚpostÚstatus_codeÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr%   r   Úassert_called_onceÚ	call_argsr   )r   r   Úpayloadr*   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8ÚdataÚ@py_assert0Ú@py_assert2Ú@py_format5Ú@py_format7Úcontact_datas                  r   Útest_webhook_external_contactrU   "   s¹  € àØØ6ØØ"ðð €Gõ �{Š{˜>°ˆ{Ñ8Ô8€HØÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø�=Š=‰?Œ?€DØ�Œ>Ð&˜YÐ&ˆ>˜YÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ>˜YÐ&Ñ&Ô&Õ&Ô&ˆ>Ñ&Ô&Õ&Ô&˜YÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð Ô ×3Ò3Ñ5Ô5Ð5Ø Ô/Ô9¸!Ô<¸QÔ?€LØ˜Ô&Ð/¨%Ð/Ð&¨%Ð/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð&¨%Ð/Ñ/Ô/Õ/Ô/Ð&Ñ/Ô/Õ/Ô/¨%Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ð Ô%×8Ò8Ñ:Ô:Ð:Ð:Ð:ó    c                 óh  — ddddddœ}t                                d|¬¦  «        }|j        }d	}||k    }|sªt          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}| j                             ¦   «          | j        j        d         d         }	|	d         }
d}|
|u }|slt          j        d|fd|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}
x}}|j                             ¦   «          d S )Nr   Úint_456u   Son - GiÃ¡m Ä�á»‘cu   Kiá»ƒm tra há»‡ thá»‘ngr   r   r#   r$   r&   r'   r)   r*   r+   r/   r0   r   r8   Tr9   r;   r3   r6   r7   )r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r   rG   rH   r   Úassert_not_called)r   r   rI   r*   rJ   rK   rL   rM   rN   rT   rP   rQ   rR   rS   s                 r   Útest_webhook_internal_contactrZ   8   s  € àØØ+Ø,Ø"ðð €Gõ �{Š{˜>°ˆ{Ñ8Ô8€HØÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð Ô ×3Ò3Ñ5Ô5Ð5Ø Ô/Ô9¸!Ô<¸QÔ?€LØ˜Ô&Ð.¨$Ð.Ð&¨$Ð.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð&¨$Ð.Ñ.Ô.Õ.Ô.Ð&Ñ.Ô.Õ.Ô.¨$Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ð Ô%×7Ò7Ñ9Ô9Ð9Ð9Ð9rV   c                 óÎ  — dddddidœdœ}t                                d|¬	¦  «        }|j        }d
}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        } |¦   «         }ddi}||k    }	|	s½t          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}x}x}	}| j                             |¦  «         d S )Ni90  Úcb_1Úapprove_ext_123Útextu.   AI DRAFT:
Xin chÃ o, tÃ´i cÃ³ thá»ƒ giÃºp gÃ¬?)r   rO   r   )Ú	update_idÚcallback_queryz/crm/telegram_webhookr$   r&   r'   r)   r*   r+   r/   r0   r1   Úok)zC%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.json
}()
} == %(py7)s)r,   r-   r5   r0   zassert %(py9)sÚpy9)r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r%   r   Úassert_called_once_with)r   rI   r*   rJ   rK   rL   rM   rN   Ú@py_assert6Ú@py_assert5Ú@py_format10s              r   Útest_telegram_webhookrg   L   sD  € ààØ%ØÐ QÐRð
ð 
ðð €Gõ �{Š{Ð2¸ˆ{ÑAÔA€HØÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØŒ=Ð.ˆ=ˆ=‰?Œ?Ð.˜x¨Ð.Ð.ˆ?Ð.Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.ˆ?Ð.Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ8Ñ.Ô.Ð.Õ.Ô.ˆ8Ñ.Ô.Ð.Ð.Õ.Ô.ˆ=Ñ.Ô.Õ.Ô.ˆ?Ñ.Ô.Õ.Ô.Ð.Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ(×@Ò@ÀÑIÔIÐIÐIÐIrV   )ÚbuiltinsrA   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter?   Úunittest.mockr   r   ÚpytestÚfastapi.testclientr   Úapp.mainr   r<   Úfixturer   r   rU   rZ   rg   © rV   r   ú<module>rr      sè   ðØ  € € € € € € € € € € € € Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à €€€Ø )Ð )Ð )Ð )Ð )Ð )à Ð Ð Ð Ð Ð à	ˆ�C‰Œ€ð „ðð ñ „ðð „ðð ñ „ðð;ð ;ð ;ð,:ð :ð :ð(Jð Jð Jð Jð JrV   