a
    €AWeÞ  ã                   @   sl   d dl Zd dlm  mZ d dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ G dd„ dƒZdS )é    N)ÚpatchÚMockÚ	MagicMock)ÚUser)Úbcrypt)Údatetimec                   @   s|   e Zd Zdd„ Ze ed¡dd„ ƒZe ed¡dd„ ƒZd	d
„ Z	dd„ Z
dd„ Zdd„ Zejjdd„ ƒZedƒdd„ ƒZdS )ÚTestUserc                 C   sº   |}t |ƒ}|d }||k}|sªt d|fd||f¡dt ¡ v sJt t ¡rTt t ¡nddt ¡ v slt |¡rvt |¡ndt |¡t |¡dœ }dd|i }tt |¡ƒ‚d  } }}d S )	NÚusername©ú==)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚstrÚuser)Úpy0Úpy1Úpy3Úpy6zassert %(py8)sÚpy8)	r   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)ÚselfÚuser_model_factoryr   Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9© r"   ú"/app/tests/unit/test_user_model.pyÚtest_user_string_represetation	   s    z'TestUser.test_user_string_represetationÚgenerate_password_hashc                 C   s@   |}t ƒ }t|d ƒ |j|d d}| ¡  | |d ¡ d S ©NÚpassword)r'   )r   ÚprintÚset_passwordÚassert_called_onceÚassert_called_once_with©r   Úmockerr   Zuser_factoryr   Úresultr"   r"   r#   Útest_set_password   s    zTestUser.test_set_passwordÚcheck_password_hashc                 C   s2   |}t ƒ }t|d ƒ |j|d d}| ¡  d S r&   )r   r(   Úcheck_passwordr*   r,   r"   r"   r#   Útest_check_password   s
    zTestUser.test_check_passwordc                 C   s–   |  ¡  |j}d}||k}|s†t d|fd||f¡dt ¡ v sHt |¡rRt |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}d S )NTr
   ©z1%(py2)s
{%(py2)s = %(py0)s.is_online
} == %(py5)sr   ©r   Úpy2Úpy5úassert %(py7)sÚpy7)
Úmark_as_onlineÚ	is_onliner   r   r   r   r   r   r   r   ©r   r   Ú@py_assert1r   Ú@py_assert3Ú@py_format6Ú@py_format8r"   r"   r#   Útest_mark_as_online   s    zTestUser.test_mark_as_onlinec                 C   s–   |  ¡  |j}d}||k}|s†t d|fd||f¡dt ¡ v sHt |¡rRt |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}d S )NFr
   r3   r   r4   r7   r8   )
Úmark_as_offliner:   r   r   r   r   r   r   r   r   r;   r"   r"   r#   Útest_mark_as_offline%   s    zTestUser.test_mark_as_offlinec                 C   s–   |  ¡  |j}d}||k}|s†t d|fd||f¡dt ¡ v sHt |¡rRt |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}d S )NTr
   ©z2%(py2)s
{%(py2)s = %(py0)s.is_blocked
} == %(py5)sr   r4   r7   r8   )
Ú
block_userÚ
is_blockedr   r   r   r   r   r   r   r   r;   r"   r"   r#   Útest_block_user)   s    zTestUser.test_block_userc                 C   s–   |  ¡  |j}d}||k}|s†t d|fd||f¡dt ¡ v sHt |¡rRt |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}d S )NFr
   rC   r   r4   r7   r8   )
Úunblock_userrE   r   r   r   r   r   r   r   r   r;   r"   r"   r#   Útest_unblock_user.   s    zTestUser.test_unblock_userc                 C   sÌ   |  ¡  |j}tj}|ƒ }||k}|s¸t d|fd||f¡dt ¡ v sPt |¡rZt 	|¡ndt 	|¡dt ¡ v szt t¡r„t 	t¡ndt 	|¡t 	|¡dœ }dd|i }t
t |¡ƒ‚d  } } }}d S )Nr
   )zg%(py2)s
{%(py2)s = %(py0)s.last_seen_at
} == %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s.utcnow
}()
}r   r   )r   r5   Úpy4r   r   zassert %(py10)sÚpy10)Úupdate_last_seenÚlast_seen_atr   Úutcnowr   r   r   r   r   r   r   r   )r   r   r<   r   Ú@py_assert7r=   r!   Ú@py_format11r"   r"   r#   Útest_update_last_seen2   s    zTestUser.test_update_last_seenzapp.models.base.Base.to_dictc                 C   sh   t ƒ }ddi|_| ¡ }|sdt ddi¡d ddt ¡ v sDt |¡rNt |¡ndi }t	t 
|¡ƒ‚d S )NÚkeyÚvaluez
>assert %(py0)sr   Ú	user_dict)r   Úreturn_valueÚto_dictr   Ú_format_assertmsgr   r   r   r   r   r   )r   Zmock_to_dictr   rS   Z@py_format1r"   r"   r#   Útest_to_dict9   s    
zTestUser.test_to_dictN)Ú__name__Ú
__module__Ú__qualname__r$   r   Úobjectr   r/   r2   r@   rB   rF   rH   ÚpytestÚmarkÚskiprP   rW   r"   r"   r"   r#   r      s   




r   )Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   r\   Úunittest.mockr   r   r   Ú
app.modelsr   Úapp.config.extensionsr   r   r   r"   r"   r"   r#   Ú<module>   s
   "