
    D6i                         d dl mZ 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e	e      Zy)    )nullcontextN)Column)Integer)MetaData)Table   )AutogenFixtureTest   )testing)config)eq_)expect_warnings)is_)is_true)mock)TestBasec                       e Zd ZdZdZd Zd Zd Z ej                  d d d d	       d
        Z
 ej                  d d d d       d        Zy)AutogenerateComputedTest)computed_columnsTc                 z    t         j                  j                  j                  rt	               }|S t               }|S )N)r   requirements"computed_columns_warn_no_persistedenabledr   r   )selfctxs     n/home/azureuser/techstart-app/venv/lib/python3.12/site-packages/alembic/testing/suite/test_autogen_computed.py_fixture_ctxz%AutogenerateComputedTest._fixture_ctx   s4    AAII!#C 
 -C
    c                    t               }t               }t        d|t        dt        d             t        d|t        dt        d      t        dt        t	        j
                  d                   | j                         5  | j                  ||      }d d 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       y # 1 sw Y   xY w)NuseridTprimary_keyfoo5r   
add_column   r
   )r   r   r   r   saComputedr   _fixturer   namecomputedr   
isinstancer   	persistedstrsqltextr   m1m2diffscs        r   test_add_computed_columnz1AutogenerateComputedTest.test_add_computed_column   s   ZZfb&wDAB4d35'2;;s#34		
   	*MM"b)E	* 	E!HQK&E!HQK E!HQKe$!HQK  
1bkk*+AKKC		NC 	* 	*s   EEc                    t               }t               }t        d|t        dt        d      t        dt        t	        j
                  d                   t        d|t        dt        d             | j                         5  | j                  ||      }d d d        t        d   d   d       t        |d   d	   d       |d   d
   }t        |j                  d       t        t        |j                  t        j
                               t        t        |j                  t        j
                               y # 1 sw Y   xY w)Nr    r!   Tr"   r$   r%   r   remove_columnr'   r
   )r   r   r   r   r(   r)   r   r*   r   r+   r   r-   r,   server_defaultr1   s        r   test_remove_computed_columnz4AutogenerateComputedTest.test_remove_computed_column8   s    ZZ4d35'2;;s#34		
 	fb&wDAB  	*MM"b)E	* 	E!HQK)E!HQK !HQKAFFE
1::r{{34
1++R[[9:	* 	*s   D::Ec                  0    d t        j                  d      fS Nbar*5r(   r)    r   r   <lambda>z!AutogenerateComputedTest.<lambda>Q   s    r{{7+, r   c                  0    t        j                  d      d fS r<   r>   r?   r   r   r@   z!AutogenerateComputedTest.<lambda>R   s    "++g&- r   c                  Z    t        j                  d      t        j                  dd      fS )Nr=   bar * 42T)r.   r>   r?   r   r   r@   z!AutogenerateComputedTest.<lambda>S   s#    KK KK
d3
 r   c                  V    t        j                  d      t        j                  d      fS )Nr=   rC   r>   r?   r   r   r@   z!AutogenerateComputedTest.<lambda>W   s    W%r{{:'>? r   c           
         t        j                  |fi t               \  }}t               }t               }|g n|g}|g n|g}t	        d|t        dt        d      t        dt              t        dt        g|        t	        d|t        dt        d      t        dt              t        dt        g|        t        j                  d      5 }| j                         5  | j                  ||      }d d d        d d d        t        j                  t        j                  d      g       t        t              g        y # 1 sw Y   QxY w# 1 sw Y   UxY w)	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*   r   
mock_callscalllistr   	test_case
arg_before	arg_afterr2   r3   	mock_warnr4   s           r   !test_cant_change_computed_warningz:AutogenerateComputedTest.test_cant_change_computed_warningP   s;    !( 6 6y MFH M
IZZ%-RJ<
#+B)	4d35'"5'/J/	
 	4d35'"5'.I.	
 ZZ+, 	*	4;L;L;N 	*MM"b)E	* 	* 	  YYHIJ	

 	DK	* 	* 	* 	*s$   E"E5EE	
EEc                       y)N)NNr?   r?   r   r   r@   z!AutogenerateComputedTest.<lambda>|   s    r   c                  V    t        j                  d      t        j                  d      fS )Nr%   r>   r?   r   r   r@   z!AutogenerateComputedTest.<lambda>}   s    S!2;;s#34 r   c                  V    t        j                  d      t        j                  d      fS r<   r>   r?   r   r   r@   z!AutogenerateComputedTest.<lambda>~   s    W%r{{7';< r   c                  V    t        j                  d      t        j                  d      fS )Nr=   z
bar * 
	5r>   r?   r   r   r@   z!AutogenerateComputedTest.<lambda>   s    W%r{{?'CD r   c           
         t        j                  |fi t               \  }}t               }t               }|g n|g}|g n|g}t	        d|t        dt        d      t        dt              t        dt        g|        t	        d|t        dt        d      t        dt              t        dt        g|        t        j                  d      5 }| j                         5  | j                  ||      }d d d        d d d        t        j                  g        t        t              g        y # 1 sw Y   =xY w# 1 sw Y   AxY w)Nr    r!   Tr"   rF   r$   rG   )r   rH   rI   r   r   r   r   r   rJ   r   r*   r   rK   rM   rN   s           r   test_computed_unchangedz0AutogenerateComputedTest.test_computed_unchanged{   s&    !( 6 6y MFH M
IZZ%-RJ<
#+B)	4d35'"5'/J/	
 	4d35'"5'.I.	
 ZZ+, 	*	4;L;L;N 	*MM"b)E	* 	*I  "%DK		* 	* 	* 	*s$   D="D15D=1D:	6D==EN)__name__
__module____qualname____requires____backend__r   r6   r:   r   combinationsrS   rY   r?   r   r   r   r      s{    (LK!2;0 W,	-	
 	@  D W4<D	r   r   )
contextlibr   
sqlalchemyr(   r   r   r   r   _autogen_fixturesr	    r   r   r   r   r   r   r   r   r   r?   r   r   <module>rd      sC    "      1    &    I18 Ir   