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 ddl mZ ddl mZ G dd dejZG dd dejZG dd dejZdZdS )   )config)engines)fixtures)eq_)requirements)Column)Table   )Integer)literal)literal_column)select)Stringc                   @   sR   e Zd ZdZdZdZddiZedd Zdd	 Z	d
d Z
dd Zejdd ZdS )LastrowidTesteachT)Zimplements_get_lastrowidautoincrement_insertimplicit_returningFc              	   C   sL   t d|tdtdddtdtd t d|tdtddd	tdtd d S )
N
autoinc_pkidTprimary_keyZtest_needs_autoincrementdata2   	manual_pkFr   Zautoincrementr   r   r
   r   clsmetadata r   /home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/venv/lib/python3.10/site-packages/sqlalchemy/testing/suite/test_insert.pydefine_tables   s   	zLastrowidTest.define_tablesc                 C   *   | |  }t|tjjjdf d S N	some dataexecuter   firstr   r   dbdialectZdefault_sequence_baseselftableconnrowr   r   r    _assert_round_trip*      z LastrowidTest._assert_round_tripc                 C   .   t jj| jj dd | | jjt j d S Nr$   r   r   r(   r&   tablesr   insertr/   r+   r   r   r    test_autoincrement_on_insert.      z*LastrowidTest.test_autoincrement_on_insertc                 C   D   t jj| jj dd}t jt| jjjj	g}t
|j|g d S r2   r   r(   r&   r5   r   r6   scalarr   cr   r   inserted_primary_keyr+   rpkr   r   r    test_last_inserted_id3   
   z#LastrowidTest.test_last_inserted_idc                 C   sF   t jj| jj dd}|j}t jt| jjj	j
g}t|| d S r2   )r   r(   r&   r5   r   r6   	lastrowidr<   r   r=   r   r   )r+   r@   rD   rA   r   r   r    test_native_lastrowid_autoinc?   s   z+LastrowidTest.test_native_lastrowid_autoincN)__name__
__module____qualname__run_deletes__backend____requires____engine_options__classmethodr!   r/   r8   rB   r   Zdbapi_lastrowidrE   r   r   r   r    r      s    
r   c                   @   s|   e Zd ZdZdZedd Zdd Zej	dd Z
ejd	d
 Zejdd Zejdd Zejdd Zejdd ZdS )InsertBehaviorTestr   Tc                 C   s   t d|tdtdddtdtd t d|tdtddd	tdtd t d
|tdtdddtdtdtdtddtdttdtdtd d d S )Nr   r   Tr   r   r   r   Fr   includes_defaultsx   )defaulty2)type_r   )r   r   r
   r   r   r   r   r   r   r    r!   M   s8   z InsertBehaviorTest.define_tablesc                 C   s   t jjrtjddid}ntj}| }|j| j	j
 dd}W d    n1 s*w   Y  |js4J |jr9J |js>J |jrCJ d S )Nr   F)optionsr$   r3   )r   	returningenabledr   Ztesting_enginer   r(   beginr&   r5   r   r6   _soft_closedclosed	is_insertreturns_rows)r+   enginer-   r@   r   r   r    test_autoclose_on_insertl   s   



z+InsertBehaviorTest.test_autoclose_on_insertc                 C   sD   t jj| jj dd}|jsJ |jrJ |jsJ |j	r J d S r2   )
r   r(   r&   r5   r   r6   rZ   r[   r\   r]   r+   r@   r   r   r    +test_autoclose_on_insert_implicit_returning{   s   


z>InsertBehaviorTest.test_autoclose_on_insert_implicit_returningc                 C   sb   t j| jj }|jsJ |jrJ t j| jj 	| jjj
jd k}t| s/J d S )N)r   r(   r&   r5   r   r6   rZ   r[   r   wherer=   r   lenfetchallr`   r   r   r    test_empty_insert   s   

z$InsertBehaviorTest.test_empty_insertc                 C   s   | j j}| j j}tj| tdddtdddtdddg tj| dt	|j
jg|j
jddg}t|jd g tjt	|j
jg|j
j}t| d	d
g d S )N   data1r   r   r   data2r	   data3r3   ri   rj   )r5   r   r   r   r(   r&   r6   dictfrom_selectr   r=   r   rb   in_r   r>   order_byrd   r+   Z	src_tableZ
dest_tableresultr   r   r    test_insert_from_select_autoinc   s,   


		z2InsertBehaviorTest.test_insert_from_select_autoincc                 C   s   | j j}| j j}tj| dt|j	j
g|j	j
ddg}t|jd g tjt|j	j
g|j	j
}t| g  d S )Nr3   ri   rj   )r5   r   r   r   r(   r&   r6   rn   r   r=   r   rb   ro   r   r>   rp   rd   rq   r   r   r    'test_insert_from_select_autoinc_no_rows   s   z:InsertBehaviorTest.test_insert_from_select_autoinc_no_rowsc                 C   s   | j j}tj| tdddtdddtdddg tj|jdd	dt|j	j
d
 |j	jg|j	jddg ttjt|j	jg|j	j g d d S )Nrf   rg   rh   r   ri   r	   rj   TinlinerQ   ))rg   rk   rk   rl   rl   )r5   r   r   r(   r&   r6   rm   rn   r   r=   r   r   rb   ro   r   rp   rd   r+   r,   r   r   r    test_insert_from_select   s.   


		z*InsertBehaviorTest.test_insert_from_selectc                 C   s   | j j}tj| tdddtdddtdddg tj|jdd	dt|j	j
d
 |j	jg|j	jddg ttjt|g|j	j|j	j
 g d d S )Nrf   rg   rh   r   ri   r	   rj   Tru   rQ   ))rf   rg   rQ      )r   ri   rQ   ry   )   ri   rQ   ry   )r	   rj   rQ   ry   )   rj   rQ   ry   )r5   rO   r   r(   r&   r6   rm   rn   r   r=   r   r   rb   ro   r   rp   rd   rw   r   r   r    %test_insert_from_select_with_defaults   s.   


		z8InsertBehaviorTest.test_insert_from_select_with_defaultsN)rF   rG   rH   rI   rJ   rM   r!   r_   r   rW   ra   Zempty_insertsre   Zinsert_from_selectrs   rt   rx   r|   r   r   r   r    rN   I   s$    

	



rN   c                   @   sZ   e Zd ZdZdZdZddiZdd Zedd Z	e
jd	d
 Zdd Zdd Zdd ZdS )ReturningTestr   )rW   r   Tr   c                 C   r"   r#   r%   r*   r   r   r    r/     r0   z ReturningTest._assert_round_tripc              	   C   s(   t d|tdtdddtdtd d S )Nr   r   Tr   r   r   r   r   r   r   r    r!     s   zReturningTest.define_tablesc                 C   s   t j}| jj}| }|j| |jj	dd}W d    n1 s$w   Y  |
 d }t jt|jj	g}t|| d S Nr$   r3       r   r(   r5   r   rY   r&   r6   rW   r=   r   r'   r<   r   r   r+   r^   r,   r-   r@   rA   Z
fetched_pkr   r   r    %test_explicit_returning_pk_autocommit  s   
z3ReturningTest.test_explicit_returning_pk_autocommitc                 C   s   t j}| jj}| }|j| |jj	dd}|
 d }W d    n1 s*w   Y  t jt|jj	g}t|| d S r~   r   r   r   r   r    (test_explicit_returning_pk_no_autocommit&  s   
z6ReturningTest.test_explicit_returning_pk_no_autocommitc                 C   r1   r2   r4   r7   r   r   r    /test_autoincrement_on_insert_implicit_returning1  r9   z=ReturningTest.test_autoincrement_on_insert_implicit_returningc                 C   r:   r2   r;   r?   r   r   r    (test_last_inserted_id_implicit_returning6  rC   z6ReturningTest.test_last_inserted_id_implicit_returningN)rF   rG   rH   Zrun_create_tablesrK   rJ   rL   r/   rM   r!   r   Zfetch_rows_post_commitr   r   r   r   r   r   r   r    r}     s    


r}   )r   rN   r}   N) r   r   r   Z
assertionsr   r   Zschemar   r   r
   r   r   r   r   Z
TablesTestr   rN   r}   __all__r   r   r   r    <module>   s"    : <;