U
    ^g%ie.                     @   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rFtj|j|d| _t	
  | j_| jj_n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   e/var/www/html/api-medvista/venv/lib/python3.8/site-packages/alembic/testing/suite/test_environment.py_fixture   s      z!MigrationTransactionTest._fixturec                 C   s   | j r| j   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Z_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   sL   |  ddd}|jdd}t| j  | W 5 Q R X 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W 5 Q R X d S )Nhi)	Exceptionr   r+   r   r   goM   s    zSMigrationTransactionTest.test_proxy_transaction_contextmanager_rollback.<locals>.go)r   r(   r
   r   r'   r   r2   r   )r   r   r4   r   r3   r   .test_proxy_transaction_contextmanager_rollbackF   s    
zGMigrationTransactionTest.test_proxy_transaction_contextmanager_rollbackc              	   C   sp   |  ddd}|jdd}t| j  |* t| j  |  t| j  W 5 Q R X t| j  d S r"   )r   r(   r
   r   r'   r)   r   r*   r   r   r   7test_proxy_transaction_contextmanager_explicit_rollbackT   s    zPMigrationTransactionTest.test_proxy_transaction_contextmanager_explicit_rollbackc              	   C   sp   |  ddd}|jdd}t| j  |* t| j  |  t| j  W 5 Q R X t| j  d S r"   r-   r*   r   r   r   5test_proxy_transaction_contextmanager_explicit_commitb   s    zNMigrationTransactionTest.test_proxy_transaction_contextmanager_explicit_commitc              
   C   s   |  ddd}t| j  | H t| j  |jdd t| j  W 5 Q R X t| j  W 5 Q R X t| j  d S r"   r   r   r   r'   r(   r
   r   r   r   r   r   0test_transaction_per_migration_transactional_ddlp   s    
zIMigrationTransactionTest.test_transaction_per_migration_transactional_ddlc              
   C   s   |  ddd}t| j  | H t| j  |jdd t| j  W 5 Q R X t| j  W 5 Q R X t| j  d S )NTFr#   r&   r8   r9   r   r   r   4test_transaction_per_migration_non_transactional_ddl   s    
zMMigrationTransactionTest.test_transaction_per_migration_non_transactional_ddlc              
   C   s   |  ddi}t| j  | H t| j  |jdd t| j  W 5 Q R X t| j  W 5 Q R X t| j  d S )Nr%   Tr&   r8   r9   r   r   r   *test_transaction_per_all_transactional_ddl   s    
zCMigrationTransactionTest.test_transaction_per_all_transactional_ddlc              
   C   s   |  ddi}t| j  | H t| j  |jdd t| j  W 5 Q R X t| j  W 5 Q R X t| j  d S )Nr%   FTr&   r8   r9   r   r   r   .test_transaction_per_all_non_transactional_ddl   s    
zGMigrationTransactionTest.test_transaction_per_all_non_transactional_ddlc              
   C   s   |  ddi}|d | < |d |jdd |d W 5 Q R X |d W 5 Q R X |d |jjr| dd	dddd
d n| 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_stepsr9   r   r   r    test_transaction_per_all_sqlmode   s2    




    z9MigrationTransactionTest.test_transaction_per_all_sqlmodec              
   C   s   |  ddd}|d | < |d |jdd |d W 5 Q R X |d W 5 Q R X |d |jjr| ddd	dd
dd n| ddddd d S )NT)r   r$   r>   r?   r&   r@   rA   rB   rC   rD   rE   r9   r   r   r   &test_transaction_per_migration_sqlmode   s6    




    z?MigrationTransactionTest.test_transaction_per_migration_sqlmodec                 C   s   |  ddi}t| j  |  t| j  |jdd t| j  | J | jrpt|j	| j nt
|j	| j t| j  t|j	jd d W 5 Q R X t|j	jdd d t| j  W 5 Q R X t| j  W 5 Q R X 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   r9   r   r   r   test_autocommit_block   s6    

 z.MigrationTransactionTest.test_autocommit_blockc              	   C   s   |  ddi}t| j  | X t|j  | jrJt|j| j nt	|j| j t| j  t
|jjd d W 5 Q R X t|jjdd d t| j  d S )Nr$   TrJ   rK   )r   r   r   r'   rL   r
   r   rM   r   r	   r   rN   r   r   r9   r   r   r   $test_autocommit_block_no_transaction  s"    

z=MigrationTransactionTest.test_autocommit_block_no_transactionc                 C   s   |  dddd}| d |d |jdd8 |d |  |d W 5 Q R X |d W 5 Q R X |d W 5 Q R X | dd	dd
dd	dd
d	 d S )NTr$   r%   r   r>   r&   r?   r@   rA   rB   rC   rD   r   r(   rF   rL   rG   r9   r   r   r   /test_autocommit_block_transactional_ddl_sqlmode&  s2    



zHMigrationTransactionTest.test_autocommit_block_transactional_ddl_sqlmodec                 C   s   |  dddd}| d |d |jdd8 |d |  |d W 5 Q R X |d W 5 Q R X |d	 W 5 Q R X | ddddd	 d S )
NTFrQ   r>   r&   r?   r@   rA   rB   rR   r9   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rR| j j  q"| j j| q"t	||  d S )NrC   rD   )
r   r   getvaluer   r   r   Z
emit_beginZemit_commit_execr   )r   ZstepsZto_checkbufstepr   r   r   rG   `  s    z+MigrationTransactionTest._assert_impl_steps)__name__
__module____qualname__Z__backend__r   r   r!   r,   r/   r0   r5   r6   r7   r:   r;   r<   r=   rH   rI   r   requirementsZautocommit_isolationrO   rP   rS   rT   rG   r   r   r   r   r      s.   	

'
!r   )r   Z	migrationr   Ztestingr   r   r   r   r   r	   r
   r   Ztesting.fixturesr   r   r   r   r   r   <module>   s   