o
    y¬´\r%  ã                   @   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Údataé2   Ú	manual_pkF©r   Úautoincrement©r   r   r
   r   ©ÚclsÚmetadata© r"   úV/var/www/html/env/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   sb   t jjrtjddid�}ntj}|j| jj	 
¡ dd�}|js J ‚|jr%J ‚|js*J ‚|jr/J ‚d S )Nr   F)Úoptionsr'   r7   )r   Ú	returningÚenabledr   Útesting_enginer   r+   r)   r9   r   r:   Ú_soft_closedÚclosedÚ	is_insertÚreturns_rows)r/   ÚenginerD   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_   r`   ra   rb   ©r/   rD   r"   r"   r#   Ú+test_autoclose_on_insert_implicit_returningz   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_   r`   r   ÚwhererA   r   ÚlenÚfetchallre   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   ©rn   ©ro   )r9   r   r   r   r+   r)   r:   ÚdictÚfrom_selectr   rA   r   rg   Úin_r   rB   Úorder_byri   ©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   rn   ro   )r9   r   r   r   r+   r)   r:   rs   r   rA   r   rg   rt   r   rB   ru   ri   rv   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 )Nrk   rl   rm   r   rn   r	   ro   T©ÚinlinerV   ))rl   rp   rp   rq   rq   )r9   r   r   r+   r)   r:   rr   rs   r   rA   r   r   rg   rt   r   ru   ri   ©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 )Nrk   rl   rm   r   rn   r	   ro   Tr|   rV   ))rk   rl   rV   é   )r   rn   rV   r€   )é   rn   rV   r€   )r	   ro   rV   r€   )é   ro   rV   r€   )r9   rT   r   r+   r)   r:   rr   rs   r   rA   r   r   rg   rt   r   ru   ri   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$   rd   r   r\   rf   Úempty_insertsrj   Úinsert_from_selectrz   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   sZ   t j}| jj}|j| ¡  |jj¡dd�}| 	¡ d }t j 
t|jjgƒ¡}t||ƒ d S ©Nr'   r7   é    )r   r+   r9   r   r)   r:   r\   rA   r   r*   r@   r   r   )r/   rc   r0   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+   r9   r   Úbeginr)   r:   r\   rA   r   r*   r@   r   r   )r/   rc   r0   r1   rD   rE   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_returning/  r=   z=ReturningTest.test_autoincrement_on_insert_implicit_returningc                 C   r>   r6   r?   rC   r"   r"   r#   Ú(test_last_inserted_id_implicit_returning4  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"    : ;: