o
    i%                     @   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)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_keytest_needs_autoincrementdata2   	manual_pkFr   autoincrementr   r   r
   r   clsmetadata r"   _/var/www/edux/Edux_v2/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dialect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   insertr3   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 r6   r   r+   r)   r9   r   r:   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 r6   )r   r+   r)   r9   r   r:   	lastrowidr@   r   rA   r   r   )r/   rD   rH   rE   r"   r"   r#   test_native_lastrowid_autoinc?   s   z+LastrowidTest.test_native_lastrowid_autoincN)__name__
__module____qualname__run_deletes__backend____requires____engine_options__classmethodr$   r3   r<   rF   r   dbapi_lastrowidrI   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'   r7   )r   	returningenabledr   testing_enginer   r+   beginr)   r9   r   r:   _soft_closedclosed	is_insertreturns_rows)r/   enginer1   rD   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 r6   )
r   r+   r)   r9   r   r:   r`   ra   rb   rc   r/   rD   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)   r9   r   r:   r`   ra   r   whererA   r   lenfetchallrf   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	   data3r7   ro   rp   )r9   r   r   r   r+   r)   r:   dictfrom_selectr   rA   r   rh   in_r   rB   order_byrj   r/   	src_table
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 )Nr7   ro   rp   )r9   r   r   r   r+   r)   r:   rt   r   rA   r   rh   ru   r   rB   rv   rj   rw   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 )Nrl   rm   rn   r   ro   r	   rp   TinlinerV   ))rm   rq   rq   rr   rr   )r9   r   r   r+   r)   r:   rs   rt   r   rA   r   r   rh   ru   r   rv   rj   r/   r0   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 )Nrl   rm   rn   r   ro   r	   rp   Tr}   rV   ))rl   rm   rV      )r   ro   rV   r   )   ro   rV   r   )r	   rp   rV   r   )   rp   rV   r   )r9   rT   r   r+   r)   r:   rs   rt   r   rA   r   r   rh   ru   r   rv   rj   r   r"   r"   r#   %test_insert_from_select_with_defaults   s.   


		z8InsertBehaviorTest.test_insert_from_select_with_defaultsN)rJ   rK   rL   rM   rN   rQ   r$   re   r   r\   rg   empty_insertsrk   insert_from_selectr{   r|   r   r   r"   r"   r"   r#   rS   I   s$    

	



rS   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   )r\   r   Tr   c                 C   r%   r&   r(   r.   r"   r"   r#   r3     r4   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'   r7       r   r+   r9   r   r_   r)   r:   r\   rA   r   r*   r@   r   r   r/   rd   r0   r1   rD   rE   
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   r5   r6   r8   r;   r"   r"   r#   /test_autoincrement_on_insert_implicit_returning1  r=   z=ReturningTest.test_autoincrement_on_insert_implicit_returningc                 C   r>   r6   r?   rC   r"   r"   r#   (test_last_inserted_id_implicit_returning6  rG   z6ReturningTest.test_last_inserted_id_implicit_returningN)rJ   rK   rL   run_create_tablesrO   rN   rP   r3   rQ   r$   r   fetch_rows_post_commitr   r   r   r   r"   r"   r"   r#   r     s    


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