o
    Df                     @   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 e	j
jfdd Ze	j
jdd ZdS )AutogenerateComputedTest)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primary_keyfoo5r   
add_column   r   )r   r   r   r   saComputed_fixturer   namecomputedr   
isinstancer   	persistedstrsqltextselfm1m2diffsc r*   d/home/ubuntu/webapp/venv/lib/python3.10/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rWtt|jtj nt|jd  t	j
jjrwtt|jtj tt|jjjd d S t	j
jjrtt|jtj d S t|jd  d S )Nr   r   Tr   r   r   r   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_default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      t dd fS r7   r9   r*   r*   r*   r+   r:   Q   r;   c                   C   s   t dt jdddfS )Nr8   bar * 42T)r!   r9   r*   r*   r*   r+   r:   R   s   c                   C   s   t dt dfS )Nr8   r=   r9   r*   r*   r*   r+   r:   V       c                 C   s   t j|fi t \}}t }t }|d u rg n|g}|d u r!g n|g}td|tdtddtdttdtg|R   td|tdtddtdttdtg|R   td}| 	||}W d    n1 shw   Y  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%   	test_case
arg_before	arg_afterr&   r'   	mock_warnr(   r*   r*   r+   !test_cant_change_computed_warningO   s6   
z:AutogenerateComputedTest.test_cant_change_computed_warningc                   C   s   dS )N)NNr*   r*   r*   r*   r+   r:   |   s    c                   C      t dt dfS )Nr   r9   r*   r*   r*   r+   r:   }   r>   c                   C   rM   r7   r9   r*   r*   r*   r+   r:   ~   r>   c                   C   r<   r7   r9   r*   r*   r*   r+   r:      r;   c                 C   s   t j|fi t \}}t }t }|d u rg n|g}|d u r!g n|g}td|tdtddtdttdtg|R   td|tdtddtdttdtg|R   td}| 	||}W d    n1 shw   Y  t
|jg  t
t|g  d S )Nr   r   Tr   r?   r   r@   )r	   rA   rB   r   r   r   r   r   rC   r   r   rD   rF   rG   r*   r*   r+   test_computed_unchanged{   s0   
z0AutogenerateComputedTest.test_computed_unchangedc                 C   s0  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rtt|jjd dS ttdrtt|jjd dS 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   r?   r   zbar + 42r   modify_defaultr   r   N
postgresqlz
(bar + 42)oraclez"BAR"+42)r   r   r   r   r   r   r   r   r   r   r    r3   r   againstr
   r"   r4   r5   )r%   r&   r'   r(   oldnewr*   r*   r+   (test_remove_computed_default_on_computed   s:   
zAAutogenerateComputedTest.test_remove_computed_default_on_computedN)__name__
__module____qualname____requires____backend__r,   r6   r	   combinationsr
   r.   r/   rL   )computed_doesnt_reflect_as_server_defaultrN   r1   rW   r*   r*   r*   r+   r      s0    !	"
	r   )
sqlalchemyr   r   r   r   r   _autogen_fixturesr    r	   r
   r   r   r   r   r   r   r   r*   r*   r*   r+   <module>   s    