o
    ËjÞh“R  ã                   @   s`  d dl Zd dlm  mZ d dlZd dlZd dlZd dl	m
Z
 d dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZ ej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)d*„ Z*d+d,„ Z+d-d.„ Z,d/d0„ Z-d1d2„ Z.d3d4„ Z/e0d5d6d7e0g d8¢d9e0d:gg d;œid<d=d>d?gd;œid@dAdBgdCdDdEdFdGdHe1e0g dI¢dGgd;œdJœidKdLdMdNg
d;œZ2e0dOe0dOe1e0dPdQdRdSdTe2igdUgd;œdJœigg d;œigg d;œZ3G dVdW„ dWe4ƒZ5dmdYdZ„Z6d[d\„ Z7d]d^„ Z8d_d`„ Z9dadb„ Z:dcdd„ Z;dedf„ Z<dgdh„ Z=didj„ Z>dkdl„ Z?dS )né    N)Úversion)Úapp)Údataset_search)Úcreate_query_string)ÚConfig)ÚUBERONS_DICT)Úhas_doi_changedÚwarn_doi_changesc                   C   s   dt jd< t  ¡ S )NTÚTESTING)r   ÚconfigÚtest_client© r   r   úC/home/cmiss/Jenkins/workspace/SPARC-API-DEV/tests/test_scicrunch.pyÚclient   s   
r   c                 C   sŽ  |   d¡}|j}d}||k}|sDt d|fd||f¡dt ¡ v s%t |¡r*t |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}d	}t
j}|j}||ƒ}	|	j}
|
ƒ }||v }|s·t d
|fd||f¡t |¡dt ¡ v s{t t
¡r€t t
¡ndt |¡dt ¡ v st |¡r•t |¡ndt |¡t |	¡t |
¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } } } } }	 }
}d S )Nz/search/éÈ   ©ú==©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚr©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7ÚnumberOfHits©Úin)zœ%(py1)s in %(py14)s
{%(py14)s = %(py12)s
{%(py12)s = %(py10)s
{%(py10)s = %(py5)s
{%(py5)s = %(py3)s.loads
}(%(py8)s
{%(py8)s = %(py6)s.data
})
}.keys
}()
}Újson)Úpy1Úpy3r   Úpy6Úpy8Úpy10Úpy12Úpy14zassert %(py16)sÚpy16)ÚgetÚstatus_codeÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr   ÚloadsÚdataÚkeys)r   r   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert0Ú@py_assert7Z@py_assert9Ú@py_assert11Ú@py_assert13Ú@py_assert2Ú@py_format15Ú@py_format17r   r   r   Útest_scicrunch_keys   s   
Šúr@   c               	   C   sL  t j t j t¡¡} t j | dd¡}t  |¡}t t	j
› dt	j› d¡}| ¡ }|d d }t|ƒD ]q\}}z|d d d d	 d d
… d }W n tyS   d}Y nw d| dd¡› d}	|	|v }
|
s¡t d|
fd|	|f¡dt ¡ v syt |	¡r~t |	¡nddt ¡ v sŠt |¡rt |¡nddœ }dd|i }tt |¡ƒ‚d }
q2d S )Nz..r   z/_search?api_key=z&q=""ÚhitsÚ_sourceÚitemr   ÚkeywordéÿÿÿÿÚXÚ	undefinedÚscicrunch_processing_v_Ú.Ú_z.pyr   )z%(py0)s in %(py2)sÚpackage_versionÚavailable_versions©r   r   úassert %(py4)sÚpy4)ÚosÚpathÚdirnameÚabspathÚ__file__ÚjoinÚlistdirÚrequestsr'   r   ÚSCI_CRUNCH_HOSTÚKNOWLEDGEBASE_KEYr   Ú	enumerateÚKeyErrorÚreplacer)   r*   r+   r,   r-   r.   r/   r0   )Úcurrent_directoryZapp_directoryrL   r   ÚresultsrA   ÚiÚhitr   rK   r4   Ú@py_format3Ú@py_format5r   r   r   Ú%test_scicrunch_versions_are_supported   s   
$þŒørc   c                 C   sj   | j dd|id}t |j¡}|d d }d}t |d ¡t d¡kr3t|d	  d
d¡|ƒr3tƒ  d}|S )Nz(/dataset_info/using_pennsieve_identifierÚ
identifier©Úquery_stringÚresultr   Tr   ú1.1.4Údoizhttps://doi.org/Ú F)	r'   r   r1   r2   r   Úparser   r\   r	   )r   Ú
dataset_idri   r   Úresponserg   Ústatusr   r   r   Úcheck_doi_status4   s   ro   c           
      C   sò  d}t | |dƒ}|rò|  d¡}t |j¡d d d d d d d	 }t |¡t d
¡kr±t |j¡d d d d }d}||k}|sft d|fd||f¡t 	|¡t 	|¡dœ }dd|i }	t
t |	¡ƒ‚d  } }}t |j¡d d d d d d }d}||k}|s©t d|fd||f¡t 	|¡t 	|¡dœ }dd|i }	t
t |	¡ƒ‚d  } }}d S t |j¡d d d d }d}||k}|sêt d|fd||f¡t 	|¡t 	|¡dœ }dd|i }	t
t |	¡ƒ‚d  } }}d S t d¡ d S )NÚ55ú10.26275/pzek-91wxz-/scicrunch-dataset/DOI%3A10.26275%2Fpzek-91wxrA   r   rB   rC   r   rD   rh   Ú_idr   ©z%(py1)s == %(py4)s©r   rO   úassert %(py6)sr!   ÚcuriezDOI:10.26275/pzek-91wxú DOI used in test is out of date.)ro   r'   r   r1   r2   r   rk   r)   r*   r.   r/   r0   ÚpytestÚskip)
r   rd   Úrun_doi_testr   Údataset_versionr9   r6   r=   rb   Ú@py_format7r   r   r   Útest_scicrunch_dataset_doiA   s   
(~Š‚r}   c                 C   sì  t | ddƒ}t | ddƒ}|ro|ro|  d¡}t |j¡d }|d d }t |¡t d	¡krm|d d
 }|d d
 }g }d}	||	k}
|
}|
sPd}||k}|}|sÅt d|
fd||	f¡dt	 
¡ v sgt |¡rlt |¡ndt |	¡dœ }dd|i }| |¡ |
s°t d|fd||f¡dt	 
¡ v s—t |¡rœt |¡ndt |¡dœ }dd|i }| |¡ t |d¡i  }dd|i }tt |¡ƒ‚d  } } }
 }	 }}g }d}	||	k}
|
}|
såd}||k}|}|s_t d|
fd||	f¡dt	 
¡ v sþt |¡rt |¡ndt |	¡dœ }dd|i }| |¡ |
sJt d|fd||f¡dt	 
¡ v s1t |¡r6t |¡ndt |¡dœ }dd|i }| |¡ t |d¡i  }dd|i }tt |¡ƒ‚d  } } }
 }	 }}d S d S t d¡ d S )Nrp   rq   Ú68z10.26275/4qvr-kwzqzV/dataset_info/using_multiple_dois/?dois=10.26275%2Fpzek-91wx&dois=10.26275%2F4qvr-kwzqr^   r   r   rh   Údataset_identifieré   r   ©z%(py2)s == %(py5)sÚdiscover_id_1©r   r   ú%(py7)sr   ©z%(py9)s == %(py12)s©Úpy9r$   ú%(py14)sr%   úassert %(py17)sÚpy17Údiscover_id_2rw   )ro   r'   r   r1   r2   r   rk   r)   r*   r+   r,   r-   r.   ÚappendÚ_format_boolopr/   r0   rx   ry   )r   Zrun_doi_test_1Zrun_doi_test_2r   r^   r{   r‚   r‹   r4   r5   r6   r9   r;   Ú@py_assert10r7   r8   Ú@py_format13r>   Ú@py_format16Ú@py_format18r   r   r   Ú#test_scicrunch_multiple_dataset_doiR   s   
þ, þ: ür’   c                 C   s¸  |   d¡}t |j¡d }|d d }t |¡t d¡krZ|d d }|d d }g }d}||k}|}	|s>d	}
||
k}|}	|	s³t d
|fd||f¡dt 	¡ v sUt 
|¡rZt |¡ndt |¡dœ }dd|i }| |¡ |sžt d
|fd||
f¡dt 	¡ v s…t 
|¡rŠt |¡ndt |
¡dœ }dd|i }| |¡ t |d¡i  }dd|i }tt |¡ƒ‚d  }	 } } } }}
g }d}||k}|}	|sÓd	}
||
k}|}	|	sLt d
|fd||f¡dt 	¡ v sët 
|¡rðt |¡ndt |¡dœ }dd|i }| |¡ |s7t d
|fd||
f¡dt 	¡ v st 
|¡r#t |¡ndt |
¡dœ }dd|i }| |¡ t |d¡i  }dd|i }tt |¡ƒ‚d  }	 } } } }}
d S d S )NzG/dataset_info/using_multiple_discoverIds/?discoverIds=55&discoverIds=68r^   r   r   rh   r   r€   rp   r~   r   r   r‚   rƒ   r„   r   r…   r†   rˆ   r%   r‰   rŠ   r‹   )r'   r   r1   r2   r   rk   r)   r*   r+   r,   r-   r.   rŒ   r   r/   r0   )r   r   r^   r{   r‚   r‹   r4   r5   r6   r9   r;   rŽ   r7   r8   r   r>   r   r‘   r   r   r   Ú#test_scicrunch_multiple_dataset_idsd   s   
þ, þ8 ür“   c                 C   s
  |   d¡}|j}d}||k}|sDt d|fd||f¡dt ¡ v s%t |¡r*t |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}t
 |j¡d	 }d
}||k}|s}t d|fd||f¡t |¡t |¡dœ }	dd|	i }
tt 	|
¡ƒ‚d  } }}d S )Nz/search/heartr   r   r   r   r   r   r   r   é   ©Ú>©z%(py1)s > %(py4)srt   ru   r!   )r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r   r1   r2   )r   r   r4   r5   r6   r7   r8   r9   r=   rb   r|   r   r   r   Útest_scicrunch_searchp   s   
Švr˜   c                 C   ó€   |   d¡}t |j¡d }d}||k}|s8t d|fd||f¡t |¡t |¡dœ }dd|i }tt |¡ƒ‚d  } }}d S )	Nú/filter-search/r   é(   r•   r—   rt   ru   r!   ©	r'   r   r1   r2   r)   r*   r.   r/   r0   ©r   r   r9   r6   r=   rb   r|   r   r   r   Útest_scicrunch_all_datav   ó   
vrž   c                 C   sŠ   | j ddddœd}t |j¡d }d}||k}|s=t d|fd	||f¡t |¡t |¡d
œ }dd|i }tt |¡ƒ‚d  } }}d S )Nrš   ÚorganÚheart)ÚtermÚfacetre   r   r”   r•   r—   rt   ru   r!   rœ   r   r   r   r   Útest_scicrunch_filter{   s   vr¤   c                 C   r™   )	Nz-/filter-search/?facet=scaffolds&term=datasetsr   é
   r•   r—   rt   ru   r!   rœ   r   r   r   r   Útest_scicrunch_filter_scaffolds€   rŸ   r¦   c                 C   r™   )	Nz4/filter-search/Heart/?facet=All+Species&term=speciesr   r¥   r•   r—   rt   ru   r!   rœ   r   r   r   r   Útest_scicrunch_basic_search…   rŸ   r§   c                 C   r™   )	NzS/multiple_dataset_info/using_multiple_mimetype/?q="*jp2*+OR+*vnd.ome.xml*+OR+*jpx*"r   é   r•   r—   rt   ru   r!   rœ   r   r   r   r   Útest_scicrunch_image_search‰   rŸ   r©   c                 C   r™   )	Nz^/filter-search/?facet=All+Species&term=species&facet=male&term=gender&facet=female&term=genderr   é   r•   r—   rt   ru   r!   rœ   r   r   r   r   Útest_scicrunch_boolean_logic   rŸ   r«   c                 C   r™   )	Nzd/filter-search/heart/?facet=All+Species&term=species&facet=male&term=gender&facet=female&term=genderr   r€   r•   r—   rt   ru   r!   rœ   r   r   r   r   Ú"test_scicrunch_combined_facet_text’   rŸ   r¬   c                 C   s    |   d¡}t |j¡}dd„ |D ƒ}d}||v }|sJt d|fd||f¡t |¡dt ¡ v s3t 	|¡r8t |¡nddœ }d	d
|i }t
t |¡ƒ‚d  }}d S )Nz/get-facets/organc                 S   s   g | ]}|d  ‘qS )Úkeyr   )Ú.0Zfacet_resultr   r   r   Ú
<listcomp>š   s    z'test_getting_facets.<locals>.<listcomp>r¡   r   ©z%(py1)s in %(py3)sÚfacets©r   r    úassert %(py5)sr   )r'   r   r1   r2   r)   r*   r.   r+   r,   r-   r/   r0   )r   r   Zfacet_resultsr±   r9   r=   Ú@py_format4r7   r   r   r   Útest_getting_facets—   s   
|rµ   c                 C   s  |   d¡}t |j¡}d}||v }|sCt d|fd||f¡t |¡dt ¡ v s,t 	|¡r1t |¡nddœ }dd|i }t
t |¡ƒ‚d  }}|d }t|ƒ}d	}||k}	|	sœt d
|	fd||f¡dt ¡ v slt 	t¡rqt t¡nddt ¡ v s}t 	|¡r‚t |¡ndt |¡t |¡dœ }
dd|
i }t
t |¡ƒ‚d  } }	}|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 }d}||k}|st d
|fd||f¡t |¡t |¡dœ }dd|i }
t
t |
¡ƒ‚d  } }}d}||v }|sSt d|fd||f¡t |¡dt ¡ v s<t 	|¡rAt |¡nddœ }dd|i }t
t |¡ƒ‚d  }}|d }d}||k}|s‡t d
|fd||f¡t |¡t |¡dœ }dd|i }
t
t |
¡ƒ‚d  } }}d S )Nz]/dataset_info/using_object_identifier?identifier=package:e6435710-dd9c-46b7-9dfd-932103469733rg   r   r°   Ú	json_datar²   r³   r   r€   r   ©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenr^   ©r   r   r    r!   úassert %(py8)sr"   r   r   z1.2.1rs   rt   ru   r!   Útitlez:Morphometric analysis of the abdominal vagus nerve in rats)r'   r   r1   r2   r)   r*   r.   r+   r,   r-   r/   r0   r¸   )r   r   r¶   r9   r=   r´   r7   r^   Ú@py_assert5r5   r|   Ú@py_format9rg   r6   rb   r   r   r   Útest_create_identifier_queryž   s   
x®xl~pr¾   c                 C   s  |   d¡}t |j¡}d}||v }|sCt d|fd||f¡t |¡dt ¡ v s,t 	|¡r1t |¡nddœ }dd|i }t
t |¡ƒ‚d  }}|d }t|ƒ}d	}||k}	|	sœt d
|	fd||f¡dt ¡ v slt 	t¡rqt t¡nddt ¡ v s}t 	|¡r‚t |¡ndt |¡t |¡dœ }
dd|
i }t
t |¡ƒ‚d  } }	}|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}|d }||v }|st d|fd||f¡t |¡t |¡dœ }dd|i }
t
t |
¡ƒ‚d  } }}|d d }t|ƒ}d	}||k}|set d
|fd||f¡dt ¡ v sBt 	t¡rGt t¡ndt |¡t |¡t |¡dœ }dd|i }t
t |¡ƒ‚d  } } }}d}|d d d }||v }|s¡t d|fd||f¡t |¡t |¡dœ }dd|i }
t
t |
¡ƒ‚d  } }}|d d d d }d}||k}|sÝt d
|fd||f¡t |¡t |¡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}|d }||v }|sRt d|fd||f¡t |¡t |¡dœ }dd|i }
t
t |
¡ƒ‚d  } }}|d d }|j}d }	||	ƒ}|s†d!t |¡t |¡t |	¡t |¡d"œ }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$}|d# }||v }|sýt d|fd||f¡t |¡t |¡dœ }dd|i }
t
t |
¡ƒ‚d  } }}|d# d$ }t|ƒ}d	}||k}|sPt d
|fd||f¡dt ¡ v s-t 	t¡r2t t¡ndt |¡t |¡t |¡dœ }dd|i }t
t |¡ƒ‚d  } } }}d%}|d# d$ d }||v }|sŒt d|fd||f¡t |¡t |¡dœ }dd|i }
t
t |
¡ƒ‚d  } }}d}|d# d$ d d% }||v }|sÈt d|fd||f¡t |¡t |¡dœ }dd|i }
t
t |
¡ƒ‚d  } }}|d# d$ d d% d }d&}||k}|st d
|fd||f¡t |¡t |¡dœ }dd|i }
t
t |
¡ƒ‚d  } }}d S )'Nz#/dataset_info/anatomy?identifier=90rg   r   r°   r¶   r²   r³   r   r€   r   r·   r¸   r^   r¹   rº   r"   r   Úanatomyr    ©z%(py1)s in %(py4)srt   ru   r!   ©z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)s©r   r   rO   r   úassert %(py9)sr‡   rv   zUBERON:0001759rs   rC   zDOI:zLassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
})r   r    r   r   Ú	organismsÚsubjectÚspecieszNCBITaxon:10116)r'   r   r1   r2   r)   r*   r.   r+   r,   r-   r/   r0   r¸   Ú
startswith)r   r   r¶   r9   r=   r´   r7   r^   r¼   r5   r|   r½   rg   r6   rb   r4   Ú@py_assert6r8   Ú@py_format10r   r   r   Útest_create_anatomy_query¯   s(   
x®xlªtx~ll~lªtx€rÊ   c                 C   s`  d}d}t | ||ƒ}|r©| jdd|id}|j d¡}t |¡}|d }t|ƒ}d}	||	k}
|
sht d	|
fd
||	f¡dt	 
¡ v sEt t¡rJt t¡ndt |¡t |¡t |	¡dœ }dd|i }tt |¡ƒ‚d  } } }
}	d}|d d }||v }|s¡t d|fd||f¡t |¡t |¡dœ }dd|i }tt |¡ƒ‚d  } }}d S t d¡ d S )NZ44z10.26275/duz8-mq3nú/dataset_info/using_doiri   re   úutf-8rg   r€   r   rÁ   r¸   rÂ   rÃ   r‡   r   r   r   rÀ   rt   ru   r!   rw   )ro   r'   r2   Údecoder   r1   r¸   r)   r*   r+   r,   r-   r.   r/   r0   rx   ry   )r   rd   ri   rz   r   r2   r¶   r4   r6   rÈ   r¼   r8   rÉ   r9   r=   rb   r|   r   r   r   Útest_response_versionÊ   s   
 rrÎ   c              	   C   sÆ  d}d}t | ||ƒ}|rÜ| jdd|id}|j d¡}t |¡}|d }t|ƒ}d}	||	k}
|
sit d	|
fd
||	f¡dt	 
¡ v sFt t¡rKt t¡ndt |¡t |¡t |	¡dœ }dd|i }tt |¡ƒ‚d  } } }
}	|d d d dkrÕ|d 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 }|d d d }d}||k}|st d	|fd||f¡dt	 
¡ v sÿt |¡rt |¡ndt |¡dœ }dd|i }tt |¡ƒ‚d  }}d}||k}|sYt d	|fd||f¡dt	 
¡ v s>t |¡rCt |¡ndt |¡dœ }dd|i }tt |¡ƒ‚d  }}d dd||df¡}|d d d D ]c}|d  d! d" D ]W}|rÏd ||f¡}|  |¡}|j d¡}t |¡}t|ƒ |d }d#}||k}|sÉt d	|fd$||f¡t |¡t |¡d%œ }d&d'|i }tt |¡ƒ‚d  } }}qyqod S t d(¡ d S t d)¡ d S )*NZ212z10.26275/lok5-wje6rË   ri   re   rÌ   rg   r€   r   rÁ   r¸   rÂ   rÃ   r‡   r   r   ú1.1.5zabi-plotr”   r   r{   ©z%(py0)s == %(py3)srd   ©r   r    r³   r   Ú1ú/rj   ÚexistsÚfilesÚdataciteÚisDescribedByrQ   Útruers   rt   ru   r!   ú)Only test abi-plot against version 1.1.5.rw   ©ro   r'   r2   rÍ   r   r1   r¸   r)   r*   r+   r,   r-   r.   r/   r0   rU   Úprintrx   ry   )r   rd   ri   rz   r   r2   r¶   r4   r6   rÈ   r¼   r8   rÉ   r   r=   r´   r7   Úpath_prefixÚplotrQ   Úr2Údata2Ú
json_data2r9   rb   r|   r   r   r   Útest_response_abi_plotÙ   s:   
 ¨|~

l€øÿrá   c              	   C   s@  d}d}t | ||ƒ}|r| jdd|id}|j d¡}t |¡}t|d ƒdkr|d d	 d
 dkr|d d	 d }|d d	 d }d}||k}	|	s}t d|	fd||f¡dt	 
¡ v sbt |¡rgt |¡ndt |¡dœ }
dd|
i }tt |¡ƒ‚d  }	}d}||k}	|	s¹t d|	fd||f¡dt	 
¡ v sžt |¡r£t |¡ndt |¡dœ }
dd|
i }tt |¡ƒ‚d  }	}d dd||df¡}|d 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 D ]c}|d d  d! D ]W}|r„d ||f¡}|  |¡}|j d¡}t |¡}t|ƒ |d }d"}||k}|s~t d|fd#||f¡t |¡t |¡d$œ }d%d&|i }tt |¡ƒ‚d  } }}q.q$|d 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' D ]c}|d d  d! D ]W}|rGd ||f¡}|  |¡}|j d¡}t |¡}t|ƒ |d }d"}||k}|sAt d|fd#||f¡t |¡t |¡d$œ }d%d&|i }tt |¡ƒ‚d  } }}qñqç|d d	 d) }	t|	ƒ}d(}||k}|sšt d|fd||f¡dt	 
¡ v swt t¡r|t t¡ndt |	¡t |¡t |¡dœ }dd|i }tt |¡ƒ‚d  }	 } }}|d d	 d) D ]c}|d d* d! D ]W}|r
d ||f¡}|  |¡}|j d¡}t |¡}t|ƒ |d }d"}||k}|st d|fd#||f¡t |¡t |¡d$œ }d%d&|i }tt |¡ƒ‚d  } }}q´qªd S t d+¡ d S t d,¡ d S d S )-NZ76z10.26275/jarb-s8jwrË   ri   re   rÌ   rg   r€   r   r   rÏ   r   r{   r   rÐ   rd   rÑ   r³   r   Ú4rÓ   rj   rÔ   rÕ   úabi-scaffold-metadata-filerÁ   r¸   rÂ   rÃ   r‡   rÖ   Z
isSourceOfrQ   rØ   rs   rt   ru   r!   zabi-scaffold-view-filer”   zabi-scaffold-thumbnailÚisDerivedFromrÙ   rw   rÚ   )r   rd   ri   rz   r   r2   r¶   r{   r=   r4   r´   r7   rÜ   r6   rÈ   r¼   r8   rÉ   rÝ   rQ   rÞ   rß   rà   r9   rb   r|   r   r   r   Útest_response_abi_scaffoldû   sl   
xxª

l€ø®


l€ø®


l€øÿÎrå   c                 C   s°  |   d¡}|j d¡}t |¡}t|ƒ |d }t|ƒ}d}||k}|s\t d|fd||f¡dt	 
¡ v s9t t¡r>t t¡ndt |¡t |¡t |¡dœ }d	d
|i }	tt |	¡ƒ‚d  } } }}|d d d }
d}|
|k}|s—t d|fd|
|f¡t |
¡t |¡dœ }dd|i }tt |¡ƒ‚d  }
 }}|d d d }
d}|
|k}|sÐt d|fd|
|f¡t |
¡t |¡dœ }dd|i }tt |¡ƒ‚d  }
 }}d S )Nz&/filter-search/?facet=liver&term=organrÌ   r^   r€   r   rÁ   r¸   rÂ   rÃ   r‡   r   Z
sampleSizeÚ9rs   rt   ru   r!   ZsubjectSize)r'   r2   rÍ   r   r1   rÛ   r¸   r)   r*   r+   r,   r-   r.   r/   r0   )r   r   r2   r¶   r4   r6   rÈ   r¼   r8   rÉ   r9   r=   rb   r|   r   r   r   Ú!test_response_sample_subject_size5  s   

 rvrç   ÚcontributorsZdataItemrC   )
ÚtypesZcontentTypesÚ
statisticsÚkeywordsÚ	publishedÚdescriptionÚnamerd   Zdocidrv   r   rD   )ÚtypeÚrequiredÚoptionalZ
techniquesÚreadmeZ
modalitiesÚnamesÚ	pennsieveZ
provenanceZsupportingAwardsr¿   Ú
attributesÚdatesZdiseasesÚdistributionsÚobjects)ÚbytesÚdatasetrd   Úmimetyperî   Úupdated)rï   rC   rÄ   Ú	protocolsZpublicationZxrefsrA   Ú_indexÚ_typerr   Z_scorerB   Z_ignoredc                   @   s   e Zd ZdS )ÚStructureDefinitionErrorN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   p  s    r   Tc                 C   sÜ   |D ]i}t |tƒr|r|| vrtd|› ƒ  dS qt| ¡ ƒdks$t‚tt|ƒƒ}|r:|| vr:td|› ƒ  dS || v rkt| | || ƒsktd|› d|| d › dt	| | ƒ› d|| › dt| | ƒ› 
ƒ  dS qd	S )
Nzfailed: Fr€   zkey failed: zstructure failed: z - rï   z, T)
Ú
isinstanceÚstrrÛ   r¸   r3   r   ÚnextÚiterÚ_test_structurerï   )r2   Ú	structurerð   Ústr­   r   r   r   Ú_test_sub_structuret  s"   
B€r  c                 C   sŠ   |d }t | |ƒrC|tu r%t| |d ddsdS t| |d dds#dS dS |tu r:| D ]}t||d ƒs7 dS q+dS tdt| ƒƒ dS dS )	Nrï   rð   T)rð   Frñ   rC   ztype if not dict or list)r  Údictr  Úlistr  rÛ   rï   )r2   r	  Zstructure_typeÚ	list_itemr   r   r   r  ‘  s"   
ùÿþr  c                 C   sà  t dƒ}t|ƒ}t|tƒ}|sRddt ¡ v st t¡r t t¡nddt ¡ v s,t |¡r1t |¡nddt ¡ v s=t t¡rBt t¡ndt |¡dœ }t	t 
|¡ƒ‚d }d}||v }|sŒt d|fd	||f¡t |¡dt ¡ v sut |¡rzt |¡ndd
œ }dd|i }t	t 
|¡ƒ‚d  }}d}|d }||v }|s¿t d|fd||f¡t |¡t |¡dœ }dd|i }	t	t 
|	¡ƒ‚d  } }}|d d }
t|
tƒ}|s	ddt ¡ v sßt t¡rät t¡ndt |
¡dt ¡ v sôt t¡rùt t¡ndt |¡dœ }t	t 
|¡ƒ‚d  }
}|d d D ]}d|d d v r,t|d d d d ƒ qtdƒ q|d d D ]}t|d  ¡ ƒ q8|d d d d d }|D ]}| dd¡ dd¡}|d kritd!d"d# qRtƒ  d S )$NZcomputationalz5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}r  r2   Úraw_structure_base)r   r   r   rO   rA   r   r°   r²   r³   r   rÀ   rt   ru   r!   z5assert %(py5)s
{%(py5)s = %(py0)s(%(py2)s, %(py3)s)
}r  r  )r   r   r    r   r   rB   rC   rD   z
no versionr   rø   rû   znot-specifiedrî   zno-namez	image/pngrI   rj   )Úend)r   r   r  r  r+   r,   r)   r-   r.   r/   r0   r*   r  r  rÛ   r3   r'   )r   Úqueryr2   r6   rb   r9   r=   r´   r7   r|   r4   r5   r`   rø   Úorû   r   r   r   Útest_raw_response_structure¨  s&   ˜xj
€
r  c                 C   sÂ  |   d¡}t |j¡}|d }d}||k}|s:t d|fd||f¡t |¡t |¡dœ }dd|i }tt |¡ƒ‚d  } }}|d	 }d
}||k}|sot d|fd||f¡t |¡t |¡dœ }dd|i }tt |¡ƒ‚d  } }}|d }d}||k}|s¤t d|fd||f¡t |¡t |¡dœ }dd|i }tt |¡ƒ‚d  } }}d}|d }||v }|sÙt d|fd||f¡t |¡t |¡dœ }dd|i }tt |¡ƒ‚d  } }}d S )Nz/get_body_scaffold_info/humanÚidÚ307r   rs   rt   ru   r!   rQ   z#derivative/human_body_metadata.jsonÚcontextinfoz0derivative/human_body_metadata_context_info.jsonzprd-sparc-discover50-use1Ús3urir   rÀ   rœ   )r   r   rg   r9   r6   r=   rb   r|   r   r   r   Útest_get_body_scaffold_infoÈ  s   
jjjnr  c                 C   s  |   d¡}t |j¡}t|d d ƒ}d}||k}|sKt d|fd||f¡dt ¡ v s0t 	|¡r5t 
|¡ndt 
|¡dœ }d	d
|i }tt |¡ƒ‚d  }}|   d¡}t |j¡}t|d d ƒ}||k}|s¥t d|fd||f¡dt ¡ v s}t 	|¡r‚t 
|¡nddt ¡ v sŽt 	|¡r“t 
|¡nddœ }	dd|	i }
tt |
¡ƒ‚d }|d d D ]T}|d tv rt|d  }|d }|j}|ƒ }||k}|s÷t d|fd||f¡t 
|¡t 
|¡t 
|¡t 
|¡dœ }dd|i }tt |¡ƒ‚d  } } } }}q­d S )Nz/get-organ-curies/ÚuberonÚarrayr   r•   ©z%(py0)s > %(py3)sÚtotalrÑ   r³   r   z /get-organ-curies/?species=human)z%(py0)s > %(py2)sÚhumanrM   rN   rO   r  rî   r   )zD%(py1)s == %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s.lower
}()
})r   rO   r!   r"   zassert %(py10)sr#   )r'   r   r1   r2   r¸   r)   r*   r+   r,   r-   r.   r/   r0   r   Úlower)r   r   Úuberons_resultsr  r=   r4   r´   r7   r  ra   rb   rC   r9   r6   r¼   r:   r½   Ú@py_format11r   r   r   Útest_getting_curiesÑ  s   
x
Š–€þr!  c           
      C   sX  |   d¡}t |j¡}t|ƒ t|d d ƒ}d}||k}|sOt d|fd||f¡dt 	¡ v s4t 
|¡r9t |¡ndt |¡dœ }d	d
|i }tt |¡ƒ‚d  }}d}|d d D ]}	|	d dkrm|	d dkrmd} nq[d}||k}|s¦t d|fd||f¡dt 	¡ v s‹t 
|¡rt |¡ndt |¡dœ }d	d
|i }tt |¡ƒ‚d  }}d S )Nz!/get-related-terms/UBERON:0002084r  r  r   r•   r  r  rÑ   r³   r   Fr  zUBERON:0000948rî   r¡   Tr   rÐ   Ú	findHeart)r'   r   r1   r2   rÛ   r¸   r)   r*   r+   r,   r-   r.   r/   r0   )
r   r   r  r  r=   r4   r´   r7   r"  rC   r   r   r   Útest_get_related_termsá  s   
x€|r#  c                 C   sz  |   d¡}t |j¡}|d }d}||k}|s:t d|fd||f¡t |¡t |¡dœ }dd|i }tt |¡ƒ‚d  } }}|d	 D ]v}d
|v rºd|v rº|d }	|d
 d d d }
t	 
dd|	› d|
› ¡}t	 
dd|	¡}|   d|› d|› ¡}|j d¡}t |¡}|d }d}||k}|s´t d|fd||f¡t |¡t |¡dœ }dd|i }tt |¡ƒ‚d  } }}qDd S )Nz/filter-search/?size=30r   r   r•   r—   rt   ru   r!   r^   rã   r  rú   rQ   zs3://[^/]*/rj   zfiles/z	s3://|/.*z/exists/z?s3BucketName=rÌ   rÔ   rØ   r   rs   )r'   r   r1   r2   r)   r*   r.   r/   r0   ÚreÚsubrÍ   )r   r   r^   r9   r6   r=   rb   r|   rC   ÚurirQ   r­   Ús3_bucket_namer2   r¶   r   r   r   Útest_scaffold_filesñ  s   
j
j€÷r(  c                 C   s2  |   d¡}t |j¡}|d }d}||k}|s:t d|fd||f¡t |¡t |¡dœ }dd|i }tt |¡ƒ‚d  } }}|d	 D ]R}|d
 }	t	|	ƒ}d}
||
k}|sŽt d|fd||
f¡dt
 ¡ v skt t	¡rpt t	¡ndt |	¡t |¡t |
¡dœ }dd|i }tt |¡ƒ‚d  }	 } }}
qDd S )Nz8/dataset_info/using_multiple_discoverIds/?discoverIds=76r   r   r•   r—   rt   ru   r!   r^   zabi-contextual-information)z/%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} > %(py7)sr¸   rÂ   rÃ   r‡   )r'   r   r1   r2   r)   r*   r.   r/   r0   r¸   r+   r,   r-   )r   r   r^   r9   r6   r=   rb   r|   rC   r4   rÈ   r¼   r8   rÉ   r   r   r   Ú#test_finding_contextual_information  s   
j¢ÿr)  c                 C   s´  d}d}| j dd|id}|j d¡}t |¡}|d }t|ƒ}d}||k}	|	s`t d	|	fd
||f¡dt 	¡ v s=t 
t¡rBt t¡ndt |¡t |¡t |¡dœ }
dd|
i }tt |¡ƒ‚d  } } }	}d}|d d }||v }|s™t d|fd||f¡t |¡t |¡dœ }dd|i }tt |¡ƒ‚d  } }}|d d d }d}||k}|sÒt d	|fd||f¡t |¡t |¡dœ }dd|i }tt |¡ƒ‚d  } }}d S )NZ17ú10.26275/mlua-o9ojrË   ri   re   rÌ   rg   r€   r   rÁ   r¸   rÂ   rÃ   r‡   r   r   r   rÀ   rt   ru   r!   rs   )r'   r2   rÍ   r   r1   r¸   r)   r*   r+   r,   r-   r.   r/   r0   )r   rd   ri   r   r2   r¶   r4   r6   rÈ   r¼   r8   rÉ   r9   r=   rb   r|   r   r   r   Ú%test_undefined_version_dataset_search	  s   
 nvr+  c           
      C   s   d}d}|   d¡}|j d¡}t |¡}d}||v }|sLt d|fd||f¡t |¡dt 	¡ v s5t 
|¡r:t |¡ndd	œ }d
d|i }	tt |	¡ƒ‚d  }}|d }||k}|sŠt d|fd||f¡t |¡dt 	¡ v sst 
|¡rxt |¡ndd	œ }d
d|i }	tt |	¡ƒ‚d  }}d S )Né	   r*  z/dataset_citations/9rÌ   r  r   r°   r¶   r²   r³   r   r   )z%(py1)s == %(py3)srd   )r'   r2   rÍ   r   r1   r)   r*   r.   r+   r,   r-   r/   r0   )
r   rd   ri   r   r2   r¶   r9   r=   r´   r7   r   r   r   Útest_dataset_citations_search  s   

x€r-  )T)@Úbuiltinsr+   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter)   r   rx   r$  Ú	packagingr   rW   rP   r   Zapp.mainr   Úapp.scicrunch_requestsr   Ú
app.configr   Zknown_uberonsr   Ú
known_doisr   r	   Úfixturer   r@   rc   ro   r}   r’   r“   r˜   rž   r¤   r¦   r§   r©   r«   r¬   rµ   r¾   rÊ   rÎ   rá   rå   rç   r  r  Zsource_structurer  Ú	Exceptionr   r  r  r  r  r!  r#  r(  r)  r+  r-  r   r   r   r   Ú<module>   s²   " 
":ÿûÿ÷

ýþÿ÷ôÿûÿÿÿòÿë
 	