a
    2Î;eê	  ã                   @   s„   d dl Zd dlm  mZ d dlZd dlZd dlm	Z	 d dl
mZmZmZ d dlZd dlZd dlm	Z	 d dlmZ G dd„ dƒZdS )é    N)ÚAuthService)ÚpatchÚMockÚ	MagicMock)ÚUserc                   @   sb   e Zd Zedƒdd„ ƒZe ed¡dd„ ƒZe ed¡dd„ ƒZe	j
jd	d
edƒdd„ ƒƒZdS )ÚTestUserzapp.models.base.Base.savec                 C   s2   t ƒ }t | ¡ ¡}| |¡ | ¡  | ¡  d S )N)r   ÚjsonÚloadsÚto_jsonÚcreate_userÚassert_called_onceZassert_called_with)ÚselfZsave_mockerÚuser_model_factoryÚauthÚpayload© r   ú/app/tests/unit/test_models.pyÚtest_save_user_called   s
    
zTestUser.test_save_user_calledÚobjectsc           
      C   sÎ   t  | ¡ ¡}tƒ }||_tƒ }||j_t |d ¡}||k}|s¼t 	d|fd||f¡dt
 ¡ v slt |¡rvt |¡nddt
 ¡ v sŽt |¡r˜t |¡nddœ }dd|i }	tt |	¡ƒ‚d }|j ¡  d S )	NÚ	public_id©ú==©z%(py0)s == %(py2)sÚresultÚ	mock_user©Úpy0Úpy2úassert %(py4)sÚpy4)r   r	   r
   r   Úreturn_valueÚfirstr   Úget_user_by_idÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr   ©
r   Úmockerr   r   Z
mock_queryr   r   Ú@py_assert1Ú@py_format3Ú@py_format5r   r   r   Útest_get_user_by_id   s    ŠzTestUser.test_get_user_by_idc           
      C   sÎ   t  | ¡ ¡}tƒ }||_tƒ }||j_t |d ¡}||k}|s¼t 	d|fd||f¡dt
 ¡ v slt |¡rvt |¡nddt
 ¡ v sŽt |¡r˜t |¡nddœ }dd|i }	tt |	¡ƒ‚d }|j ¡  d S )	NÚemailr   r   r   r   r   r   r   )r   r	   r
   r   r    r!   r   Úget_user_by_email_or_usernamer#   r$   r%   r&   r'   r(   r)   r*   r   r+   r   r   r   Ú"test_get_user_by_email_or_username,   s    Šz+TestUser.test_get_user_by_email_or_usernamez)Q searh should be called but isn't called)Úreasonzmongoengine.queryset.visitorc                 C   s8   t  | ¡ ¡}t |d ¡}t|ƒ |j |d ¡ d S )Nr1   )r   r	   r
   r   r2   ÚprintÚQZassert_called_once_with)r   r,   r   r   r   r   r   r   Útest_get_user_by_email_Q_calledB   s    z(TestUser.test_get_user_by_email_Q_calledN)Ú__name__Ú
__module__Ú__qualname__r   r   Úobjectr   r0   r3   ÚpytestÚmarkÚskipr7   r   r   r   r   r   	   s   




r   )Úbuiltinsr%   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter#   r<   ÚmongoengineÚapp.services.authr   Úunittest.mockr   r   r   r   Ú
app.modelsr   r   r   r   r   r   Ú<module>   s   "