o
    ÕÜg3  ć                   @   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)Ś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   ś[/var/www/html/api-tag/env/lib/python3.10/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   sd   | j j}t| |jj g d¢”” d”}| t|jj |jj ddg”””}t	| 
” dg d S )N©r   r   r!   Śsome_cter!   r#   ©r!   )r%   r   r	   ŚwhereŚcr   Śin_Ścter$   r   Śfetchall)Śselfr'   r   r/   Śresultr   r   r   Ś#test_select_nonrecursive_round_trip:   s   ż’z+CTETest.test_select_nonrecursive_round_tripc                 C   s¤   | j j}t| |jj g d¢””jddd}| d”}| ” }| 	t| |jj
|jjk””}| t|jj |jjdk” |jj ” ””}t| ” g d¢ d S )Nr)   r*   T)Ś	recursiveŚc1r   )r+   ©r   r6   ©r   r7   r7   )r%   r   r	   r,   r-   r   r.   r/   ŚaliasŚ	union_allr   r   r$   Śorder_byŚdescr   r0   )r1   r'   r   r/   Ś	cte_aliasŚst1r2   r   r   r   Ś test_select_recursive_round_tripG   s(   ž’
’
żžz(CTETest.test_select_recursive_round_tripc                 C   sz   | j j}| j j}t| |jj g d¢”” d”}| 	| 
”  g d¢t|”” t| 	t| |jj”” ” g d¢ 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&   Śfrom_selectr   r:   r   r0   ©r1   r'   r   r   r/   r   r   r   Ś"test_insert_from_select_round_tripa   s$   ż’’’üz*CTETest.test_insert_from_select_round_tripc                 C   s¢   | j j}| j j}| | ”  g d¢t|”” t| |jj	 
g d¢”” d”}| | ” jdd |jj	|jj	k”” t| t| |jj”” ” g d¢ 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,   r-   r   r.   r/   ŚupdateŚvaluesr   r:   r   r0   r@   r   r   r   Śtest_update_from_round_tripv   s0   ’’ż’ż’üz#CTETest.test_update_from_round_tripc                 C   s   | j j}| j j}| | ”  g d¢t|”” t| |jj	 
g d¢”” d”}| | ”  |jj	|jj	k”” t| t| |jj”” ” ddg d S ©Nr   r)   r*   rB   rC   )r%   r   r   r$   r&   r?   r	   r,   r-   r   r.   r/   Śdeleter   r:   r   r0   r@   r   r   r   Śtest_delete_from_round_trip   s.   ’’ż’’’üz#CTETest.test_delete_from_round_tripc              	   C   s“   | j j}| j j}| | ”  g d¢t|”” t| |jj	 
g d¢”” d”}| | ”  |jj	t|jj	 |jj|jjk” ” k”” t| t| |jj”” ” ddg d S rG   )r%   r   r   r$   r&   r?   r	   r,   r-   r   r.   r/   rH   r   Śscalar_subqueryr   r:   r0   r@   r   r   r   Ś"test_delete_scalar_subq_round_trip¶   s6   ’’ż
ż’’’üz*CTETest.test_delete_scalar_subq_round_tripN)Ś__name__Ś
__module__Ś__qualname__Ś__backend__Ś__requires__Śrun_insertsŚrun_deletesŚclassmethodr   r(   r3   r>   rA   r   ŚrequiresŚctes_with_update_deleteŚupdate_fromrF   Śdelete_fromrI   rK   r   r   r   r   r      s(    

!r   N)Ś r   Ś
assertionsr   Śschemar   r   r   r   r	   r
   r   Ś
TablesTestr   r   r   r   r   Ś<module>   s   