
    hj                     `   d dl Z d dlZd dlmZmZ d dlZddlmZ  ed           ed          d                         Z ed           ed          ej	        j         d	                                     Z
 ed           ed          ej	        j         d
                                     ZdS )    N)	MagicMockpatch   )BaseApiClientz-genai.api_client.BaseApiClient._build_requestz'genai.api_client.BaseApiClient._requestc                    t          d          }d}d}ddi}t                      }||_        d }t                      }||j        _        || _        g }	t          j                    }
|                    |||          D ],}|	                    |           t          |	          dk    sJ -t          j                    }|	                    |||d            | 	                    |d	
           |	g dk    sJ ||
z
  dk    sJ d S )Ntest_api_keyapi_keyGET	test/pathkeyvaluec               3   L   K   g d} | D ]}t          j        d           |V  d S )Nz{"chunk": 1}z{"chunk": 2}z{"chunk": 3}皙?)timesleep)chunkschunks     a/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/google/genai/_test_api_client.pydelayed_segmentsz<test_request_streamed_non_blocking.<locals>.delayed_segments"   sB      ===F  
joookkkk        T)streamr   333333?)
r   r   return_valuesegmentsside_effectr   request_streamedappendlenassert_called_once_with)mock_requestmock_build_request
api_clienthttp_methodpathrequest_dictmock_http_requestr   mock_responser   
start_timer   end_times                r   "test_request_streamed_non_blockingr-      sA    ^444*+	$!,kk$5!   ++-'7-$+,&y{{***;lKK  e
MM%v;;!Y[[(,,4t   &&'8&FFF	CCC	C	C	C	C	J		$	$	$	$	$	$r   z-genai.api_client.BaseApiClient._async_requestc                 t  K   t          d          }d}d}ddi}t                      }||_         G d d          fd	}|| _        |                    |||          }|                    |||          }	|                    |||          }
t          j                    }t          j        ||	|
           d {V }t          j                    }|                    |||d            |j	        d
k    sJ |                     |d           | j	        d
k    sJ |g dk    sJ d||z
  cxk    rdk     sn J d S )Nr   r	   r   r   r   r   c                       e Zd Zd ZdS )(test_async_request.<locals>.MockResponsec                     || _         d S N)text)selfr3   s     r   __init__z1test_async_request.<locals>.MockResponse.__init__I   s    diiir   N)__name__
__module____qualname__r5    r   r   MockResponser0   G   s#            r   r:   c                 R   K   t          j        d           d {V   d          S )Nr   r   )asyncior   http_requestr   r:   s     r   delayed_responsez,test_async_request.<locals>.delayed_responseL   s9      
-

<   r   r   Fr>   r   )r   r   r   r   g333333?)
	ApiClientr   r   r   async_requestr   r<   gatherassert_called_with
call_count)mock_async_requestr$   r%   r&   r'   r(   r)   r?   async_coroutine1async_coroutine2async_coroutine3r+   resultsr,   r:   s                 @r   test_async_requestrK   ;   s      000*+	$!,kk$5!       
! ! ! ! ! $4 --k4NN--k4NN--k4NNy{{*.(*:       ' Y[[(''T<NNN		&!	+	+	+	+''$U (    
	&!	+	+	+	+	///	/	/	/	/	:%	,	,	,	,	,	,	,	,	,	,	,	,r   c                   K   t          d          }d}d}ddi}t                      }||_         G d d          fd	}|| _        g }t	          j                    }	|                    |||           d {V 2 3 d {V }
|                    |
           t          |          d
k    sJ 26 t	          j                    }|                    |||d            |                     |d           |g dk    sJ ||	z
  dk    sJ d S )Nr   r	   r   r   r   r   c                       e Zd Zd Zd ZdS )>test_async_request_streamed_non_blocking.<locals>.MockResponsec                     || _         d S r2   )	_segments)r4   r   s     r   r5   zGtest_async_request_streamed_non_blocking.<locals>.MockResponse.__init__v   s    dnnnr   c              3   N   K   | j         D ]}t          j        d           |V  d S )Nr   )rP   r   r   )r4   segments     r   r   zGtest_async_request_streamed_non_blocking.<locals>.MockResponse.segments{   s9      ^  '
3 r   N)r6   r7   r8   r5   r   r9   r   r   r:   rN   t   s2             
    r   r:   c                 "   K    g d          S )Nr   r9   r=   s     r   r?   zBtest_async_request_streamed_non_blocking.<locals>.delayed_response   s      <HHHIIIr   r   Tr@   r   r   )	rA   r   r   r   r   async_request_streamedr    r!   r"   )rF   r$   r%   r&   r'   r(   r)   r?   r   r+   r   r,   r:   s               @r   (test_async_request_streamed_non_blockingrU   f   s      000*+	$!,kk$5!
 
 
 
 
 
 
 
J J J J J $4 &y{{*%<<4              E MM%v;;!	
 Y[[(,,4t   ,,$T -    
CCC	C	C	C	C	J		$	$	$	$	$	$s   <B.)r<   r   unittest.mockr   r   pytestr%   r   r-   markrK   rU   r9   r   r   <module>rY      s/      * * * * * * * *  % % % % % % 677011% % 21 87%D 677677%- %-  87 87%-P 677677,% ,%  87 87,% ,% ,%r   