U
    ^g%i                     @   s   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 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 G dd deeZG dd deeZG dd deeZdS )    )Column)ForeignKeyConstraint)Integer)MetaData)String)Table   )AutogenFixtureTest   )combinations)configeq_)mock)TestBasec                   @   sd   e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
ejjdd Zdd Zdd ZdS )AutogenerateForeignKeysTestT)Z!foreign_key_constraint_reflectionc              
   C   s   t  }t  }td|tdtddd td|tdtddtdtd	d
dtdtdddtdtdtdgdg td|tdtddd td|tdtddtdtd	d
dtdtdddtdtd | ||}| j|d dddgddgdd d S )N
some_tabletest
   Tprimary_keyuseridname2   FZnullablea1xZserver_defaulttest2some_table.testr   	remove_fkservergeneratedconditional_namer   r   r   r   r   r   _fixture_assert_fk_diffselfm1m2diffs r-   e/var/www/html/api-medvista/venv/lib/python3.8/site-packages/alembic/testing/suite/test_autogen_fks.pytest_remove_fk   sN    
	z*AutogenerateForeignKeysTest.test_remove_fkc              
   C   s  t  }t  }td|tdtddtdtd td|tdtddtdtd	d
dtdtdddtdtd td|tdtddtdtd td|tdtddtdtd	d
dtdtdddtdtdtdgdg | ||}| |d dddgddg d S )Nr   r   Tr   r   r   r   r   r   Fr   r   r   r   r   r    r   add_fk)r   r   r   r   r   r   r&   r'   r(   r-   r-   r.   test_add_fkC   sP    	
     z'AutogenerateForeignKeysTest.test_add_fkc              
   C   s   t  }t  }td|tdtddtdtd td|tdtddtdtd	d
dtdtdddtdttdgdg td|tdtddtdtd td|tdtddtdtd	d
dtdtdddtdttdgdg | ||}t|g  d S )Nr   r   Tr   r   r   r   r   r   Fr   r   r   r   r   some_table.id)r   r   r   r   r   r   r&   r   r(   r-   r-   r.   test_no_changen   sD    

z*AutogenerateForeignKeysTest.test_no_changec                 C   s6  t  }t  }td|tdtdddtdtddd td|tdtddtd	td
ddtdtdddtdtdtdtdtddgddg td|tdtdddtdtddd td|tdtddtd	td
ddtdtdddtdtdtdtdtddgddg | ||}t|g  d S )Nr   id_1r   Tr   id_2r   r   r   r   Fr   r   r   r   
other_id_1
other_id_2some_table.id_1some_table.id_2r   r   r   r   r   r   r&   r   r(   r-   r-   r.   test_no_change_composite_fk   sT    z7AutogenerateForeignKeysTest.test_no_change_composite_fkc                 C   sD  t  }t  }td|tdtddd td|tdtddtdtd	d
dtdtdddtdtdtdgdgdd td|tdtddd td|tdtddtdtd	d
dtdtdddtdtdtdgdgdd | ||}| j|d dddgddgtj	j
jrdnd d | j|d dddgddgdd d S )Nr   r   r   Tr   r   r   r   r   Fr   r   r   r   r   r    ZMyFKr   Zmyfkr   r!   r   r0   )r   r   r   r   r   r   r&   r'   r   requirementsfk_namesenabledr(   r-   r-   r.   1test_casing_convention_changed_so_put_drops_first   sb    
	

zMAutogenerateForeignKeysTest.test_casing_convention_changed_so_put_drops_firstc                 C   sD  t  }t  }td|tdtdddtdtddd td|tdtddtd	td
ddtdtdddtdtdtdtd td|tdtdddtdtddd td|tdtddtd	td
ddtdtdddtdtdtdtdtddgddgdd | ||}| j|d ddddgdddgdd d S )Nr   r4   r   Tr   r5   r   r   r   r   Fr   r   r   r   r6   r7   r8   r9   fk_test_namer<   r   r0   r%   r(   r-   r-   r.   test_add_composite_fk_with_name  s^    
z;AutogenerateForeignKeysTest.test_add_composite_fk_with_namec                 C   sD  t  }t  }td|tdtdddtdtddd td|tdtddtd	td
ddtdtdddtdtdtdtdtddgddgdd td|tdtdddtdtddd td|tdtddtd	td
ddtdtdddtdtdtdtd | ||}| j|d ddddgdddgdd d S )Nr   r4   r   Tr   r5   r   r   r   r   Fr   r   r   r   r6   r7   r8   r9   rA   r<   r   r!   r#   r%   r(   r-   r-   r.   test_remove_composite_fk=  s^    
z4AutogenerateForeignKeysTest.test_remove_composite_fkc                 C   s  t  }t  }td|tdtdddtdtddd td|tdtddtd	tdtd
td td|tdtddddtdtdddd td|tdtddtd	tdddtd
tdddtddgddgdd | ||}| j|d ddd	d
gdddgdd d S )Nr   r4   r   Tr   r5   r   r   r6   r7   tid1keyr   tid2oid1rF   oid2some_table.tid1some_table.tid2rA   r<   r   r0   r%   r(   r-   r-   r.   test_add_fk_colkeysu  sV    z/AutogenerateForeignKeysTest.test_add_fk_colkeysc              
   C   s  t  }t  }td|tdtdddtdtddd td|tdtddtd	tdtd
tdtd	d
gddg td|tdtddddtdtdddd td|tdtddtd	tdddtd
tdddtddgddg | ||}t|g  d S )Nr   r4   r   Tr   r5   r   r   r6   r7   r8   r9   rD   rE   rG   rH   rI   rJ   rK   rL   r:   r(   r-   r-   r.   test_no_change_colkeys  sL     z2AutogenerateForeignKeysTest.test_no_change_colkeysN)__name__
__module____qualname____backend____requires__r/   r1   r3   r;   r@   rB   r   r=   no_name_normalizerC   rM   rN   r-   r-   r-   r.   r      s   /+*2=6
73r   c                   @   sP   e Zd ZdZdZeddejjdd Z	dd Z
eddejjd	d
 ZdS )IncludeHooksTestT)r>   )objectr<   c           	   	   C   s   t  }t  }td|tdtdd}td|tdttdt}|t|jjg|jjgdd	 |t|jj	g|jjgd
d	 td|tdtdd}td|tdttdt |dkrdd }| j
|||d}n |dkrdd }| j
|||d}| j|d dddgddgd
d tt|d d S )Nrefr   Tr   tr   yfk1r<   fk2rV   c                 S   s    t | to|dko|o|dk S Nforeign_key_constraintrZ   
isinstancer   Zobject_r   type_Z	reflectedZ
compare_tor-   r-   r.   include_object   s    
zBIncludeHooksTest.test_remove_connection_fk.<locals>.include_objectZobject_filtersr   c                 S   s<   | dkr4|dkrdS t |d t |d ddd dS dS d S )NrZ   indexTr]   rX   Zschema_nameZ
table_nameZschema_qualified_table_nameFr   r   ra   Zparent_namesr-   r-   r.   include_name  s    
z@IncludeHooksTest.test_remove_connection_fk.<locals>.include_nameZname_filtersr   r!   r#   r   r   r   r   r   append_constraintr   cr   r   rY   r&   r'   r   len)	r)   	hook_typer*   r+   rW   t1rb   r,   rg   r-   r-   r.   test_remove_connection_fk  s\    	z*IncludeHooksTest.test_remove_connection_fkc              	   C   s   t  }t  }td|tdtdd td|tdttdt td|tdtdd}td|tdttdt}|t|jjg|jjgdd	 |t|jj	g|jjgd
d	 dd }| j
|||d}| j|d dddgddgd
d	 tt|d d S )NrW   r   Tr   rX   r   rY   rZ   r<   r[   c                 S   s"   t | to|dko| o|dk S r\   r^   r`   r-   r-   r.   rb   K  s    
z=IncludeHooksTest.test_add_metadata_fk.<locals>.include_objectrc   r   r0   r   ri   )r)   r*   r+   rW   t2rb   r,   r-   r-   r.   test_add_metadata_fk)  sT          z%IncludeHooksTest.test_add_metadata_fkc              	   C   s$  t  }t  }td|tdtdd}td|tdtddtdtdd td|tdttd	ttd
t}|t|jjg|jjgdd |t|jj	g|jjgdd td|tdtdd td|tdtddtdtdd}td|tdttd	ttd
t}|t|jj|jj
g|jj|jjgdd |t|jj	|jj
g|jj|jjgdd |dkr|dd }| j|||d}	n"|dkrdd }
| j|||
d}	|dkr| j|	d ddd	gddgdd | j|	d ddd	d
gdddgdd tt|	d n$|dkr tdd |	D dddh d S ) NZref_aaTr   Zref_bbrX   r   rY   zrZ   r<   r[   rV   c                 S   s   t | to|dko|dk S r\   r^   r`   r-   r-   r.   rb     s
    
z7IncludeHooksTest.test_change_fk.<locals>.include_objectrc   r   c                 S   s<   |dkrdS | dkr4t |d t |d ddd dS dS d S )Nrd   TrZ   r]   rX   re   Fr   rf   r-   r-   r.   rg     s    
z5IncludeHooksTest.test_change_fk.<locals>.include_namerh   r   r!   r   r0      c                 S   s   h | ]}|d  |d j fqS )r   r   r<   ).0dr-   r-   r.   	<setcomp>  s     z2IncludeHooksTest.test_change_fk.<locals>.<setcomp>)r0   r[   )r0   rZ   )r!   r[   )r   r   r   r   rj   r   rk   r   rr   rY   rt   rs   r&   r'   r   rl   )r)   rm   r*   r+   Zr1arn   Zr2brp   rb   r,   rg   r-   r-   r.   test_change_fkZ  s        


      	
zIncludeHooksTest.test_change_fkN)rO   rP   rQ   rR   rS   r   r   r=   rT   ro   rq   ry   r-   r-   r-   r.   rU     s   M1rU   c                   @   s  e Zd ZdZdd Zejjdd Zejjdd Z	dd	 Z
ejjd
d Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjejjdd Zejjdd Zejjd d! Zejjejjd"d# Zejjejjd$d% Zejjejjd&d' Z ejjejjd(d) Z!ejjejjd*d+ Z"ejjd,d- Z#ejj$d.d/ Z%d0S )1AutogenerateFKOptionsTestTc              	   C   s   t  }t  }td|tdtddtdtd td|tdtddtdtd	d
dtdttdgdgf| td|tdtddtdtd td|tdtddtdtd	d
dtdttdgdgf| | ||S )Nr   r   Tr   r   r   r   r   r   Fr   tidr2   )r   r   r   r   r   r   r&   )r)   Zold_optsZnew_optsr*   r+   r-   r-   r.   _fk_opts_fixture  s>    		z*AutogenerateFKOptionsTest._fk_opts_fixturec              
   C   sV   |  i ddi}| j|d dddgddgd d	d
 | j|d dddgddgdd d S )Nondeletecascader   r!   r   r{   r   r   r"   r}   r$   r   r0   r}   r|   r'   r)   r,   r-   r-   r.   test_add_ondelete  s(    z+AutogenerateFKOptionsTest.test_add_ondeletec              
   C   sV   |  ddii }| j|d dddgddgdd	d
 | j|d dddgddgd d d S )Nr}   CASCADEr   r!   r   r{   r   r   r"   r   r   r0   r   r   r   r-   r-   r.   test_remove_ondelete  s(    z.AutogenerateFKOptionsTest.test_remove_ondeletec                 C   s"   |  ddiddi}t|g  dS )test case sensitivityr}   caSCAdeCasCadeNr|   r   r   r-   r-   r.   test_nochange_ondelete&  s
     z0AutogenerateFKOptionsTest.test_nochange_ondeletec              
   C   sV   |  i ddi}| j|d dddgddgd d	d
 | j|d dddgddgdd d S )Nonupdater~   r   r!   r   r{   r   r   r"   r   r$   r   r0   r   r   r   r-   r-   r.   test_add_onupdate-  s(    z+AutogenerateFKOptionsTest.test_add_onupdatec              
   C   sV   |  ddii }| j|d dddgddgdd	d
 | j|d dddgddgd d d S )Nr   r   r   r!   r   r{   r   r   r"   r   r   r0   r   r   r   r-   r-   r.   test_remove_onupdateF  s(    z.AutogenerateFKOptionsTest.test_remove_onupdatec                 C   s"   |  ddiddi}t|g  dS )r   r   r   r   Nr   r   r-   r-   r.   test_nochange_onupdate_  s
     z0AutogenerateFKOptionsTest.test_nochange_onupdatec                 C   s"   |  ddiddi}t|g  dS )6test the RESTRICT option which MySQL doesn't report onr}   restrictNr   r   r-   r-   r.   test_nochange_ondelete_restrictg  s
     z9AutogenerateFKOptionsTest.test_nochange_ondelete_restrictc                 C   s"   |  ddiddi}t|g  dS )r   r   r   Nr   r   r-   r-   r.   test_nochange_onupdate_restrictp  s
     z9AutogenerateFKOptionsTest.test_nochange_onupdate_restrictc                 C   s"   |  ddiddi}t|g  dS )<test the NO ACTION option which generally comes back as Noner}   	no actionNr   r   r-   r-   r.   test_nochange_ondelete_noactiony  s
     z9AutogenerateFKOptionsTest.test_nochange_ondelete_noactionc                 C   s"   |  ddiddi}t|g  dS )r   r   r   Nr   r   r-   r-   r.   test_nochange_onupdate_noaction  s
     z9AutogenerateFKOptionsTest.test_nochange_onupdate_noactionc                 C   s`   |  ddiddi}| j|d dddgdd	gd
tjdd	 | j|d dddgdd	gd
dd d
S )r   r}   r   r~   r   r!   r   r{   r   r   Nr"   r   r}   r$   r   r0   r   r}   r|   r'   r   ANYr   r-   r-   r.   "test_change_ondelete_from_restrict  s2     z<AutogenerateFKOptionsTest.test_change_ondelete_from_restrictc                 C   s`   |  ddiddi}| j|d dddgdd	gtjd
dd	 | j|d dddgdd	gdd
d d
S )r   r   r   r~   r   r!   r   r{   r   r   Nr"   r   r   r0   r   r   r   r-   r-   r.   "test_change_onupdate_from_restrict  s2     z<AutogenerateFKOptionsTest.test_change_onupdate_from_restrictc                 C   sb   |  dddddd}| j|d dddgd	d
gdddd	 | j|d dddgd	d
gddd d S )Nr   zSET NULLr   ZRESTRICTr   r!   r   r{   r   r   r"   r   r   r0   r   r   r-   r-   r.   test_ondelete_onupdate_combo  s2    z6AutogenerateFKOptionsTest.test_ondelete_onupdate_comboc              
   C   sV   |  i ddi}| j|d dddgddgd d	d
 | j|d dddgddgdd d S )N	initiallydeferredr   r!   r   r{   r   r   r"   r   r$   r   r0   r   r   r   r-   r-   r.   test_add_initially_deferred  s(    z5AutogenerateFKOptionsTest.test_add_initially_deferredc                 C   sX   |  ddii }| j|d dddgddgd	d
dd	 | j|d dddgddgd d d S )Nr   r   r   r!   r   r{   r   r   ZDEFERREDTr"   r   
deferrabler$   r   r0   r   r   r   r-   r-   r.   test_remove_initially_deferred  s*    z8AutogenerateFKOptionsTest.test_remove_initially_deferredc              
   C   sZ   |  i ddd}| j|d dddgdd	gd d
d | j|d dddgdd	gddd d S )N	immediateTr   r   r   r!   r   r{   r   r   r"   r   r   r0   r   r   r-   r-   r.   ,test_add_initially_immediate_plus_deferrable  s0     zFAutogenerateFKOptionsTest.test_add_initially_immediate_plus_deferrablec                 C   s\   |  dddi }| j|d dddgdd	gd dd
d	 | j|d dddgdd	gd d d d S )Nr   Tr   r   r!   r   r{   r   r   r"   r   r   r0   r   r   r-   r-   r.   /test_remove_initially_immediate_plus_deferrable:  s2     zIAutogenerateFKOptionsTest.test_remove_initially_immediate_plus_deferrablec                 C   s&   |  dddddd}t|g  d S )NTr   r   r   r   r   r-   r-   r.   *test_add_initially_deferrable_nochange_oneX  s
    zDAutogenerateFKOptionsTest.test_add_initially_deferrable_nochange_onec                 C   s&   |  dddddd}t|g  d S )NTr   r   r   r   r-   r-   r.   *test_add_initially_deferrable_nochange_twob  s
    zDAutogenerateFKOptionsTest.test_add_initially_deferrable_nochange_twoc                 C   s&   |  d ddd dd}t|g  d S )Nr   r   r   r   r-   r-   r.   ,test_add_initially_deferrable_nochange_threel  s
    zFAutogenerateFKOptionsTest.test_add_initially_deferrable_nochange_threec              
   C   sV   |  i ddi}| j|d dddgddgd d	d
 | j|d dddgddgdd d S Nr   Tr   r!   r   r{   r   r   r"   )r   r$   r   r0   )r   r   r   r-   r-   r.   test_add_deferrablev  s(    z-AutogenerateFKOptionsTest.test_add_deferrablec              
   C   sV   |  ddii }| j|d dddgddgdd	d
 | j|d dddgddgd d d S r   r   r   r-   r-   r.   test_remove_deferrable  s(    z0AutogenerateFKOptionsTest.test_remove_deferrableN)&rO   rP   rQ   rR   r|   r   r=   Zfk_ondelete_is_reflectedr   r   r   Zfk_onupdate_is_reflectedr   r   Zfk_onupdater   Zfk_ondelete_restrictr   Zfk_onupdate_restrictr   Zfk_ondelete_noactionr   r   r   r   r   Zfk_initiallyr   r   Zfk_deferrabler   r   r   r   r   r   Zfk_deferrable_is_reflectedr   r-   r-   r-   r.   rz     sf   &













rz   N)Z
sqlalchemyr   r   r   r   r   r   Z_autogen_fixturesr	   Ztestingr   r   r   r   r   r   rU   rz   r-   r-   r-   r.   <module>   s$      I v