o
    y¬´\„  ã                   @   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 G dd„ dejƒZdS )é   )Úconfig)Ú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)ÚctesÚ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)Úprimary_keyÚdataé2   Ú	parent_idzsome_table.idÚsome_other_table)r   r   r	   r   r   )ÚclsÚmetadata© r   úS/var/www/html/env/lib/python3.10/site-packages/sqlalchemy/testing/suite/test_cte.pyÚdefine_tables   s   ûûzCTETest.define_tablesc                 C   sL   t j | 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)r   ÚdbÚexecuteÚtablesr   Úinsert)r   r   r   r   Úinsert_data&   s   





ûþzCTETest.insert_datac              	   C   s”   | j j}tj ¡ �7}t|gƒ |jj 	g d¢¡¡ 
d¡}| t|jjgƒ |jj 	ddg¡¡¡}t| ¡ dgƒ W d   ƒ d S 1 sCw   Y  d S )N©r   r    r"   Úsome_cter"   r$   ©r"   )r'   r   r   r%   Úconnectr
   ÚwhereÚcr   Úin_Úcter&   r   Úfetchall)Úselfr   Úconnr1   Úresultr   r   r   Ú#test_select_nonrecursive_round_trip3   s   ý ÿ"÷z+CTETest.test_select_nonrecursive_round_tripc                 C   sÖ   | j j}tj ¡ �X}t|gƒ |jj 	g d¢¡¡j
ddd�}| d¡}| ¡ }| t|gƒ |jj|jjk¡¡}| t|jjgƒ |jjdk¡ |jj ¡ ¡¡}t| ¡ g d¢ƒ W d   ƒ d S 1 sdw   Y  d S )Nr*   r+   T)Ú	recursiveÚc1r   )r,   ©r    r9   ©r   r:   r:   )r'   r   r   r%   r-   r
   r.   r/   r   r0   r1   ÚaliasÚ	union_allr   r   r&   Úorder_byÚdescr   r2   )r3   r   r4   r1   Ú	cte_aliasÚst1r5   r   r   r   Ú test_select_recursive_round_tripA   s,   þÿ
ÿýþ"íz(CTETest.test_select_recursive_round_tripc                 C   s¬   | j j}| j j}tj ¡ �?}t|gƒ |jj	 
g d¢¡¡ d¡}| | ¡  g d¢t|gƒ¡¡ t| t|gƒ |jj¡¡ ¡ g d¢ƒ W d   ƒ d S 1 sOw   Y  d S )Nr*   r+   r   ))r   r   r   )r   r    r   )r!   r"   r   )r'   r   r   r   r%   r-   r
   r.   r/   r   r0   r1   r&   r(   Úfrom_selectr   r=   r   r2   ©r3   r   r   r4   r1   r   r   r   Ú"test_insert_from_select_round_trip\   s(   ýÿÿÿü"õz*CTETest.test_insert_from_select_round_tripc                 C   sÔ   | j j}| j j}tj ¡ �S}| | ¡  g d¢t	|gƒ¡¡ t	|gƒ 
|jj g d¢¡¡ d¡}| | ¡ jdd� 
|jj|jjk¡¡ t| t	|gƒ |jj¡¡ ¡ g d¢ƒ W d   ƒ d S 1 scw   Y  d S )Nr   r*   r+   r#   )r   )©r   r   N)r   r   r#   )r   r    r#   )r!   r"   r#   ©r#   r$   r   )r'   r   r   r   r%   r-   r&   r(   rB   r
   r.   r/   r   r0   r1   ÚupdateÚvaluesr   r=   r   r2   rC   r   r   r   Útest_update_from_round_tripr   s4   ÿÿýÿýÿü"ïz#CTETest.test_update_from_round_tripc                 C   sÌ   | j j}| j j}tj ¡ �O}| | ¡  g d¢t	|gƒ¡¡ t	|gƒ 
|jj g d¢¡¡ d¡}| | ¡  
|jj|jjk¡¡ t| t	|gƒ |jj¡¡ ¡ ddgƒ W d   ƒ d S 1 s_w   Y  d S ©Nr   r*   r+   rE   rF   )r'   r   r   r   r%   r-   r&   r(   rB   r
   r.   r/   r   r0   r1   Údeleter   r=   r   r2   rC   r   r   r   Útest_delete_from_round_trip–   s2   ÿÿýÿÿÿü"ïz#CTETest.test_delete_from_round_tripc              
   C   sä   | j j}| j j}tj ¡ �[}| | ¡  g d¢t	|gƒ¡¡ t	|gƒ 
|jj g d¢¡¡ d¡}| | ¡  
|jjt	|jjgƒ 
|jj|jjk¡k¡¡ t| t	|gƒ |jj¡¡ ¡ ddgƒ W d   ƒ d S 1 skw   Y  d S rJ   )r'   r   r   r   r%   r-   r&   r(   rB   r
   r.   r/   r   r0   r1   rK   r   r   r=   r2   rC   r   r   r   Ú"test_delete_scalar_subq_round_trip´   s:   ÿÿýÿÿÿÿÿü"ìz*CTETest.test_delete_scalar_subq_round_tripN)Ú__name__Ú
__module__Ú__qualname__Ú__backend__Ú__requires__Úrun_insertsÚrun_deletesÚclassmethodr   r)   r6   rA   rD   r   ÚrequiresÚctes_with_update_deleteÚupdate_fromrI   Údelete_fromrL   rM   r   r   r   r   r      s(    

"r   N)Ú r   r   Ú
assertionsr   Úschemar   r   r   r	   r
   r   r   Ú
TablesTestr   r   r   r   r   Ú<module>   s    