o
    he.                     @   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 G dd deZdS )    N   )MigrationContext)assert_raises)config)eq_)is_)is_false)is_not_)is_true)ne_)TestBasec                   @   s   e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Z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#d$ Zd%d& Zd'd( ZdS ))MigrationTransactionTestTNc                 C   s`   t j  | _}|ddr%tj|j|d| _t	
  | j_| jj_| jS tj||d| _| jS )Nas_sqlF)dialectopts)
connectionr   )r   dbconnectconngetr   	configurer   contextioStringIOoutput_bufferimpl)selfr   r    r   z/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/alembic/testing/suite/test_environment.py_fixture   s   z!MigrationTransactionTest._fixturec                 C   s   | j r
| j   d S d S )N)r   close)r   r   r   r   teardown_method$   s   z(MigrationTransactionTest.teardown_methodc                 C   sR   |  ddd}t| j  |jdd}t| j  |  t| j  d S NTtransaction_per_migrationtransactional_ddl_per_migration)r   r   r   in_transactionbegin_transactionr
   rollbackr   r   proxyr   r   r   test_proxy_transaction_rollback(   s   z8MigrationTransactionTest.test_proxy_transaction_rollbackc                 C   sD   |  ddd}|jdd}t| j  |  t| j  d S r"   r   r)   r
   r   r(   commitr   r+   r   r   r   test_proxy_transaction_commit3   s   z6MigrationTransactionTest.test_proxy_transaction_commitc                 C   s`   |  ddd}|jdd}t| j  | W d    n1 s"w   Y  t| j  d S r"   )r   r)   r
   r   r(   r   r+   r   r   r   ,test_proxy_transaction_contextmanager_commit<   s   zEMigrationTransactionTest.test_proxy_transaction_contextmanager_commitc                    sR   |  ddd}|jdd t| j   fdd}tt| t| j  d S )NTr#   r&   c                      s"     t d1 s
w   Y  d S )Nhi)	Exceptionr   r,   r   r   goM   s   zSMigrationTransactionTest.test_proxy_transaction_contextmanager_rollback.<locals>.go)r   r)   r
   r   r(   r   r3   r   )r   r   r5   r   r4   r   .test_proxy_transaction_contextmanager_rollbackF   s   
zGMigrationTransactionTest.test_proxy_transaction_contextmanager_rollbackc                 C      |  ddd}|jdd}t| j  | t| j  |  t| j  W d    n1 s4w   Y  t| j  d S r"   )r   r)   r
   r   r(   r*   r   r+   r   r   r   7test_proxy_transaction_contextmanager_explicit_rollbackT      zPMigrationTransactionTest.test_proxy_transaction_contextmanager_explicit_rollbackc                 C   r7   r"   r.   r+   r   r   r   5test_proxy_transaction_contextmanager_explicit_commitb   r9   zNMigrationTransactionTest.test_proxy_transaction_contextmanager_explicit_commitc              	   C   s   |  ddd}t| j  | 3 t| j  |jdd t| j  W d    n1 s3w   Y  t| j  W d    n1 sIw   Y  t| j  d S r"   r   r   r   r(   r)   r
   r   r   r   r   r   0test_transaction_per_migration_transactional_ddlp      
zIMigrationTransactionTest.test_transaction_per_migration_transactional_ddlc              	   C   s   |  ddd}t| j  | 3 t| j  |jdd t| j  W d    n1 s3w   Y  t| j  W d    n1 sIw   Y  t| j  d S )NTFr#   r&   r;   r<   r   r   r   4test_transaction_per_migration_non_transactional_ddl   r>   zMMigrationTransactionTest.test_transaction_per_migration_non_transactional_ddlc              	   C   s   |  ddi}t| j  | 3 t| j  |jdd t| j  W d    n1 s2w   Y  t| j  W d    n1 sHw   Y  t| j  d S )Nr%   Tr&   r;   r<   r   r   r   *test_transaction_per_all_transactional_ddl      
zCMigrationTransactionTest.test_transaction_per_all_transactional_ddlc              	   C   s   |  ddi}t| j  | 3 t| j  |jdd t| j  W d    n1 s2w   Y  t| j  W d    n1 sHw   Y  t| j  d S )Nr%   FTr&   r;   r<   r   r   r   .test_transaction_per_all_non_transactional_ddl   rA   zGMigrationTransactionTest.test_transaction_per_all_non_transactional_ddlc              	   C   s   |  ddi}|d | - |d |jdd |d W d    n1 s,w   Y  |d W d    n1 s@w   Y  |d |jjr[| dd	dddd
d d S | ddddd d S )Nr   Tstep 1step 2r&   step 3step 4step 5BEGINCOMMITr   executer)   r   r%   _assert_impl_stepsr<   r   r   r    test_transaction_per_all_sqlmode   s.   





z9MigrationTransactionTest.test_transaction_per_all_sqlmodec              	   C   s   |  ddd}|d | - |d |jdd |d W d    n1 s-w   Y  |d W d    n1 sAw   Y  |d |jjr\| ddd	dd
dd d S | ddddd d S )NT)r   r$   rC   rD   r&   rE   rF   rG   rH   rI   rJ   r<   r   r   r   &test_transaction_per_migration_sqlmode   s2   





z?MigrationTransactionTest.test_transaction_per_migration_sqlmodec              
   C   s<  |  ddi}t| j  | { t| j  |jddW t| j  | * | jr8t|j	| j nt
|j	| j t| j  t|j	jd d W d    n1 sYw   Y  t|j	jdd d t| j  W d    n1 szw   Y  t| j  W d    n1 sw   Y  t| j  d S )Nr$   Tr&   isolation_level
AUTOCOMMIT)r   r   r   r(   r)   r
   autocommit_blockis_sqlalchemy_futurer   r   r	   r   _execution_optionsr   r   r<   r   r   r   test_autocommit_block   s:   

 z.MigrationTransactionTest.test_autocommit_blockc                 C   s   |  ddi}t| j  | 1 t|j  | jr%t|j| j nt	|j| j t| j  t
|jjd d W d    n1 sFw   Y  t|jjdd d t| j  d S )Nr$   TrO   rP   )r   r   r   r(   rQ   r
   r   rR   r   r	   r   rS   r   r   r<   r   r   r   $test_autocommit_block_no_transaction  s$   

z=MigrationTransactionTest.test_autocommit_block_no_transactionc                 C   s   |  dddd}| K |d |jdd+ |d |  |d W d    n1 s3w   Y  |d W d    n1 sGw   Y  |d W d    n1 s[w   Y  | dd	dd
dd	dd
d	 d S )NTr$   r%   r   rC   r&   rD   rE   rF   rG   rH   rI   r   r)   rK   rQ   rL   r<   r   r   r   /test_autocommit_block_transactional_ddl_sqlmode&  s8   



zHMigrationTransactionTest.test_autocommit_block_transactional_ddl_sqlmodec              
   C   s   |  dddd}| K |d |jdd+ |d |  |d W d    n1 s3w   Y  |d W d    n1 sGw   Y  |d	 W d    n1 s[w   Y  | ddddd	 d S )
NTFrV   rC   r&   rD   rE   rF   rG   rW   r<   r   r   r   2test_autocommit_block_nontransactional_ddl_sqlmodeG  s(   




zKMigrationTransactionTest.test_autocommit_block_nontransactional_ddl_sqlmodec                 G   st   | j j }t  | j j_}|D ]}|dkr| j j  q|dkr)| j j  q| j j| qt	||  d S )NrH   rI   )
r   r   getvaluer   r   r   
emit_beginemit_commit_execr   )r   stepsto_checkbufstepr   r   r   rL   `  s   z+MigrationTransactionTest._assert_impl_steps)__name__
__module____qualname____backend__r   r   r!   r-   r0   r1   r6   r8   r:   r=   r?   r@   rB   rM   rN   r   requirementsautocommit_isolationrT   rU   rX   rY   rL   r   r   r   r   r      s0    	

'
!r   )r   	migrationr   testingr   r   r   r   r   r	   r
   r   testing.fixturesr   r   r   r   r   r   <module>   s    