a
    [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)Z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ZautoincrementZprimary_keyname2   
department   )r   r   r   r   )clsmetadata r   t/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/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)	)ZAngelaA)ZAndrewr   )ZAnandr   )BobB)ZBobetter   )ZBuffyr   )ZCharlieC)Cynthiar   )Z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)r&   r   r   cr   r   Zorder_byr   r'   Zfetchallr   r%   )selfr*   r+   srowsr   r   r   
test_basicB   s    zRowCountTest.test_basic	statement)updatedeleter(   r   close_firstFc              	   C   s   | j j}|jj}|jr6|| |dkddi}n|jr\|| |dkddi}nx|jr|| dddddd	ddd
dddg}nB|j	rt	|jj
|jj|jjdk}||}|  n|  |r|  |jdv sJ d S )Nr   r   Z   znone 1Xr      znone 2   znone 3)   )r&   r   r-   r   r3   r'   wherer4   r(   r   r   allfailcloserowcount)r.   r*   r2   r5   r+   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   r6   r<   )r&   r   r-   r   r'   r3   r=   rA   r.   r*   r+   r   rB   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   r<   )	r&   r   r-   r   r'   r3   r=   r   rA   rD   r   r   r   test_update_rowcount2   s    z"RowCountTest.test_update_rowcount2implicit_returningdmlr3   r4   c              	   C   s   |r| j j}n6tdt tdtdddtdtdtdtd	dd
}|jj}|j	rz|	 
|dkj|jjd d }n&|jr| 
|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   )rG   r   r6   )r   r<   N)r&   r   r   r   r   r   r   r-   r   r3   r=   valuesZreturn_defaultsr4   r?   r'   r   rA   )r.   r*   rG   rH   r+   r   stmtrB   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'r<   )Zexec_driver_sqlr   rA   r.   r*   resultr   r   r   test_raw_sql_rowcount   s    z"RowCountTest.test_raw_sql_rowcountc                 C   s   | td}t|jd d S rL   )r'   r
   r   rA   rM   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   r<   )	r&   r   r-   r   r'   r4   r=   r   rA   rD   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   )r&   r   r3   r=   r-   r   r   rI   r'   r   rA   r.   r*   r+   rJ   rB   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 )NrR   r   r   rS   rT   )
r&   r   r4   r=   r-   r   r   r'   r   rA   rU   r   r   r   test_multi_delete_rowcount   s    	z'RowCountTest.test_multi_delete_rowcountN)__name__
__module____qualname____doc____requires__Z__backend__classmethodr   r,   r1   r	   Z	variationrC   rE   rF   requiresZupdate_returningZdelete_returningrK   rO   rP   rQ   Zsane_multi_rowcountrV   rW   r   r   r   r   r      s8   

	)

0

r   N)Z
sqlalchemyr   r   r   r   r   r   r   r	   r
   Zsqlalchemy.testingr   r   Z
TablesTestr   r   r   r   r   <module>	   s   