a
    ù!fû&  ã                   @   s`   d dl Z G dd„ de jƒZG dd„ de jƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZdS )é    Nc                   @   sŒ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )"ÚTestIteratorc                 C   s   ddl m} |S )Nr   )ÚIterator)Úgcloud.iteratorr   )Úselfr   © r   úU/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/test_iterator.pyÚ_getTargetClass   s    zTestIterator._getTargetClassc                 O   s   |   ¡ |i |¤ŽS ©N©r   ©r   ÚargsÚkwr   r   r   Ú_makeOne   s    zTestIterator._makeOnec                 C   s\   t ƒ }t|ƒ}d}|  ||¡}|  |j|u ¡ |  |j|¡ |  |jd¡ |  |jd ¡ d S )Nú/foor   )	Ú_ConnectionÚ_Clientr   Ú
assertTrueÚclientÚassertEqualÚpathÚpage_numberÚnext_page_token©r   Ú
connectionr   ÚPATHÚiteratorr   r   r   Ú	test_ctor   s    zTestIterator.test_ctorc                    s´   d}d}d}t ƒ t ƒ  }}||||i‰ ‡ fdd„}tdd|id|igiƒ}t|ƒ}|  ||¡}	||	_|  t|	ƒ||g¡ |j\}
|  |
d d	¡ |  |
d
 |¡ |  |
d i ¡ d S )Nr   Úkey1Úkey2c                 3   s$   |   dg ¡D ]}ˆ |d  V  qd S )NÚitemsÚname)Úget)ÚresponseÚitem©ZITEMSr   r   Ú
_get_items,   s    z.TestIterator.test___iter__.<locals>._get_itemsr   r    ÚmethodÚGETr   Úquery_params)Úobjectr   r   r   Úget_items_from_responser   ÚlistÚ
_requested)r   r   ÚKEY1ÚKEY2ZITEM1ZITEM2r%   r   r   r   r   r   r$   r   Útest___iter__%   s    zTestIterator.test___iter__c                 C   s0   t ƒ }t|ƒ}d}|  ||¡}|  | ¡ ¡ d S ©Nr   )r   r   r   r   Úhas_next_pager   r   r   r   Útest_has_next_page_new9   s
    z#TestIterator.test_has_next_page_newc                 C   s6   t ƒ }t|ƒ}d}|  ||¡}d|_|  | ¡ ¡ d S ©Nr   é   )r   r   r   r   ZassertFalser1   r   r   r   r   Ú$test_has_next_page_w_number_no_token@   s    z1TestIterator.test_has_next_page_w_number_no_tokenc                 C   s@   t ƒ }t|ƒ}d}d}|  ||¡}d|_||_|  | ¡ ¡ d S )Nr   Útokenr4   )r   r   r   r   r   r   r1   ©r   r   r   r   ÚTOKENr   r   r   r   Ú#test_has_next_page_w_number_w_tokenH   s    z0TestIterator.test_has_next_page_w_number_w_tokenc                 C   s2   t ƒ }t|ƒ}d}|  ||¡}|  | ¡ i ¡ d S r0   ©r   r   r   r   Úget_query_paramsr   r   r   r   Útest_get_query_params_no_tokenR   s
    z+TestIterator.test_get_query_params_no_tokenc                 C   s@   t ƒ }t|ƒ}d}d}|  ||¡}||_|  | ¡ d|i¡ d S )Nr   r6   Ú	pageToken)r   r   r   r   r   r;   r7   r   r   r   Útest_get_query_params_w_tokenY   s    
ÿz*TestIterator.test_get_query_params_w_tokenc                 C   s>   t ƒ }t|ƒ}d}ddi}| j|||d}|  | ¡ |¡ d S )Nr   ÚkeyÚval©Úextra_paramsr:   )r   r   r   r   rB   r   r   r   r   Ú"test_get_query_params_extra_paramsc   s    z/TestIterator.test_get_query_params_extra_paramsc                 C   s^   t ƒ }t|ƒ}d}d}ddi}| j|||d}||_| ¡ }| d|i¡ |  | ¡ |¡ d S )Nr   r6   r?   r@   rA   r=   )r   r   r   r   ÚcopyÚupdater   r;   )r   r   r   r   r8   rB   r   Zexpected_queryr   r   r   Ú.test_get_query_params_w_token_and_extra_paramsk   s    z;TestIterator.test_get_query_params_w_token_and_extra_paramsc                 C   s4   t ƒ }t|ƒ}d}ddi}| jt| j|||d d S )Nr   r=   r@   rA   )r   r   ÚassertRaisesÚ
ValueErrorr   )r   r   r   r   rB   r   r   r   Ú'test_get_query_params_w_token_collisionx   s    ÿz4TestIterator.test_get_query_params_w_token_collisionc           
      C   sº   d}d}d}d}t d|id|ig|dœƒ}t|ƒ}|  ||¡}| ¡ }|  |d d|id|ig¡ |  |jd¡ |  |j|¡ |j\}	|  |	d	 d
¡ |  |	d |¡ |  |	d i ¡ d S )Nr   r6   r   r   r    )r   ZnextPageTokenr   r4   r&   r'   r   r(   )r   r   r   Úget_next_page_responser   r   r   r,   )
r   r   r8   r-   r.   r   r   r   r"   r   r   r   r   Ú4test_get_next_page_response_new_no_token_in_response€   s"    ÿzATestIterator.test_get_next_page_response_new_no_token_in_responsec                 C   s6   t ƒ }t|ƒ}d}|  ||¡}d|_|  t|j¡ d S r3   )r   r   r   r   rG   ÚRuntimeErrorrJ   r   r   r   r   Ú$test_get_next_page_response_no_token’   s    z1TestIterator.test_get_next_page_response_no_tokenc                 C   sV   t ƒ }t|ƒ}d}d}|  ||¡}d|_||_| ¡  |  |jd¡ |  |jd ¡ d S )Nr   r6   r4   r   )r   r   r   r   r   Úresetr   r7   r   r   r   Ú
test_resetš   s    zTestIterator.test_resetc                 C   s4   d}t ƒ }t|ƒ}|  ||¡}|  t|jtƒ ¡ d S r0   )r   r   r   rG   ÚNotImplementedErrorr*   r)   )r   r   r   r   r   r   r   r   Ú7test_get_items_from_response_raises_NotImplementedError¦   s    ÿzDTestIterator.test_get_items_from_response_raises_NotImplementedErrorN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r/   r2   r5   r9   r<   r>   rC   rF   rI   rK   rM   rO   rQ   r   r   r   r   r      s    


r   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestMethodIteratorc                 C   s   ddl m} |S )Nr   )ÚMethodIterator)r   rV   )r   rV   r   r   r   r   ±   s    z"TestMethodIterator._getTargetClassc                 O   s   |   ¡ |i |¤ŽS r	   r
   r   r   r   r   r   µ   s    zTestMethodIterator._makeOnec                 C   sl   t ƒ }|  |j¡}|  |j|j¡ |  |jd ¡ |  |jd ¡ |  |ji ¡ |  |jd ¡ |  |j	d¡ d S ©Nr   )
Ú_WithListMethodr   Úlist_foor   Ú_methodÚ_tokenÚ
_page_sizeÚ_kwÚ
_max_callsÚ	_page_num)r   Úwlmr   r   r   r   Útest_ctor_defaults¸   s    z%TestMethodIterator.test_ctor_defaultsc                 C   sˆ   t ƒ }|j}d}d}| j|j|||dd}|  |j|j¡ |  |j|¡ |  |j|¡ |  |jddi¡ |  |j	|¡ |  |j
d¡ d S )Né   é   ÚBar)Úfoo_typere   r   )rX   Ú_lettersr   rY   r   rZ   r[   r\   r]   r^   r_   )r   r`   r8   ZSIZEZCALLSr   r   r   r   Útest_ctor_explicitÂ   s    ÿz%TestMethodIterator.test_ctor_explicitc           
      C   sÄ   dd l }tƒ }|  |j¡}g }|D ]}| |¡ q"|  |t|jƒ¡ |  t|j	ƒt|ƒd ¡ t
|j	ƒD ]V\}\}}}	|dkrŒ|  |d ¡ n|  ||j|d d … ¡ |  |d ¡ |  |	i ¡ qhd S )Nr   é
   ©ÚstringrX   r   rY   Úappendr   r+   Ú	printableÚlenÚ_called_withÚ	enumerate©
r   rj   r`   r   ÚfoundÚcharÚir6   Úsizer   r   r   r   Útest___iter___defaultsÐ   s    z)TestMethodIterator.test___iter___defaultsc           
      C   sØ   dd l }tƒ }| j|jdddd}g }|D ]}| |¡ q*|  |t|jd d… ƒ¡ |  t|j	ƒt|ƒd ¡ t
|j	ƒD ]Z\}\}}}	|dkrœ|  |d ¡ n|  ||j|d d … ¡ |  |d¡ |  |	ddi¡ qxd S )Nr   rc   é   rd   )Ú	page_sizeZ	max_callsre   é   re   ri   rp   r   r   r   Ú/test___iter___explicit_size_and_maxcalls_and_kwá   s     ÿzBTestMethodIterator.test___iter___explicit_size_and_maxcalls_and_kwN)	rR   rS   rT   r   r   ra   rg   ru   ry   r   r   r   r   rU   ¯   s   
rU   c                   @   s   e Zd Zdd„ Zdd„ ZdS )rX   c                 C   s   dd l }g | _|j| _d S rW   )rj   rn   rl   rf   )r   rj   r   r   r   Ú__init__ö   s    z_WithListMethod.__init__c                 K   sf   |d ur|| j ksJ ‚| j |||f¡ |d u r4d}| j d |… | j |d …  }| _ | j p\d }||fS )Nrh   )rf   rn   rk   )r   Z
page_tokenrw   r   Úpager6   r   r   r   rY   û   s    ÿ
z_WithListMethod.list_fooN)rR   rS   rT   rz   rY   r   r   r   r   rX   ô   s   rX   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r   c                 G   s   || _ g | _d S r	   )Ú
_responsesr,   )r   Ú	responsesr   r   r   rz   	  s    z_Connection.__init__c                 K   s,   | j  |¡ | jd | jdd …  }| _|S )Nr   r4   )r,   rk   r|   )r   r   r"   r   r   r   Úapi_request  s    z_Connection.api_requestN)rR   rS   rT   rz   r~   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd„ ZdS )r   c                 C   s
   || _ d S r	   )r   )r   r   r   r   r   rz     s    z_Client.__init__N)rR   rS   rT   rz   r   r   r   r   r     s   r   )Z	unittest2ZTestCaser   rU   r)   rX   r   r   r   r   r   r   Ú<module>   s    E