U
    cc~+                     @   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   H/tmp/pip-unpacked-wheel-8u86ls_i/sqlalchemy/testing/suite/test_insert.pydefine_tables   s"       	zLastrowidTest.define_tablesc                 C   s(   | |  }t||jjdf d S N	some dataexecuter   firstr   dialectZdefault_sequence_baseselftableconnrowr   r   r    _assert_round_trip*   s    z LastrowidTest._assert_round_tripc                 C   s.   | | jj tdd | | jj| d S Nr#   r   r%   tablesr   insertdictr-   r)   
connectionr   r   r    test_autoincrement_on_insert4   s
    
 z*LastrowidTest.test_autoincrement_on_insertc                 C   sB   | | jj tdd}|t| jjjj}t	|j
|f d S r.   r%   r1   r   r2   r3   scalarr   cr   r   inserted_primary_keyr)   r5   rpkr   r   r    test_last_inserted_id;   s    
 z#LastrowidTest.test_last_inserted_idc                 C   sD   | | jj tdd}|j}|t| jjjj	}t
|| d S r.   )r%   r1   r   r2   r3   	lastrowidr8   r   r9   r   r   )r)   r5   r<   r?   r=   r   r   r    test_native_lastrowid_autoincC   s    
 z+LastrowidTest.test_native_lastrowid_autoincN)__name__
__module____qualname__run_deletes__backend____requires____engine_options__classmethodr!   r-   r6   r>   r   Zdbapi_lastrowidr@   r   r   r   r    r      s   

r   c                   @   s   e Zd ZdZdZe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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!   Q   sD          z InsertBehaviorTest.define_tablesc              	   C   s   t jjrtjddid}ntj}|  }|| j	j
 tdd}W 5 Q R X |jsXt|jrbt|jslt|jr| d kstd S )Nr   F)optionsr#   r/   )r   	returningZenabledr   Ztesting_enginer   dbbeginr%   r1   r   r2   r3   _soft_closedAssertionErrorclosed	is_insertreturns_rowsfetchone)r)   Zenginer+   r<   r   r   r    test_autoclose_on_insertp   s    

 


z+InsertBehaviorTest.test_autoclose_on_insertc                 C   sd   | | jj tdd}|js$t|jr.t|js8t|j	sBtt
| d  t
| dg d S )Nr#   r/   r   )r%   r1   r   r2   r3   rU   rV   rW   rX   rY   r   rZ   keysr)   r5   r<   r   r   r    +test_autoclose_on_insert_implicit_returning   s    
 



z>InsertBehaviorTest.test_autoclose_on_insert_implicit_returningc                 C   s`   | | jj }|jst|jr&t| | jj | jjj	j
d k}tt| d d S )N   r%   r1   r   r2   rU   rV   rW   r   wherer9   r   r   lenallr]   r   r   r    test_empty_insert   s    

z$InsertBehaviorTest.test_empty_insertc                 C   sh   | | jj i i i g}|js$t|jr.t| | jj | jjj	j
d k}tt| d d S )Nr	   r`   r]   r   r   r    test_empty_insert_multiple   s    

z-InsertBehaviorTest.test_empty_insert_multiplec                 C   s   | j j}| j j}|| tdddtdddtdddg || dt|jj	
|jj	ddg}t|jd	 |t|jj	|jj	}t| d
dg d S )Nr_   data1r   r   r   data2r	   data3r/   Nrh   ri   )r1   r   r   r%   r2   r3   from_selectr   r9   r   ra   in_r   r:   order_byfetchallr)   r5   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}|| dt|jj	|jj
ddg}t|jd |t|jj|jj}t| g  d S )Nr/   rh   ri   rj   )r1   r   r   r%   r2   rm   r   r9   r   ra   rn   r   r:   ro   rp   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dddtdddtdddg ||  dt|jj	d |jj
|jj
ddg t|t|jj
|jj
 d	d
d
ddg d S )Nr_   rf   rg   r   rh   r	   ri   rL   )rf   rk   rl   )r1   r   r%   r2   r3   inlinerm   r   r9   r   r   ra   rn   r   ro   rp   r)   r5   r*   r   r   r    test_insert_from_select   s,    


	z*InsertBehaviorTest.test_insert_from_selectc                 C   s   | j j}|| tdddtdddtdddg ||  dt|jj	d |jj
|jj
ddg t|t||jj
|jj	 d	d
dddg d S )Nr_   rf   rg   r   rh   r	   ri   rL   )r_   rf   rL      )r   rh   rL   rx   )   rh   rL   rx   )r	   ri   rL   rx   )   ri   rL   rx   )r1   rJ   r%   r2   r3   ru   rm   r   r9   r   r   ra   rn   r   ro   rp   rv   r   r   r    %test_insert_from_select_with_defaults  s6    


	z8InsertBehaviorTest.test_insert_from_select_with_defaultsN)rA   rB   rC   rD   rE   rH   r!   r   r   r[   rR   r^   Zempty_insertsrd   Zempty_inserts_executemanyre   Zinsert_from_selectrs   rt   rw   r{   r   r   r   r    rI   M   s(   







rI   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   )rR   r   Tr   c                 C   s(   | |  }t||jjdf d S r"   r$   r(   r   r   r    r-   7  s    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!   A  s       zReturningTest.define_tablesc                 C   sT   | j j}|| |jjtdd}| d }|	t
|jj}t|| d S Nr#   r/       r1   r   r%   r2   rR   r9   r   r3   r&   r8   r   r   r)   r5   r*   r<   r=   Z
fetched_pkr   r   r    %test_explicit_returning_pk_autocommitL  s     z3ReturningTest.test_explicit_returning_pk_autocommitc                 C   sT   | j j}|| |jjtdd}| d }|	t
|jj}t|| d S r}   r   r   r   r   r    (test_explicit_returning_pk_no_autocommitV  s     z6ReturningTest.test_explicit_returning_pk_no_autocommitc                 C   s.   | | jj tdd | | jj| d S r.   r0   r4   r   r   r    /test_autoincrement_on_insert_implicit_returning_  s
    
 z=ReturningTest.test_autoincrement_on_insert_implicit_returningc                 C   sB   | | jj tdd}|t| jjjj}t	|j
|f d S r.   r7   r;   r   r   r    (test_last_inserted_id_implicit_returningf  s    
 z6ReturningTest.test_last_inserted_id_implicit_returningN)rA   rB   rC   Zrun_create_tablesrF   rE   rG   r-   rH   r!   r   Zfetch_rows_post_commitr   r   r   r   r   r   r   r    r|   0  s   



		r|   )r   rI   r|   N) r   r   r   Z
assertionsr   r   Zschemar   r   r
   r   r   r   r   Z
TablesTestr   rI   r|   __all__r   r   r   r    <module>   s    > d?