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 G dd dejZdS )    )	bindparam)Column)Integer)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jj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   J/tmp/pip-unpacked-wheel-8u86ls_i/sqlalchemy/testing/suite/test_rowcount.pydefine_tables   s    zRowCountTest.define_tablesc              	   C   sF   ddddddddd	g	 | _ }| 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>3   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(   sZrowsr   r   r   
test_basic9   s     zRowCountTest.test_basicc                 C   s@   | j j}|jj}|| |dkddi}|jdks<td S )Nr   r   Z   )	r#   r   r*   r   r$   updatewhererowcountAssertionErrorr+   r'   r(   r   rr   r   r   test_update_rowcount1B   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$   r0   r1   r
   r2   r4   r   r   r   test_update_rowcount2M   s    z"RowCountTest.test_update_rowcount2c                 C   sP   | j j}|jj}| |dkj|jjd d }||}t	|j
d d S )Nr   r.   )r   r/   )r#   r   r*   r   r0   r1   valuesZreturn_defaultsr$   r
   r2   )r+   r'   r(   r   stmtr5   r   r   r   $test_update_rowcount_return_defaultsY   s    

z1RowCountTest.test_update_rowcount_return_defaultsc                 C   s   | d}t|jd d S Nz8update employees set department='Z' where department='C'r/   )Zexec_driver_sqlr
   r2   r+   r'   resultr   r   r   test_raw_sql_rowcounth   s    z"RowCountTest.test_raw_sql_rowcountc                 C   s   | td}t|jd d S r;   )r$   r	   r
   r2   r<   r   r   r   test_text_rowcounto   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$   deleter1   r
   r2   r4   r   r   r   test_delete_rowcountv   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   r0   r1   r*   r   r   r8   r$   r
   r2   r+   r'   r(   r9   r5   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 )NrB   r   r   rC   rD   )
r#   r   r@   r1   r*   r   r   r$   r
   r2   rE   r   r   r   test_multi_delete_rowcount   s    	z'RowCountTest.test_multi_delete_rowcountN)__name__
__module____qualname____doc____requires__Z__backend__classmethodr   r)   r-   r6   r7   r   requiresZsane_rowcount_w_returningr:   r>   r?   rA   Zsane_multi_rowcountrF   rG   r   r   r   r   r      s&   

	


r   N)Z
sqlalchemyr   r   r   r   r   r   r   r	   Zsqlalchemy.testingr
   r   Z
TablesTestr   r   r   r   r   <module>   s   