o
    [h                     @   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)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data2   	parent_idzsome_table.idsome_other_table)r   r   r	   r   r   )clsmetadata r   /home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/venv/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   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   dbconnectr
   wherecr   in_cter"   r   fetchall)selfr   connr/   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   r7   r   r8   r8   )r#   r   r   r*   r+   r
   r,   r-   r   r.   r/   aliasZ	union_allr   r   r"   order_byZdescr   r0   )r1   r   r2   r/   Z	cte_aliasZst1r3   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   r.   r/   r"   r$   from_selectr   r:   r   r0   r1   r   r   r2   r/   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$   r<   r
   r,   r-   r   r.   r/   updatevaluesr   r:   r   r0   r=   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(   r?   r@   )r#   r   r   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   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 rD   )r#   r   r   r   r*   r+   r"   r$   r<   r
   r,   r-   r   r.   r/   rE   r   r   r:   r0   r=   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&   r4   r;   r>   r   requiresZctes_with_update_deleteZupdate_fromrC   Zdelete_fromrF   rG   r   r   r   r   r      s(    

"r   N) r   r   Z
assertionsr   Zschemar   r   r   r	   r
   r   r   Z
TablesTestr   r   r   r   r   <module>   s    