o
    E6d/                     @   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data2   r   r   metadatar   r   r   )selfr    r"   xC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\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   s`   t j !}|| d || }t| d W d    d S 1 s)w   Y  d S )N)r   z	some data)	r   dbbeginexecuteinsertvaluesselectr   first)r!   r)   connresultr"   r"   r#   _simple_roundtrip2   s
   "zTableDDLTest._simple_roundtripc                 C   &   |   }|jtjdd | | d S NFZ
checkfirst)r$   creater   r,   r5   r!   r)   r"   r"   r#   test_create_table8      zTableDDLTest.test_create_tablec                 C   s,   | j tjd}|jtjdd | | d S )Nr   Fr8   )r$   r   Ztest_schemar9   r,   r5   r:   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 r7   )r$   r9   r   r,   Zdropr:   r"   r"   r#   test_drop_tableG   s   zTableDDLTest.test_drop_tablec                 C   r6   r7   )r&   r9   r   r,   r5   r:   r"   r"   r#   test_underscore_namesN   r<   z"TableDDLTest.test_underscore_namesc                 C   sH   |   }|j|dd d|_|t| tt|dddi d S NFr8   z	a commentr   text)	r$   r9   commentr.   r   SetTableCommentr   r   get_table_commentr!   
connectionr)   r"   r"   r#   test_add_table_commentU   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$   r9   rB   r.   r   rC   ZDropTableCommentr   r   rD   rE   r"   r"   r#   test_drop_table_commenta   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_tablerE   r"   r"   r#   test_create_table_if_not_existsm   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 v  |tj	|dd tddd t|dD v  |tj	|dd d S )NTrI   r   r'   c                 S      g | ]}|d  qS namer"   .0ixr"   r"   r#   
<listcomp>       z@TableDDLTest.test_create_index_if_not_exists.<locals>.<listcomp>c                 S   rM   rN   r"   rP   r"   r"   r#   rS      rT   )
r+   r.   r   rJ   r
   r   rK   r	   get_indexesZCreateIndexr!   rF   r)   r*   r"   r"   r#   test_create_index_if_not_existsw   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$   r9   r
   r   rK   r.   r   Z	DropTabler	   rE   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 v  |tj|dd tddd t|dD v  |tj|dd d S )Nr'   c                 S   rM   rN   r"   rP   r"   r"   r#   rS      rT   z:TableDDLTest.test_drop_index_if_exists.<locals>.<listcomp>r   TrX   c                 S   rM   rN   r"   rP   r"   r"   r#   rS      rT   )	r+   r9   r
   r   rU   r.   r   Z	DropIndexr	   rV   r"   r"   r#   test_drop_index_if_exists   s$   
z&TableDDLTest.test_drop_index_if_exists)N)__name__
__module____qualname____backend__r$   r&   r+   r5   r   Zcreate_tabler   Zprovide_metadatar;   Zschemasr=   Z
drop_tabler>   r?   Zcomment_reflectionrG   rH   Ztable_ddl_if_existsrL   Zindex_ddl_if_existsrW   rY   rZ   r"   r"   r"   r#   r      sJ    
	


r   c                   @   s   e Zd ZdS )FutureTableDDLTestN)r[   r\   r]   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rRt|}|d}|d d }||fS |d fS )NfkzGforeign_key_%(table_name)s_%(column_0_N_name)s_%(referred_table_name)s__c                 s   (    | ]}d  dd tdD V  qdS ) c                 s       | ]}t d V  qdS ZabcdefNrandomchoicerQ   jr"   r"   r#   	<genexpr>       z3LongNameBlowoutTest.fk.<locals>.<genexpr>.<genexpr>   NjoinrangerQ   ir"   r"   r#   rl      
    
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   rO   )rp   rq   naming_conventionr   r   r   r   rO   
create_allr   requiresZ&foreign_key_constraint_name_reflectionenabledr   Zget_foreign_keys)	r!   r    rF   
conventionconsactual_nameinspZfksreflected_namer"   r"   r#   ra      sB   
	


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)srb   c                 s   rc   )rd   c                 s   re   rf   rg   rj   r"   r"   r#   rl      rm   z3LongNameBlowoutTest.pk.<locals>.<genexpr>.<genexpr>   Nro   rr   r"   r"   r#   rl      rt   z)LongNameBlowoutTest.pk.<locals>.<genexpr>ru   rv   rw   Trx   id_another_long_namerO   )rp   rq   ry   r   r   r   r   rO   rz   r   Zget_pk_constraint)
r!   r    rF   r}   ar~   r   r   r   r   r"   r"   r#   r      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 )NrR   z(index_%(table_name)s_%(column_0_N_name)srb   c                 s   rc   )rd   c                 s   re   rf   rg   rj   r"   r"   r#   rl     rm   z3LongNameBlowoutTest.ix.<locals>.<genexpr>.<genexpr>r   Nro   rr   r"   r"   r#   rl     rt   z)LongNameBlowoutTest.ix.<locals>.<genexpr>ru   rv   rw   Trx   r   r   rO   )rp   rq   ry   r   r   r   r   r(   rw   r   rO   rz   r   rU   )
r!   r    rF   r}   r   r~   r   r   rR   r   r"   r"   r#   rR     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)srb   c                 s   rc   )rd   c                 s   re   rf   rg   rj   r"   r"   r#   rl   5  rm   z3LongNameBlowoutTest.uq.<locals>.<genexpr>.<genexpr>r   Nro   rr   r"   r"   r#   rl   4  rt   z)LongNameBlowoutTest.uq.<locals>.<genexpr>ru   rw   r   rv   Trx   r   rO   )rp   rq   ry   r   r   r   r   rO   rz   r   Zget_unique_constraints)	r!   r    rF   r}   r~   r   r   r   r   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)srb   c                 s   rc   )rd   c                 s   re   rf   rg   rj   r"   r"   r#   rl   Q  rm   z3LongNameBlowoutTest.ck.<locals>.<genexpr>.<genexpr>r   Nro   rr   r"   r"   r#   rl   P  rt   z)LongNameBlowoutTest.ck.<locals>.<genexpr>ru   zsome_long_column_name > 5rv   rw   Trx   Zsome_long_column_namer   rO   )rp   rq   ry   r   r   r   r   rO   rz   r   Zget_check_constraints)	r!   r    rF   r}   r~   r   r   r   r   r"   r"   r#   r   L  s*   
	

zLongNameBlowoutTest.ck)ra   )r   )rR   r   r   type_)argnamesc                 C   s   t | |||\}}t|dksJ |d ur@|dt| }t|t|k r9t|dd |dt|d   d S t|| d S d S )N   r      )getattrlenr   )r!   r   r    rF   r   r   overlapr"   r"   r#   test_long_convention_nameh  s   	&z-LongNameBlowoutTest.test_long_convention_nameN)r[   r\   r]   __doc__r^   ra   r   rR   r   r   r   combinationsr{   Zcheck_constraint_reflectionZas_skipsZunique_constraint_reflectionr   r"   r"   r"   r#   r`      s"    .r`   )r   r_   r`   )rh   rd   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>   s2    % ?