a
    !f=                     @   s>   d dl Z G dd de j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S ) 
TestClientc                 C   s   ddl m} |S )Nr   )Client)Zgcloud.bigquery.clientr   )selfr    r   \/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/bigquery/test_client.py_getTargetClass   s    zTestClient._getTargetClassc                 O   s   |   |i |S N)r   )r   argskwr   r   r   _makeOne   s    zTestClient._makeOnec                 C   sf   ddl m} d}t }t }| j|||d}| t|j| | |jj|u  | |jj	|u  d S )Nr   )
ConnectionPROJECTprojectcredentialshttp)
Zgcloud.bigquery.connectionr   _Credentialsobjectr   
assertTrue
isinstance
connectionr   r   )r   r   r   credsr   clientr   r   r   	test_ctor   s    zTestClient.test_ctorc                 C   sB  ddl m} d}d}d}d| }d}|dd	||f ||d
d ddd	||f ||d
ddgd}t }| ||}	t| }
|	_|	 \}}| t|t|d  t	||d D ]<\}}| 
t|| | |j|d  | |j|d  q| || | t|
jd |
jd }| |d d | |d d|  d S )Nr   Datasetr   Zdataset_oneZdataset_twoprojects/%s/datasetsTOKENzbigquery#dataset%s:%s)	datasetId	projectId)kindidZdatasetReferencefriendlyNameZTwo)nextPageTokendatasetsr%   r"   r#      methodGETpath/%s)gcloud.bigquery.datasetr   r   r   _Connectionr   list_datasetsassertEquallenzipr   r   Z
dataset_idZfriendly_name
_requested)r   r   r   Z	DATASET_1Z	DATASET_2PATHr   DATAr   r   connr%   tokenfoundexpectedreqr   r   r   test_list_datasets_defaults%   sJ    


z&TestClient.test_list_datasets_defaultsc                 C   s   d}d| }d}i }t  }| ||}t| }|_|jdd|d\}}	| t|d | |	d  | t|jd |jd }
| |
d	 d
 | |
d d|  | |
d dd|d d S )Nr   r   r   T   )Zinclude_allmax_results
page_tokenr   r&   r'   r(   r)   r*   query_params)all
maxResults	pageToken)r   r   r,   r   r-   r.   r/   r1   )r   r   r2   r   r3   r   r   r4   r%   r5   r8   r   r   r   9test_list_datasets_explicit_response_missing_datasets_keyM   s&    



zDTestClient.test_list_datasets_explicit_response_missing_datasets_keyc                 C   sl   ddl m} d}d}t }t }| j|||d}||}| t|| | |j	| | |j
|u  d S )Nr   r   r   dataset_namer   )r+   r   r   r   r   datasetr   r   r.   name_client)r   r   r   DATASETr   r   r   rC   r   r   r   test_datasetc   s    
zTestClient.test_datasetc                 C   sV   d}t  }| ||}| t" |ddi ii W d    n1 sH0    Y  d S )Nr   configurationZnonesuch)r   r   assertRaises
ValueErrorZjob_from_resource)r   r   r   r   r   r   r   #test_job_from_resource_unknown_typeo   s
    z.TestClient.test_job_from_resource_unknown_typec              	   C   s6  ddl m} ddl m} ddl m} ddl m} d}d}d}d	}d
}	d}
d}||||d}d| }d}d}d|df |dddd||||	ddddid}d|df |dddd|||d|gdid}d|df |dddd|||dg|||dd id}d|d!f |d!ddd"|||d|
gd#id}|||||gd$}t }| ||}t| }|_|	 \}}| 
t|t|d%  t||d% D ]8\}}|d& d' }| t|||  | 
|j| q| 
|| | 
t|jd( |jd }| 
|d) d* | 
|d+ d,|  | 
|d- d.d/i d S )0Nr   LoadTableFromStorageJobCopyJobExtractTableToStorageJobQueryJobr   rG   source_tabledestination_tableZquery_destination_tablezgs://test_bucket/src_object*zgs://test_bucket/dst_object*)load_jobcopy_jobextract_job	query_jobprojects/%s/jobsr   z%SELECT * from test_dataset:test_tabler   rY   r    jobIdDONEqueryr    r   ZtableIdZCREATE_IF_NEEDEDZWRITE_TRUNCATE)r^   destinationTableZcreateDispositionZwriteDispositionr"   jobReferencestaterH   rX   extract)ZsourceTableZdestinationUrisrW   copy)ZsourceTablesr`   rV   load)r`   Z
sourceUrisr$   jobsrh   rb   r\   r&   r'   r(   r)   r*   r=   
projectionfull)gcloud.bigquery.jobrM   rO   rQ   rS   r   r   r,   r   	list_jobsr.   r/   r0   r   r   rD   r1   )r   rM   rO   rQ   rS   r   rF   SOURCE_TABLEZDESTINATION_TABLEZQUERY_DESTINATION_TABLE
SOURCE_URIZDESTINATION_URI	JOB_TYPESr2   r   QUERYZASYNC_QUERY_DATAZEXTRACT_DATAZ	COPY_DATA	LOAD_DATAr3   r   r   r4   rh   r5   r6   r7   rD   r8   r   r   r   test_list_jobs_defaultsv   s    



	
z"TestClient.test_list_jobs_defaultsc              	   C   sR  ddl m} d}d}d}d|i}d| }d}d	|df |dd
ddd|||diid}||gd}	t }
| ||
}t|	 }|_| \}}| t|t|	d  t	||	d D ]6\}}|d d }| 
t|||  | |j| q| || | t|jd |jd }| |d d | |d d|  | |d ddi d S )Nr   rL   r   rG   rT   rV   rZ   r   r   r[   r]   rf   r`   r_   ra   rg   rh   rb   r\   r&   r'   r(   r)   r*   r=   ri   rj   )rk   rM   r   r   r,   r   rl   r.   r/   r0   r   r   rD   r1   )r   rM   r   rF   rm   ro   r2   r   rq   r3   r   r   r4   rh   r5   r6   r7   rD   r8   r   r   r   %test_list_jobs_load_job_wo_sourceUris   sR    

z0TestClient.test_list_jobs_load_job_wo_sourceUrisc              	   C   s   d}d| }i }d}t  }| ||}t| }|_|jd|ddd\}}	| t|d | |	d  | t|jd	 |jd }
| |
d
 d | |
d d|  | |
d dd|ddd d S )Nr   rZ   r   i  Tdone)r;   r<   Z	all_usersZstate_filterr   r&   r'   r(   r)   r*   r=   rj   )ri   r?   r@   ZallUsersZstateFilter)r   r   r,   r   rl   r.   r/   r1   )r   r   r2   r3   r   r   r   r4   rh   r5   r8   r   r   r   test_list_jobs_explicit_missing)  s0    


z*TestClient.test_list_jobs_explicit_missingc                 C   s   ddl m} d}d}d}d}d}t }t }| j|||d}	|	|}
|
|}|	|||}| t	|| | |j
|	u  | |j| | t|j|g | |j|u  d S )	Nr   rL   r   job_namerB   rU   zhttp://example.com/source.csvr   )rk   rM   r   r   r   rC   tableZload_table_from_storager   r   rE   r.   rD   listZsource_urisdestination)r   rM   r   JOBrF   DESTINATIONrn   r   r   r   rC   ry   jobr   r   r   test_load_table_from_storageC  s"    

z'TestClient.test_load_table_from_storagec                 C   s   ddl m} d}d}d}d}d}t }t }| j|||d}	|	|}
|
|}|
|}|	|||}| t	|| | |j
|	u  | |j| | t|j|g | |j|u  d S )	Nr   rN   r   rv   rB   rT   rU   r   )rk   rO   r   r   r   rC   rw   Z
copy_tabler   r   rE   r.   rD   rx   sourcesry   )r   rO   r   rz   rF   SOURCEr{   r   r   r   rC   sourcery   r|   r   r   r   test_copy_tableV  s$    


zTestClient.test_copy_tablec                 C   s   ddl m} d}d}d}d}d}t }t }| j|||d}	|	|}
|
|}|	|||}| t	|| | |j
|	u  | |j| | |j| | t|j|g d S )	Nr   rP   r   rv   rB   rT   zgs://bucket_name/object_namer   )rk   rQ   r   r   r   rC   rw   Zextract_table_to_storager   r   rE   r.   rD   r   rx   Zdestination_uris)r   rQ   r   rz   rF   r   r{   r   r   r   rC   r   r|   r   r   r   test_extract_table_to_storagej  s"    

z(TestClient.test_extract_table_to_storagec           	      C   s   ddl m} d}d}d}t }t }| j|||d}|||}| t|| | |j|u  | 	|j
| | 	|j| d S )Nr   rR   r   rv   select count(*) from personsr   )rk   rS   r   r   r   Zrun_async_queryr   r   rE   r.   rD   r^   )	r   rS   r   rz   rp   r   r   r   r|   r   r   r   test_run_async_query}  s    zTestClient.test_run_async_queryc                 C   sz   ddl m} d}d}t }t }| j|||d}||}| t|| | |j|u  | 	|j
d  | 	|j| d S )Nr   )QueryResultsr   r   r   )Zgcloud.bigquery.queryr   r   r   r   Zrun_sync_queryr   r   rE   r.   rD   r^   )r   r   r   rp   r   r   r   r|   r   r   r   test_run_sync_query  s    
zTestClient.test_run_sync_queryN)__name__
__module____qualname__r   r   r   r9   rA   rG   rK   rr   rs   ru   r}   r   r   r   r   r   r   r   r   r      s   
(4r   c                   @   s$   e Zd ZdZedd Zdd ZdS )r   Nc                   C   s   dS )NTr   r   r   r   r   create_scoped_required  s    z#_Credentials.create_scoped_requiredc                 C   s
   || _ | S r   )_scopes)r   scoper   r   r   create_scoped  s    z_Credentials.create_scoped)r   r   r   r   staticmethodr   r   r   r   r   r   r     s   
r   c                   @   s   e Zd Zdd Zdd ZdS )r,   c                 G   s   || _ g | _d S r   )
_responsesr1   )r   	responsesr   r   r   __init__  s    z_Connection.__init__c                 K   s,   | j | | jd | jdd   }| _|S )Nr   r&   )r1   appendr   )r   r
   responser   r   r   api_request  s    z_Connection.api_requestN)r   r   r   r   r   r   r   r   r   r,     s   r,   )Z	unittest2ZTestCaser   r   r   r,   r   r   r   r   <module>   s      
