o
    g                     @   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 G dd dejZdS )    )	bindparam)Column)Integer)MetaData)select)String)Table)testing)text)eq_)fixturesc                   @   s   e Zd ZdZdZdZedd Zedd Zdd	 Z	e
d
g de
dddgdd Zdd Zdd Ze
dddge
dde
jjfde
jjfgdd Zdd Zdd Zdd Ze
jjd d! Ze
jjd"d# Zd$S )%RowCountTestztest rowcount functionality)sane_rowcountTc              	   C   s4   t d|tdtdddtdtdtdtd	 d S )
N	employeesemployee_idFTautoincrementprimary_keyname2   
department   )r   r   r   r   )clsmetadata r   `/var/www/html/api-tag/env/lib/python3.10/site-packages/sqlalchemy/testing/suite/test_rowcount.pydefine_tables   s   zRowCountTest.define_tablesc                 C   s8   g d | _ }| jj}|| dd t|D  d S )N)	)AngelaA)Andrewr   )Anandr   )BobB)Bobetter"   )Buffyr"   )CharlieC)Cynthiar&   )Chrisr&   c                 S   s    g | ]\}\}}|||d qS )r   r   r   r   ).0indr   r   r   
<listcomp><   s    

z,RowCountTest.insert_data.<locals>.<listcomp>)datatablesr   executeinsert	enumerate)r   
connectionr/   employees_tabler   r   r   insert_data+   s   zRowCountTest.insert_datac                 C   sB   | j j}t|jj|jj|jj}||	 }t
|| j d S )N)r0   r   r   cr   r   order_byr   r1   fetchallr   r/   )selfr4   r5   srowsr   r   r   
test_basicB   s   
zRowCountTest.test_basic	statement)updatedeleter2   r   close_firstFc              	   C   s   | j j}|jj}|jr|| |dkddi}nO|jr.|| |dkddi}n<|jrI|| dddddd	ddd
dddg}n!|j	rft	|jj
|jj|jjdk}||}|  n|  |rp|  |jdv swJ d S )Nr&   r   Z   znone 1Xr)      znone 2   znone 3)   )r0   r   r7   r   r?   r1   wherer@   r2   r   r   allfailcloserowcount)r:   r4   r>   rA   r5   r   rr;   r   r   r   $test_non_rowcount_scenarios_no_raiseK   s@   




z1RowCountTest.test_non_rowcount_scenarios_no_raisec                 C   s@   | j j}|jj}|| |dkddi}|jdksJ d S )Nr&   r   rB   rH   )r0   r   r7   r   r1   r?   rI   rM   r:   r4   r5   r   rN   r   r   r   test_update_rowcount1v   s   z"RowCountTest.test_update_rowcount1c                 C   s>   | j j}|jj}|| |dkddi}t|jd d S )Nr&   r   rH   )	r0   r   r7   r   r1   r?   rI   r   rM   rP   r   r   r   test_update_rowcount2   s   z"RowCountTest.test_update_rowcount2implicit_returningdmlr?   r@   c              	   C   s   |r| j j}ntdt tdtdddtdtdtdtd	dd
}|jj}|j	r=|	 
|dkj|jjd d }n|jrL| 
|dk }n|  ||}t|jd dS )znote this test should succeed for all RETURNING backends
        as of 2.0.  In
        Idf28379f8705e403a3c6a937f6a798a042ef2540 we changed rowcount to use
        len(rows) when we have implicit returning

        r   r   FTr   r   r   r   r   )rS   r&   rB   )r   rH   N)r0   r   r   r   r   r   r   r7   r   r?   rI   valuesreturn_defaultsr@   rK   r1   r   rM   )r:   r4   rS   rT   r5   r   stmtrN   r   r   r   +test_update_delete_rowcount_return_defaults   s>   



z8RowCountTest.test_update_delete_rowcount_return_defaultsc                 C   s   | d}t|jd d S Nz8update employees set department='Z' where department='C'rH   )exec_driver_sqlr   rM   r:   r4   resultr   r   r   test_raw_sql_rowcount   s   z"RowCountTest.test_raw_sql_rowcountc                 C   s   | td}t|jd d S rY   )r1   r
   r   rM   r[   r   r   r   test_text_rowcount   s   zRowCountTest.test_text_rowcountc                 C   s8   | j j}|jj}|| |dk}t|jd d S )Nr&   rH   )	r0   r   r7   r   r1   r@   rI   r   rM   rP   r   r   r   test_delete_rowcount   s   z!RowCountTest.test_delete_rowcountc                 C   sX   | j j}| |jjtdkjdd}||ddiddiddig}t	|j
d d S )Nemp_namer&   )r   r!   r'   nonexistent   )r0   r   r?   rI   r7   r   r   rU   r1   r   rM   r:   r4   r5   rW   rN   r   r   r   test_multi_update_rowcount   s   	z'RowCountTest.test_multi_update_rowcountc                 C   sP   | j j}| |jjtdk}||ddiddiddig}t|j	d d S )Nr`   r!   r'   ra   rb   )
r0   r   r@   rI   r7   r   r   r1   r   rM   rc   r   r   r   test_multi_delete_rowcount   s   	z'RowCountTest.test_multi_delete_rowcountN)__name__
__module____qualname____doc____requires____backend__classmethodr   r6   r=   r	   	variationrO   rQ   rR   requiresupdate_returningdelete_returningrX   r]   r^   r_   sane_multi_rowcountrd   re   r   r   r   r   r      s:    

	)

0

r   N)
sqlalchemyr   r   r   r   r   r   r   r	   r
   sqlalchemy.testingr   r   
TablesTestr   r   r   r   r   <module>   s   