o
    E6d
                     @   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data2   	parent_idzsome_table.idsome_other_table)r   r   r   r
   r   )clsmetadata r   xC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\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_trip4   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   r3   r   r4   r4   )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_tripA   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   r6   r   r-   r.   r$   r   r   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}|| 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#   r9   r	   r)   r*   r   r+   r,   updatevaluesr   r6   r   r-   r:   r   r   r   test_update_from_round_tripp   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'   r<   r=   )r"   r   r   r!   r#   r9   r	   r)   r*   r   r+   r,   deleter   r6   r   r-   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 rA   )r"   r   r   r!   r#   r9   r	   r)   r*   r   r+   r,   rB   r   Zscalar_subqueryr   r6   r-   r:   r   r   r   "test_delete_scalar_subq_round_trip   s6   
z*CTETest.test_delete_scalar_subq_round_tripN)__name__
__module____qualname__Z__backend____requires__Zrun_insertsZrun_deletesclassmethodr   r%   r0   r8   r;   r   requiresZctes_with_update_deleteZupdate_fromr@   Zdelete_fromrC   rD   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   