U
    ov¨gš  ã                   @   sn   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ZdS )é   )Úfixtures)Úeq_)ÚColumn)ÚTableé   )ÚInteger)ÚString)Útestingc                   @   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
e ddddg¡ejjdd„ ƒƒZe ddddg¡ejjdd„ ƒƒZdS )ÚSimpleUpdateDeleteTestZeach)Zsane_rowcountTc                 C   s&   t d|tdtddtdtdƒƒƒ d S )NÚplain_pkÚidT)Zprimary_keyÚdataé2   )r   r   r   r   )ÚclsÚmetadata© r   úO/tmp/pip-unpacked-wheel-uqd9otp_/sqlalchemy/testing/suite/test_update_delete.pyÚdefine_tables   s    üz$SimpleUpdateDeleteTest.define_tablesc                 C   s0   |  | jj ¡ dddœdddœdddœg¡ d S )Né   Úd1)r   r   r   Úd2r   Úd3)ÚexecuteÚtablesr   Úinsert)r   Ú
connectionr   r   r   Úinsert_data    s    
ýþz"SimpleUpdateDeleteTest.insert_datac                 C   sz   | j j}| | ¡  |jjdk¡tdd¡}|jr6t	‚|j
r@t	‚|jdksNt	‚t| | ¡  |jj¡¡ ¡ dddgƒ d S )Nr   Úd2_new©r   r   ©r   r   ©r   r   ©r   r   )r   r   r   ÚupdateÚwhereÚcr   ÚdictÚ	is_insertÚAssertionErrorÚreturns_rowsÚrowcountr   ÚselectÚorder_byÚfetchall©Úselfr   ÚtÚrr   r   r   Útest_update+   s     ÿ

þz"SimpleUpdateDeleteTest.test_updatec                 C   sp   | j j}| | ¡  |jjdk¡¡}|jr.t‚|j	r8t‚|j
dksFt‚t| | ¡  |jj¡¡ ¡ ddgƒ d S )Nr   r   r   r!   )r   r   r   Údeleter#   r$   r   r&   r'   r(   r)   r   r*   r+   r,   r-   r   r   r   Útest_delete9   s    

þz"SimpleUpdateDeleteTest.test_deleteÚcriteriaÚrowsÚnorowsÚemptyinc                 C   s  | j j}| ¡  |jj|jj¡}|jr:| |jjdk¡}n>|j	rT| |jjdk¡}n$|j
rp| |jj g ¡¡}n| ¡  | |tdd¡}|jr”t‚|jsžt‚t| ¡ ddgƒ |j	rÈt| ¡ dgƒ nt| ¡ g ƒ t| | ¡  |jj¡¡ ¡ |j	rddd	gndd
d	gƒ d S )Né
   r   r   r   r   r   r    r   r!   ©r   r   )r   r   r"   Ú	returningr$   r   r   r6   r#   r5   r7   Úin_Úfailr   r%   r&   r'   r(   r   ÚkeysÚallr*   r+   r,   ©r.   r   r4   r/   Zstmtr0   r   r   r   Útest_update_returningD   s,    

ÿûz,SimpleUpdateDeleteTest.test_update_returningc                 C   s  | j j}| ¡  |jj|jj¡}|jr:| |jjdk¡}n>|j	rT| |jjdk¡}n$|j
rp| |jj g ¡¡}n| ¡  | |¡}|jrŒt‚|js–t‚t| ¡ ddgƒ |j	rÀt| ¡ dgƒ nt| ¡ g ƒ t| | ¡  |jj¡¡ ¡ |j	røddgndddgƒ d S )Nr8   r   r   r   r9   r   r!   )r   r   r2   r:   r$   r   r   r6   r#   r5   r7   r;   r<   r   r&   r'   r(   r   r=   r>   r*   r+   r,   r?   r   r   r   Útest_delete_returningg   s,    


ÿ
ûz,SimpleUpdateDeleteTest.test_delete_returningN)Ú__name__Ú
__module__Ú__qualname__Zrun_deletesÚ__requires__Z__backend__Úclassmethodr   r   r1   r3   r	   Z	variationÚrequiresZupdate_returningr@   Zdelete_returningrA   r   r   r   r   r
      s   


!r
   )r
   N)Ú r   Z
assertionsr   Zschemar   r   r   r   r	   Z
TablesTestr
   Ú__all__r   r   r   r   Ú<module>	   s   y