U
    ^g%i                     @   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 G dd deeZdS )    N)Column)Integer)MetaData)Table   )AutogenFixtureTest   )testing)config)eq_)
exclusions)is_)is_true)mock)TestBasec                   @   s   e Zd ZdZdZdd Zdd Zedd d	d d
d dd e	j
jdd Zedd dd dd dd dd e	j
jfdd Ze	j
jdd ZdS )AutogenerateComputedTest)Zcomputed_columnsTc              
   C   s   t  }t  }td|tdtdd td|tdtddtdttd | ||}t|d d d t|d d	 d t|d d
 jd |d d
 j	}t
t|tj t|jd  tt|jd d S )NuseridTZprimary_keyfoo5r   
add_column   r   )r   r   r   r   saComputed_fixturer   namecomputedr   
isinstancer   	persistedstrZsqltextselfm1m2diffsc r'   j/var/www/html/api-medvista/venv/lib/python3.8/site-packages/alembic/testing/suite/test_autogen_computed.pytest_add_computed_column   s"    z1AutogenerateComputedTest.test_add_computed_columnc              
   C   s  t  }t  }td|tdtddtdttd td|tdtdd | ||}t|d d d t|d d	 d |d d
 }t|jd t	j
jjrtt|jtj nt|jd  t	j
jjrtt|jtj tt|jjjd n,t	j
jjrtt|jtj nt|jd  d S )Nr   r   Tr   r   r   r   Zremove_columnr   r   )r   r   r   r   r   r   r   r   r   r
   requirementscomputed_reflects_normallyenabledr   r   r   r   #computed_reflects_as_server_defaultZserver_defaultDefaultClauser    argtextr!   r'   r'   r(   test_remove_computed_column.   s.    

z4AutogenerateComputedTest.test_remove_computed_columnc                   C   s   d t dfS Nbar*5r   r   r'   r'   r'   r(   <lambda>P       z!AutogenerateComputedTest.<lambda>c                   C   s   t dd fS r2   r4   r'   r'   r'   r(   r5   Q   r6   c                   C   s   t dt jdddfS )Nr3   bar * 42T)r   r4   r'   r'   r'   r(   r5   R   s    c                   C   s   t dt dfS )Nr3   r7   r4   r'   r'   r'   r(   r5   V   r6   c              	   C   s   t j|ft \}}t }t }|d kr,g n|g}|d kr>g n|g}td|tdtddtdttdtf|  td|tdtddtdttdtf|  td}| 	||}W 5 Q R X t
|jtdg t
t|g  d S )	Nr   r   Tr   barr   alembic.util.warnz/Computed default on user.foo cannot be modified)r	   resolve_lambdalocalsr   r   r   r   r   patchr   r   
mock_callscalllistr"   Z	test_caseZ
arg_beforeZ	arg_afterr#   r$   Z	mock_warnr%   r'   r'   r(   !test_cant_change_computed_warningO   s4    
z:AutogenerateComputedTest.test_cant_change_computed_warningc                   C   s   dS )N)NNr'   r'   r'   r'   r(   r5   |   r6   c                   C   s   t dt dfS )Nr   r4   r'   r'   r'   r(   r5   }   r6   c                   C   s   t dt dfS r2   r4   r'   r'   r'   r(   r5   ~   r6   c                   C   s   t dt dfS )Nr3   z
bar * 
	5r4   r'   r'   r'   r(   r5      r6   c                   C   s   t dd fS r2   r4   r'   r'   r'   r(   r5      r6   c              	   C   s   t j|ft \}}t }t }|d kr,g n|g}|d kr>g n|g}td|tdtddtdttdtf|  td|tdtddtdttdtf|  td}| 	||}W 5 Q R X t
|jg  t
t|g  d S )Nr   r   Tr   r8   r   r9   )r	   r:   r;   r   r   r   r   r   r<   r   r   r=   r?   r@   r'   r'   r(   test_computed_unchanged{   s.    z0AutogenerateComputedTest.test_computed_unchangedc                 C   s.  t  }t  }td|tdtddtdttdttd td|tdtddtdttdt | ||}t|d d d d	 t|d d d
 d t|d d d d |d d d }|d d d }t|d t	t
|tj ttdr
tt|jjd n ttdr*tt|jjd dS )zAsserts the current behavior which is that on PG and Oracle,
        the GENERATED ALWAYS AS is reflected as a server default which we can't
        tell is actually "computed", so these come out as a modification to
        the server default.

        r   r   Tr   r8   r   zbar + 42r   Zmodify_defaultr   r   N
postgresqlz
(bar + 42)oraclez"BAR"+42)r   r   r   r   r   r   r   r   r   r   r   r.   r   Zagainstr
   r    r/   r0   )r"   r#   r$   r%   oldnewr'   r'   r(   (test_remove_computed_default_on_computed   s8    
zAAutogenerateComputedTest.test_remove_computed_default_on_computedN)__name__
__module____qualname____requires__Z__backend__r)   r1   r	   combinationsr
   r*   r+   rA   Z)computed_doesnt_reflect_as_server_defaultrB   r-   rI   r'   r'   r'   r(   r      s0   !	"

r   )Z
sqlalchemyr   r   r   r   r   Z_autogen_fixturesr    r	   r
   r   r   r   r   r   r   r   r'   r'   r'   r(   <module>   s   