o
    µÖái²  ã                   @   sÒ   d Z ddlZddlm  mZ ddlZddlZddl	m
Z
 dZejjde
fdd„ƒZejjde
defd	d
„ƒZejjde
defdd„ƒZejjde
defdd„ƒZejjde
fdd„ƒZejjde
fdd„ƒZdS )z8Tests for garment listing and filtering (GET /garments).é    N)ÚAsyncClientz$00000000-0000-0000-0000-000000000000Úclientc                 Ã   s  t  ¡ }| jddt|ƒidI dH }|j}d}||k}|sRt d|fd||f¡dt ¡ v s3t 	|¡r8t 
|¡ndt 
|¡t 
|¡d	œ }d
d|i }tt |¡ƒ‚d } }}| ¡ }|d }	g }|	|k}
|
s‹t d|
fd|	|f¡t 
|	¡t 
|¡dœ }dd|i }tt |¡ƒ‚d }	 }
}|d d }	d}|	|k}
|
sÂt d|
fd|	|f¡t 
|	¡t 
|¡dœ }dd|i }tt |¡ƒ‚d }	 }
}|d d }	d}|	|k}
|
sùt d|
fd|	|f¡t 
|	¡t 
|¡dœ }dd|i }tt |¡ƒ‚d }	 }
}dS )u7   GET /garments for user with no garments â†’ empty list.ú/api/v1/garmentsÚuser_id©ÚparamsNéÈ   ©ú==©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚresp©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7Úitems©z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6ÚmetaÚtotalr   Úpageé   )ÚuuidÚuuid4ÚgetÚstrÚstatus_codeÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚjson)r   Úrandom_userr   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8ÚdataÚ@py_assert0Ú@py_assert2Ú@py_format5Ú@py_format7© r7   ú3/home/ubuntu/ootd-poc-server/tests/test_wardrobe.pyÚtest_garments_list_empty   s   €Šjnrr9   Úsample_jpegc                 Ã   sp  | j ddd|dfidI dH }|j}d}||k}|sOt d|fd	||f¡d
t ¡ v s0t |¡r5t |¡nd
t |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d } }}| j
ddtidI dH }|j}d}||k}|s t d|fd	||f¡d
t ¡ v st |¡r†t |¡nd
t |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d } }}| ¡ }|d d }	d}|	|k}
|
sÛt d|
fd|	|f¡t |	¡t |¡dœ }dd|i }tt 	|¡ƒ‚d }	 }
}|d }t|ƒ}d}||k}|s,t d|fd||f¡dt ¡ v s	t t¡rt t¡ndt |¡t |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d } } }}|d d }d }	|	|v }
|
sut d!|
fd"|	|f¡t |	¡d#t ¡ v s^t |¡rct |¡nd#d$œ }d%d&|i }tt 	|¡ƒ‚d }	}
d}	|	|v }
|
s´t d!|
fd"|	|f¡t |	¡d#t ¡ v st |¡r¢t |¡nd#d$œ }d%d&|i }tt 	|¡ƒ‚d }	}
d'}	|	|v }
|
sót d!|
fd"|	|f¡t |	¡d#t ¡ v sÜt |¡rát |¡nd#d$œ }d%d&|i }tt 	|¡ƒ‚d }	}
d(}	|	|v }
|
s2t d!|
fd"|	|f¡t |	¡d#t ¡ v st |¡r t |¡nd#d$œ }d%d&|i }tt 	|¡ƒ‚d }	}
dS ))z:Garments list should contain items after garment analysis.ú/api/v1/garments/analyzeÚimageútest.jpgú
image/jpeg©ÚfilesNr   r	   r   r   r   r   r   r   r   r   r   r   r   ©ú>=©z%(py1)s >= %(py4)sr   r   r   r   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} >= %(py7)sÚlen©r   r   r   r   úassert %(py9)sÚpy9r   Úid)Úin)z%(py1)s in %(py3)sÚitem)r   Úpy3zassert %(py5)sr   Úcategory_mainÚtags)Úpostr"   r#   r$   r%   r&   r'   r(   r)   r*   r    ÚGLOBAL_USER_IDr+   rD   )r   r:   r   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   Ú@py_assert6Ú@py_assert5Ú@py_format10rJ   Ú@py_format4r7   r7   r8   Ú test_garments_list_after_analyze   s    €þŠŠn¦~~~‚rT   c                 Ã   s4  | j ddd|dfidI dH  |  d¡I dH }|j}d}||k}|sWt d	|fd
||f¡dt ¡ v s8t |¡r=t |¡ndt |¡t |¡dœ }dd|i }t	t 
|¡ƒ‚d } }}| ¡ }|d d }	d}|	|k}
|
s’t d|
fd|	|f¡t |	¡t |¡dœ }dd|i }t	t 
|¡ƒ‚d }	 }
}dS )u?   GET /garments without user_id â†’ all users (cross-user query).r;   r<   r=   r>   r?   Nr   r   r	   r   r   r   r   r   r   r   r   rA   rC   r   r   r   ©rN   r    r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   )r   r:   r   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r7   r8   Útest_garments_list_cross_user.   s   €þŠrrV   c                 Ã   sÔ  | j ddd|dfidI dH  | jddd	id
I dH }|j}d}||k}|s[t d|fd||f¡dt ¡ v s<t |¡rAt |¡ndt |¡t |¡dœ }dd|i }t	t 
|¡ƒ‚d } }}| ¡ }|d D ]7}	|	d }
d	}|
|k}|sšt d|fd|
|f¡t |
¡t |¡dœ }dd|i }t	t 
|¡ƒ‚d }
 }}qi| jdddid
I dH }| ¡ }|d d }
d}|
|k}|sât d|fd|
|f¡t |
¡t |¡dœ }dd|i }t	t 
|¡ƒ‚d }
 }}dS )z!Filter garments by category_main.r;   r<   r=   r>   r?   Nr   rL   Útopr   r   r	   r   r   r   r   r   r   r   r   r   r   Úouterr   r   r   rA   rC   rU   )r   r:   r   r-   r.   r/   r0   r1   r2   rJ   r3   r4   r5   r6   r7   r7   r8   Útest_garments_filter_category<   s   €þŠlrrY   c                 Ã   s0  | j ddddœdI dH }|j}d}||k}|sMt d|fd	||f¡d
t ¡ v s.t |¡r3t |¡nd
t |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d } }}| 
¡ }|d d }d}||k}	|	sˆt d|	fd||f¡t |¡t |¡dœ }
dd|
i }tt 	|¡ƒ‚d } }	}|d d }d}||k}	|	s¿t d|	fd||f¡t |¡t |¡dœ }
dd|
i }tt 	|¡ƒ‚d } }	}|d }t|ƒ}d}||k}|st d|fd||f¡dt ¡ v sët t¡rðt t¡ndt |¡t |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d } } }}dS )z&Pagination params should be respected.r   r   é   )r   Úsizer   Nr   r	   r   r   r   r   r   r   r   r   r   r   r   r[   r   )ú<=)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} <= %(py7)srD   rE   rF   rG   )r    r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   rD   )r   r   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   rP   rQ   rR   r7   r7   r8   Útest_garments_paginationQ   s   €Šnn¦r]   c                 Ã   sJ  | j dddidI dH }|j}d}||k}|sLt d|fd||f¡d	t ¡ v s-t |¡r2t |¡nd	t |¡t |¡d
œ }dd|i }tt 	|¡ƒ‚d } }}| j dddidI dH }|j}d}||k}|st d|fd||f¡d	t ¡ v s~t |¡rƒt |¡nd	t |¡t |¡d
œ }dd|i }tt 	|¡ƒ‚d } }}dS )z,Invalid page/size params should be rejected.r   r   r   r   Ni¦  r	   r   r   r   r   r   r[   r   )
r    r"   r#   r$   r%   r&   r'   r(   r)   r*   )r   r   r-   r.   r/   r0   r1   r7   r7   r8   Útest_garments_invalid_page_size\   s
   €ŠŽr^   )Ú__doc__Úbuiltinsr%   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter#   r   ÚpytestÚhttpxr   rO   ÚmarkÚasyncior9   ÚbytesrT   rV   rY   r]   r^   r7   r7   r7   r8   Ú<module>   s"    "
