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 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	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   f/var/www/html/LicenciasMIG/venv/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>6   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   order_byr   r0   fetchallr   r.   )selfr3   r4   srowsr   r   r   
test_basic<   s   
zRowCountTest.test_basicc                 C   s@   | j j}|jj}|| |dkddi}|jdksJ d S )Nr&   r   Z   )r/   r   r6   r   r0   updatewhererowcountr9   r3   r4   r   rr   r   r   test_update_rowcount1E   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   r6   r   r0   r?   r@   r   rA   rB   r   r   r   test_update_rowcount2P   s   z"RowCountTest.test_update_rowcount2implicit_returningFdmlr?   deletec              	   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   )rF   r&   r=   )r   r>   N)r/   r   r   r   r   r   r   r6   r   r?   r@   valuesreturn_defaultsrH   failr0   r   rA   )r9   r3   rF   rG   r4   r   stmtrC   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>   )exec_driver_sqlr   rA   r9   r3   resultr   r   r   test_raw_sql_rowcount   s   z"RowCountTest.test_raw_sql_rowcountc                 C   s   | td}t|jd d S rN   )r0   r
   r   rA   rP   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   r6   r   r0   rH   r@   r   rA   rB   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   r?   r@   r6   r   r   rI   r0   r   rA   r9   r3   r4   rL   rC   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 )NrU   r!   r'   rV   rW   )
r/   r   rH   r@   r6   r   r   r0   r   rA   rX   r   r   r   test_multi_delete_rowcount   s   	z'RowCountTest.test_multi_delete_rowcountN)__name__
__module____qualname____doc____requires____backend__classmethodr   r5   r<   rD   rE   r	   	variationrequiresupdate_returningdelete_returningrM   rR   rS   rT   sane_multi_rowcountrY   rZ   r   r   r   r   r      s4    

	

0

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