o
    E6d>                     @   s   d dl 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 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G dd dejZG dd dejejZdS )    N   )engines)fixtures)eq_)requirements)Column)Table   )DateTime)func)Integer)select)sql)String)testing)textc                   @   s^   e Zd ZdZedd Zedd Zdd Zdd	 Zd
d Z	dd Z
ejdd Zdd ZdS )RowFetchTestTc                 C   sD   t d|tdtddtdtd t d|tdtddtdt d S )	Nplain_pkidTZprimary_keydata2   	has_datestoday)r   r   r   r   r
   clsmetadata r   |C:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\sqlalchemy/testing/suite/test_results.pydefine_tables   s   zRowFetchTest.define_tablesc                 C   s\   | | jj dddddddddg | | jj dtdd	d
d
dddg d S )N   d1)r   r   r   Zd2r	   Zd3        r   )r   r   )executetablesr   insertr   datetime)r   
connectionr   r   r   insert_data'   s   
	
zRowFetchTest.insert_datac                 C   s@   | | jj | jjjj }t|jd t|j	d d S Nr    r!   )
r%   r&   r   r   order_bycr   firstr   r   selfr)   rowr   r   r   test_via_attr7   s   zRowFetchTest.test_via_attrc                 C   sH   | | jj | jjjj }t|j	d d t|j	d d d S )Nr   r    r   r!   )
r%   r&   r   r   r,   r-   r   r.   r   _mappingr/   r   r   r   test_via_string?   s   zRowFetchTest.test_via_stringc                 C   sD   | | jj | jjjj }t|d d t|d d d S )Nr   r    r!   )	r%   r&   r   r   r,   r-   r   r.   r   r/   r   r   r   test_via_intG   s   zRowFetchTest.test_via_intc                 C   sX   | | jj | jjjj }t|j	| jjjj d t|j	| jjjj
 d d S r+   )r%   r&   r   r   r,   r-   r   r.   r   r3   r   r/   r   r   r   test_via_col_objectO   s   z RowFetchTest.test_via_col_objectc                 C   s\   | t| jjjj| jjjjd| jjjj}|	 }t
| ddg t
|d d S )Nr   )r!   r!   )r%   r   r&   r   r-   r   labelr,   r   r.   r   keys)r0   r)   resultr1   r   r   r   test_row_with_dupe_namesW   s   
z%RowFetchTest.test_row_with_dupe_namesc              
   C   s`   | j j}t|djj }t|jj|d}|	|
 }t|jtdddddd dS )ztest that a scalar select as a column is returned as such
        and that type conversion works OK.

        (this is half a SQLAlchemy Core test and half to catch database
        backends that may have unusual behavior with scalar selects.)

        x	somelabelr"   r#   r$   r   N)r&   r   r   aliasr-   r   Zscalar_subqueryr   r7   r%   r.   r   r<   r(   )r0   r)   Z	datetabless2r1   r   r   r   test_row_w_scalar_selectc   s
    z%RowFetchTest.test_row_w_scalar_selectN)__name__
__module____qualname____backend__classmethodr   r*   r2   r4   r5   r6   r   Z%duplicate_names_in_cursor_descriptionr:   r@   r   r   r   r   r      s    


r   c                   @   sJ   e Zd ZdZdZdZedd Zdd Zdd	 Z	e
jd
d Zdd ZdS )PercentSchemaNamesTestztests using percent signs, spaces in table and column names.

    This didn't work for PostgreSQL / MySQL drivers for a long time
    but is now supported.

    )Zpercent_schema_namesTc                 C   s@   t d|tdttdt| j_tdtdtd| j_d S )Nzpercent%tablepercent%spaces % more spaces)	r   r   r   r&   percent_tabler   tablecolumnlightweight_percent_tabler   r   r   r   r      s   z$PercentSchemaNamesTest.define_tablesc                 C   sP   | j j}ddddddddddddfD ]
}|| | q| | d S Nr#   r$   rG   rH         	   
   r&   rI   r%   r'   _assert_table)r0   r)   rI   paramsr   r   r   test_single_roundtrip   s   z,PercentSchemaNamesTest.test_single_roundtripc                 C   sT   | j j}|| ddd || dddddddddg | | d S rM   rS   )r0   r)   rI   r   r   r   test_executemany_roundtrip   s   z1PercentSchemaNamesTest.test_executemany_roundtripc                 C   sz   | j j}|| ddd || |jd |jd ddddd	ddddg}t| g d
 | | d S )Nr#   r$   rN   rG   rH   rO   rP   rQ   rR   )rO   rP   rQ   rR   rP   rQ   )	r&   rI   r%   r'   Z	returningr-   r   allrT   )r0   r)   rI   r9   r   r   r   $test_executemany_returning_roundtrip   s    z;PercentSchemaNamesTest.test_executemany_returning_roundtripc                 C   sD  | j j}| j j}|| || fD ]j}tt|| |j	d g d tt|| 
|j	d ddg|j	d ddg || |j	d  }t|jd d t|jd d	 t|j|j	d  d t|j|j	d  d	 q|| |j	d d
i tt|| |j	d g d d S )NrG   ))r#   r$   rX   rY   rZ   rH   rQ   rR   rY   rZ   r#   r$      ))r#   r]   )rO   r]   )rQ   r]   )rP   r]   )r&   rI   rL   r=   r   listr%   r   r,   r-   whereZin_r.   r3   updatevalues)r0   connrI   rL   rJ   r1   r   r   r   rT      s^   z$PercentSchemaNamesTest._assert_tableN)rA   rB   rC   __doc____requires__rD   rE   r   rV   rW   r   Zinsert_executemany_returningr\   rT   r   r   r   r   rF   s   s    

rF   c                   @   s  e Zd ZdZdZdd Zdd Zejddde	d	dfd
de
ddfdde	d	dfdde
djdddfdde
djdddfdde
d dfddddedfdde	ddfdde	djdddfddddd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'S )(ServerSideCursorsTest)server_side_cursorsTc                 C   s   | j jjdkrt|jS | j jjdkrtdjj}t||S | j jjdv r(|j	S | j jjdkr:tdjj}t||S | j jjdkrE|j
 S | j jjdv rO|j	S | j jjd	kr\t|d
dS | j jjdkrktt|ddS dS )NZpsycopg2Zpymysqlzpymysql.cursors)ZaiomysqlZasyncmyZmysqldbzMySQLdb.cursorsZmariadbconnector)ZasyncpgZ	aiosqliteZpg8000server_sideFZpsycopgname)enginedialectZdriverboolrh   
__import__ZcursorsZSSCursor
isinstancerg   bufferedgetattr)r0   cursorZsscursorr   r   r   _is_server_side   s&   


z%ServerSideCursorsTest._is_server_sidec                 C   sb   |r%t d tjd|id| _W d    | jS 1 sw   Y  | jS tjd|id| _| jS )NzThe create_engine.server_side_cursors parameter is deprecated and will be removed in a future release.  Please use the Connection.execution_options.stream_results parameter.rf   )options)r   Zexpect_deprecatedr   Ztesting_engineri   )r0   rf   r   r   r   _fixture  s   

zServerSideCursorsTest._fixture)Zglobal_stringTselect 1TZglobal_textrt   Zglobal_exprr    Zglobal_off_explicitFZstmt_optionZstream_resultsZstmt_option_disabledZfor_update_exprZfor_update_stringzSELECT 1 FOR UPDATEZsqliteZ
text_no_ssz	select 42Ztext_ss_optionZiaaaz*engine_ss_arg, statement, cursor_ss_status)Zid_argnamesc                 C   sr   |  |}| &}t|tr||}n||}t| |j| |	  W d    d S 1 s2w   Y  d S )N)
rs   beginrm   strexec_driver_sqlr%   r   rq   rp   close)r0   Zengine_ss_argZ	statementZcursor_ss_statusri   rb   r9   r   r   r   test_ss_cursor_status"  s   
'



"z+ServerSideCursorsTest.test_ss_cursor_statusc                 C   sb   |  d}| }|jddd}| |jsJ |  W d    d S 1 s*w   Y  d S )NFTru   rt   )rs   connectexecution_optionsry   rq   rp   rz   )r0   ri   rb   r9   r   r   r   test_conn_optionR  s   


"z&ServerSideCursorsTest.test_conn_optionc                 C   sj   |  d}tdjdd}| }|jdd|}| |jr#J W d    d S 1 s.w   Y  d S )NFr    Tru   )rs   r   r}   r|   r%   rq   rp   )r0   ri   r>   rb   r9   r   r   r   &test_stmt_enabled_conn_option_disabledj  s   

"z<ServerSideCursorsTest.test_stmt_enabled_conn_option_disabledc                 C   s   |  d}ttddjdd }| }|| }| 	|j
r)J |  W d    n1 s7w   Y  td|}| }||}| 	|j
rUJ |  W d    d S 1 sdw   Y  d S )NF1r;   Tru   r    )rs   r   r   Zliteral_columnr7   r}   Zsubqueryrw   r%   rq   rp   rz   select_from)r0   ri   s1rb   r9   r?   r   r   r   test_aliases_and_sst  s"   





"z)ServerSideCursorsTest.test_aliases_and_ssc                 C   s@  | j }| d}td|tdtddtdtd}| y}|j|dd ||	 t
dd	 ||	 t
d
d	 t|| |jj ddg || |jjdkj|jjd d	 t|| |jj ddg ||  t|ttd|d W d    d S 1 sw   Y  d S )NT
test_tabler   r   r   r   Z
checkfirstdata1r   data2)r    r   )r   r   r   z updated)r   zdata2 updated*r   )r   rs   r   r   r   r   rw   creater%   r'   dictr   r   r,   r-   r   fetchallr`   r_   ra   r   deleteZscalarr   countr   )r0   r   mdri   r   r)   r   r   r   test_roundtrip_fetchall  sP   

"z-ServerSideCursorsTest.test_roundtrip_fetchallc                 C   s  | j }| d}td|tdtddtdtd}| [}|j|dd ||	 dd	 t
d
dD  || |jj}t|ddd	 t
d
dD  t|ddd	 t
ddD  t| dd	 t
ddD  W d    d S 1 s{w   Y  d S )NTr   r   r   r   r   r   c                 S   s   g | ]	}t d | dqS )data%dr   )r   .0ir   r   r   
<listcomp>  s    zBServerSideCursorsTest.test_roundtrip_fetchmany.<locals>.<listcomp>r       r#   c                 S      g | ]}|d | fqS r   r   r   r   r   r   r            rR   c                 S   r   r   r   r   r   r   r   r     r      c                 S   r   r   r   r   r   r   r   r     r   )r   rs   r   r   r   r   rw   r   r%   r'   ranger   r,   r-   r   r   Z	fetchmanyr   )r0   r   r   ri   r   r)   r9   r   r   r   test_roundtrip_fetchmany  s6   

 "z.ServerSideCursorsTest.test_roundtrip_fetchmanyN)rA   rB   rC   rd   rD   rq   rs   r   combinationsr   r   r}   Zwith_for_updateZskip_ifr{   r~   r   r   r   r   r   r   r   r   re      sT    
$
(re   )r(    r   r   Z
assertionsr   configr   Zschemar   r   r
   r   r   r   r   r   r   r   Z
TablesTestr   rF   ZTestBaseZAssertsExecutionResultsre   r   r   r   r   <module>   s(   ^
