U
    ÌZj'  ã                   @   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 G dd„ dejƒZdS )é   )Úfixtures)Úeq_)ÚColumn)ÚTableé   )Ú
ForeignKey)ÚInteger)Úselect)ÚString)Útestingc                   @   sŒ   e Zd ZdZdZdZdZedd„ ƒZedd„ ƒZ	dd	„ Z
d
d„ Z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dS )ÚCTETestT)ZctesZeachc              	   C   s\   t d|tdtdd�tdtdƒƒtdtdƒƒƒ t d	|tdtdd�tdtdƒƒtdtƒƒ d S )
NÚ
some_tableÚidT)Zprimary_keyÚdataé2   Ú	parent_idzsome_table.idÚsome_other_table)r   r   r   r
   r   )ÚclsÚmetadata© r   úd/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/sqlalchemy/testing/suite/test_cte.pyÚdefine_tables   s    ûûzCTETest.define_tablesc                 C   sJ   |  | jj ¡ ddd dœddddœddddœdd	ddœd
dddœg¡ d S )Né   Úd1)r   r   r   r   Úd2r   Úd3é   Úd4é   Úd5)ÚexecuteÚtablesr   Úinsert)r   Ú
connectionr   r   r   Úinsert_data%   s    





ûþzCTETest.insert_datac                 C   sf   | j j}t|ƒ |jj dddg¡¡ d¡}| t|jjƒ |jj ddg¡¡¡}t	| 
¡ dgƒ d S )Nr   r   r   Úsome_cter   ©r   )r!   r   r	   ÚwhereÚcr   Úin_Úcter    r   Úfetchall)Úselfr#   r   r*   Úresultr   r   r   Ú#test_select_nonrecursive_round_trip2   s    ÿþÿÿz+CTETest.test_select_nonrecursive_round_tripc                 C   s®   | j j}t|ƒ |jj dddg¡¡jddd�}| d¡}| ¡ }| 	t|ƒ |jj
|jjk¡¡}| t|jjƒ |jjdk¡ |jj ¡ ¡¡}t| ¡ dd	d	d
d
d
gƒ d S )Nr   r   r   r%   T)Ú	recursiveÚc1r&   )r   )r   )r!   r   r	   r'   r(   r   r)   r*   ÚaliasZ	union_allr   r   r    Úorder_byÚdescr   r+   )r,   r#   r   r*   Z	cte_aliasZst1r-   r   r   r   Ú test_select_recursive_round_trip?   s0    ÿ þÿ
ÿ
ÿ
þÿþz(CTETest.test_select_recursive_round_tripc                 C   s€   | j j}| j j}t|ƒ |jj dddg¡¡ d¡}| 	| 
¡  dddgt|ƒ¡¡ t| 	t|ƒ |jj¡¡ ¡ dd	d
gƒ d S )Nr   r   r   r%   r   r   r   )r   r   r   )r   r   r   )r   r   r   )r!   r   r   r	   r'   r(   r   r)   r*   r    r"   Úfrom_selectr   r2   r   r+   ©r,   r#   r   r   r*   r   r   r   Ú"test_insert_from_select_round_tripY   s(    ÿþÿ ÿÿÿüz*CTETest.test_insert_from_select_round_tripc                 C   s¬   | j j}| j j}| | ¡  dddgt|ƒ¡¡ t|ƒ |jj	 
dddg¡¡ d¡}| | ¡ jdd	� |jj	|jj	k¡¡ t| t|ƒ |jj¡¡ ¡ d
ddddgƒ d S )Nr   r   r   r   r   r   r%   r   )r   ©r   r   N)r   r   r   )r   r   r   )r   r   r   ©r   r   r   )r!   r   r   r    r"   r5   r	   r'   r(   r   r)   r*   ÚupdateÚvaluesr   r2   r   r+   r6   r   r   r   Útest_update_from_round_tripn   s@     ÿÿÿþÿÿþÿÿûüz#CTETest.test_update_from_round_tripc                 C   sž   | j j}| j j}| | ¡  dddgt|ƒ¡¡ t|ƒ |jj	 
dddg¡¡ d¡}| | ¡  |jj	|jj	k¡¡ t| t|ƒ |jj¡¡ ¡ dd	gƒ d S ©
Nr   r   r   r   r   r   r%   r8   r9   )r!   r   r   r    r"   r5   r	   r'   r(   r   r)   r*   Údeleter   r2   r   r+   r6   r   r   r   Útest_delete_from_round_trip‘   s2     ÿÿÿþÿÿÿÿüz#CTETest.test_delete_from_round_tripc              	   C   s¸   | j j}| j j}| | ¡  dddgt|ƒ¡¡ t|ƒ |jj	 
dddg¡¡ d¡}| | ¡  |jj	t|jj	ƒ |jj|jjk¡ ¡ k¡¡ t| t|ƒ |jj¡¡ ¡ dd	gƒ d S r=   )r!   r   r   r    r"   r5   r	   r'   r(   r   r)   r*   r>   r   Zscalar_subqueryr   r2   r+   r6   r   r   r   Ú"test_delete_scalar_subq_round_trip®   s:     ÿÿÿþÿÿÿÿÿÿüz*CTETest.test_delete_scalar_subq_round_tripN)Ú__name__Ú
__module__Ú__qualname__Z__backend__Ú__requires__Zrun_insertsZrun_deletesÚclassmethodr   r$   r.   r4   r7   r   ÚrequiresZctes_with_update_deleteZupdate_fromr<   Zdelete_fromr?   r@   r   r   r   r   r      s&   

!r   N)Ú r   Z
assertionsr   Zschemar   r   r   r   r	   r
   r   Z
TablesTestr   r   r   r   r   Ú<module>   s   