U
    ÌZjò-  ã                   @   s   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 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jƒZG dd„ dejeƒZG dd„ dejƒZdZdS )é    Né   )Útestingé   )Úconfig)Úfixtures)Úutil)Úeq_)Úis_false)Úis_true)Úrequirements)ÚTableé   )ÚCheckConstraint)ÚColumn)ÚForeignKeyConstraint)ÚIndex)Úinspect)ÚInteger©Úschema)ÚString)ÚUniqueConstraintc                   @   s  e Zd ZdZddd„Zdd„ Zd dd„Zd	d
„ Zej	e
jdd„ ƒƒZej	eje
jdd„ ƒƒƒZeje
jdd„ ƒƒZej	e
jdd„ ƒƒZeje
jdd„ ƒƒZeje
jdd„ ƒƒZeje
jdd„ ƒƒZeje
jdd„ ƒƒZeje
jdd„ ƒƒZeje
jdd„ ƒƒZdS )!ÚTableDDLTestTNc              	   C   s*   t d| jtdtddd�tdtdƒƒ|d�S )	NÚ
test_tableÚidTF©Úprimary_keyZautoincrementÚdataé2   r   ©r   Úmetadatar   r   r   )Úselfr   © r"   úd/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/sqlalchemy/testing/suite/test_ddl.pyÚ_simple_fixture   s    ûzTableDDLTest._simple_fixturec              	   C   s&   t d| jtdtddd�tdtdƒƒƒS )NZ_test_tabler   TFr   Ú_datar   r   )r!   r"   r"   r#   Ú_underscore_fixture#   s    üz TableDDLTest._underscore_fixturec                 C   s"   | j |d�}td|jjƒ}||fS )Nr   Ú
test_index)r$   r   Úcr   )r!   r   ÚtableÚidxr"   r"   r#   Ú_table_index_fixture+   s    z!TableDDLTest._table_index_fixturec              	   C   sJ   t j ¡ �6}| | ¡  d¡¡ | | ¡ ¡}t| ¡ dƒ W 5 Q R X d S )N)r   z	some data)	r   ÚdbÚbeginÚexecuteÚinsertÚvaluesÚselectr   Úfirst)r!   r)   ÚconnÚresultr"   r"   r#   Ú_simple_roundtrip0   s    zTableDDLTest._simple_roundtripc                 C   s&   |   ¡ }|jtjdd� |  |¡ d S ©NF©Z
checkfirst)r$   Úcreater   r,   r5   ©r!   r)   r"   r"   r#   Útest_create_table6   s    zTableDDLTest.test_create_tablec                 C   s,   | j tjd�}|jtjdd� |  |¡ d S )Nr   Fr7   )r$   r   Ztest_schemar8   r,   r5   r9   r"   r"   r#   Útest_create_table_schema=   s    z%TableDDLTest.test_create_table_schemac                 C   s,   |   ¡ }|jtjdd� |jtjdd� d S r6   )r$   r8   r   r,   Zdropr9   r"   r"   r#   Útest_drop_tableE   s    zTableDDLTest.test_drop_tablec                 C   s&   |   ¡ }|jtjdd� |  |¡ d S r6   )r&   r8   r   r,   r5   r9   r"   r"   r#   Útest_underscore_namesL   s    z"TableDDLTest.test_underscore_namesc                 C   sH   |   ¡ }|j|dd� d|_| t |¡¡ tt|ƒ d¡ddiƒ d S ©NFr7   z	a commentr   Útext)	r$   r8   Úcommentr.   r   ÚSetTableCommentr   r   Úget_table_comment©r!   Ú
connectionr)   r"   r"   r#   Útest_add_table_commentS   s    þz#TableDDLTest.test_add_table_commentc                 C   sX   |   ¡ }|j|dd� d|_| t |¡¡ | t |¡¡ tt|ƒ 	d¡dd iƒ d S r>   )
r$   r8   r@   r.   r   rA   ZDropTableCommentr   r   rB   rC   r"   r"   r#   Útest_drop_table_comment_   s     ÿz$TableDDLTest.test_drop_table_commentc                 C   sF   |   ¡ }| tj|dd�¡ tt|ƒ d¡ƒ | tj|dd�¡ d S )NT©Zif_not_existsr   )r$   r.   r   ÚCreateTabler
   r   Ú	has_tablerC   r"   r"   r#   Útest_create_table_if_not_existsk   s    z,TableDDLTest.test_create_table_if_not_existsc                 C   sž   |   ¡ \}}| tj|dd�¡ tt|ƒ d¡ƒ tddd„ t|ƒ d¡D ƒkƒ | tj	|dd�¡ tddd„ t|ƒ d¡D ƒkƒ | tj	|dd�¡ d S )NTrG   r   r'   c                 S   s   g | ]}|d  ‘qS ©Únamer"   ©Ú.0Úixr"   r"   r#   Ú
<listcomp>~   s   ÿz@TableDDLTest.test_create_index_if_not_exists.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS rK   r"   rM   r"   r"   r#   rP   ˆ   s   ÿ)
r+   r.   r   rH   r
   r   rI   r	   Úget_indexesZCreateIndex©r!   rD   r)   r*   r"   r"   r#   Útest_create_index_if_not_existsu   s&    þÿÿþÿÿz,TableDDLTest.test_create_index_if_not_existsc                 C   sb   |   ¡ }| |¡ tt|ƒ d¡ƒ | tj|dd�¡ tt|ƒ d¡ƒ | tj|dd�¡ d S )Nr   T©Z	if_exists)	r$   r8   r
   r   rI   r.   r   Z	DropTabler	   rC   r"   r"   r#   Útest_drop_table_if_exists�   s    
z&TableDDLTest.test_drop_table_if_existsc                 C   s‚   |   ¡ \}}| |¡ tddd„ t|ƒ d¡D ƒkƒ | tj|dd�¡ tddd„ t|ƒ d¡D ƒkƒ | tj|dd�¡ d S )Nr'   c                 S   s   g | ]}|d  ‘qS rK   r"   rM   r"   r"   r#   rP   ¨   s   ÿz:TableDDLTest.test_drop_index_if_exists.<locals>.<listcomp>r   TrT   c                 S   s   g | ]}|d  ‘qS rK   r"   rM   r"   r"   r#   rP   ²   s   ÿ)	r+   r8   r
   r   rQ   r.   r   Z	DropIndexr	   rR   r"   r"   r#   Útest_drop_index_if_existsŸ   s$    
þÿÿþÿÿz&TableDDLTest.test_drop_index_if_exists)N)N)Ú__name__Ú
__module__Ú__qualname__Ú__backend__r$   r&   r+   r5   r   Zcreate_tabler   Zprovide_metadatar:   Zschemasr;   Z
drop_tabler<   r=   Zcomment_reflectionrE   rF   Ztable_ddl_if_existsrJ   Zindex_ddl_if_existsrS   rU   rV   r"   r"   r"   r#   r      sH   
	


r   c                   @   s   e Zd ZdS )ÚFutureTableDDLTestN)rW   rX   rY   r"   r"   r"   r#   r[   »   s   r[   c                   @   sr   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	e
jdddde
jj ¡ fde
jj ¡ fdd�dd„ ƒZdS )ÚLongNameBlowoutTestzjtest the creation of a variety of DDL structures and ensure
    label length limits pass on backends

    Tc           	      C   s°   ddd  dd„ tdƒD ƒ¡ i}||_td|tdtd	d
�d	d� tdgdgƒ}td|tdƒ|d	d� |j}| |¡ t	j
jjr¤t|ƒ}| d¡}|d d }||fS |d fS d S )NÚfkzGforeign_key_%(table_name)s_%(column_0_N_name)s_%(referred_table_name)s_Ú_c                 s   s&   | ]}d   dd„ tdƒD ƒ¡V  qdS )Ú c                 s   s   | ]}t  d ¡V  qdS ©ZabcdefN©ÚrandomÚchoice©rN   Újr"   r"   r#   Ú	<genexpr>Î   s     z3LongNameBlowoutTest.fk.<locals>.<genexpr>.<genexpr>é   N©ÚjoinÚrange©rN   Úir"   r"   r#   rf   Í   s   ÿz)LongNameBlowoutTest.fk.<locals>.<genexpr>é
   Úa_things_with_stuffÚid_long_column_nameT©r   )Ztest_needs_fkZaidz'a_things_with_stuff.id_long_column_nameZb_related_things_of_valuer   rL   )ri   rj   Únaming_conventionr   r   r   r   rL   Ú
create_allr   ÚrequiresZ&foreign_key_constraint_name_reflectionZenabledr   Zget_foreign_keys)	r!   r    rD   Ú
conventionÚconsÚactual_nameÚinspZfksÚreflected_namer"   r"   r#   r]   Ç   sF     
þüÿü ÿÿù	


zLongNameBlowoutTest.fkc           
   	   C   s€   ddd  dd„ tdƒD ƒ¡ i}||_td|tdtd	d
�tdtd	d
�ƒ}|j}|j}| |¡ t	|ƒ}| 
d¡}|d }	||	fS )NÚpkz.primary_key_%(table_name)s_%(column_0_N_name)sr^   c                 s   s&   | ]}d   dd„ tdƒD ƒ¡V  qdS )r_   c                 s   s   | ]}t  d ¡V  qdS r`   ra   rd   r"   r"   r#   rf   û   s     z3LongNameBlowoutTest.pk.<locals>.<genexpr>.<genexpr>é   Nrh   rk   r"   r"   r#   rf   ú   s   ÿz)LongNameBlowoutTest.pk.<locals>.<genexpr>rm   rn   ro   Trp   Úid_another_long_namerL   )ri   rj   rq   r   r   r   r   rL   rr   r   Zget_pk_constraint)
r!   r    rD   rt   Úaru   rv   rw   ry   rx   r"   r"   r#   ry   õ   s*     
þýÿ
ü

zLongNameBlowoutTest.pkc           
      C   sŽ   ddd  dd„ tdƒD ƒ¡ i}||_td|tdtd	d
�tdtƒƒ}td |jj|jj	ƒ}|j
}| |¡ t|ƒ}| d¡}|d d }	||	fS )NrO   z(index_%(table_name)s_%(column_0_N_name)sr^   c                 s   s&   | ]}d   dd„ tdƒD ƒ¡V  qdS )r_   c                 s   s   | ]}t  d ¡V  qdS r`   ra   rd   r"   r"   r#   rf     s     z3LongNameBlowoutTest.ix.<locals>.<genexpr>.<genexpr>rz   Nrh   rk   r"   r"   r#   rf     s   ÿz)LongNameBlowoutTest.ix.<locals>.<genexpr>rm   rn   ro   Trp   r{   r   rL   )ri   rj   rq   r   r   r   r   r(   ro   r{   rL   rr   r   rQ   )
r!   r    rD   rt   r|   ru   rv   rw   rO   rx   r"   r"   r#   rO     s*     
þýÿ
ü

zLongNameBlowoutTest.ixc           	      C   s†   ddd  dd„ tdƒD ƒ¡ i}||_tddƒ}td	|tdtd
d�tdtƒ|ƒ |j}| |¡ t	|ƒ}| 
d	¡}|d d }||fS )NÚuqz4unique_constraint_%(table_name)s_%(column_0_N_name)sr^   c                 s   s&   | ]}d   dd„ tdƒD ƒ¡V  qdS )r_   c                 s   s   | ]}t  d ¡V  qdS r`   ra   rd   r"   r"   r#   rf   3  s     z3LongNameBlowoutTest.uq.<locals>.<genexpr>.<genexpr>rz   Nrh   rk   r"   r"   r#   rf   2  s   ÿz)LongNameBlowoutTest.uq.<locals>.<genexpr>rm   ro   r{   rn   Trp   r   rL   )ri   rj   rq   r   r   r   r   rL   rr   r   Zget_unique_constraints)	r!   r    rD   rt   ru   rv   rw   r}   rx   r"   r"   r#   r}   -  s,     
þýÿ

û

zLongNameBlowoutTest.uqc           	      C   s„   ddd  dd„ tdƒD ƒ¡ i}||_tdƒ}td|td	td
d�tdtƒ|ƒ |j}| |¡ t	|ƒ}| 
d¡}|d d }||fS )NÚckzcheck_constraint_%(table_name)sr^   c                 s   s&   | ]}d   dd„ tdƒD ƒ¡V  qdS )r_   c                 s   s   | ]}t  d ¡V  qdS r`   ra   rd   r"   r"   r#   rf   O  s     z3LongNameBlowoutTest.ck.<locals>.<genexpr>.<genexpr>rz   Nrh   rk   r"   r"   r#   rf   N  s   ÿz)LongNameBlowoutTest.ck.<locals>.<genexpr>rm   zsome_long_column_name > 5rn   ro   Trp   Zsome_long_column_namer   rL   )ri   rj   rq   r   r   r   r   rL   rr   r   Zget_check_constraints)	r!   r    rD   rt   ru   rv   rw   r~   rx   r"   r"   r#   r~   J  s,     
þþÿ	û

zLongNameBlowoutTest.ck)r]   )ry   )rO   r~   r}   Útype_)Úargnamesc                 C   s~   t | |ƒ||ƒ\}}t|ƒdks$t‚|d k	rz|dt|ƒ… }t|ƒt|ƒk rpt|dd… |dt|ƒd … ƒ n
t||ƒ d S )Néÿ   r   éûÿÿÿé   )ÚgetattrÚlenÚAssertionErrorr   )r!   r   r    rD   rv   rx   Zoverlapr"   r"   r#   Útest_long_convention_namef  s    	 ÿ$z-LongNameBlowoutTest.test_long_convention_nameN)rW   rX   rY   Ú__doc__rZ   r]   ry   rO   r}   r~   r   Úcombinationsrs   Zcheck_constraint_reflectionZas_skipsZunique_constraint_reflectionr‡   r"   r"   r"   r#   r\   ¿   s    .úr\   )r   r[   r\   )rb   r_   r   r   r   r   Z
assertionsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   ZTestBaser   ZFutureEngineMixinr[   r\   Ú__all__r"   r"   r"   r#   Ú<module>   s0    % ?