
    g                         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)    N)Column)Integer)MetaData)Table   )AutogenFixtureTest   )testing)config)eq_)
exclusions)is_)is_true)mock)TestBasec                   6   e Zd ZdZdZd Zd Z ej                  d d d d       e	j                  j                  d	               Z ej                  d
 d d d d e	j                  j                  f      d        Ze	j                  j                  d        Zy)AutogenerateComputedTest)computed_columnsTc                 ^   t               }t               }t        d|t        dt        d             t        d|t        dt        d      t        dt        t	        j
                  d                   | j                  ||      }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 )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cs        j/var/www/html/AdoubleTech/venv/lib/python3.12/site-packages/alembic/testing/suite/test_autogen_computed.pytest_add_computed_columnz1AutogenerateComputedTest.test_add_computed_column   s    ZZfb&wDAB4d35'2;;s#34		
 b"%E!HQK&E!HQK E!HQKe$!HQK  
1bkk*+AKKC		NC     c                 8   t               }t               }t        d|t        dt        d      t        dt        t	        j
                  d                   t        d|t        dt        d             | j                  ||      }t        |d   d   d       t        |d   d	   d       |d   d
   }t        |j                  d       t        j                  j                  j                  r.t        t        |j                  t        j
                               nt!        |j                  d        t        j                  j"                  j                  rat        t        |j$                  t        j&                               t        t)        |j$                  j*                  j,                        d       y t        j                  j                  j                  r.t        t        |j                  t        j
                               y t!        |j                  d        y )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'   s        r-   test_remove_computed_columnz4AutogenerateComputedTest.test_remove_computed_column.   sj   ZZ4d35'2;;s#34		
 	fb&wDABb"%E!HQK)E!HQK !HQKAFFE99AAJqzz2;;78

D!BBJJJq//1A1ABCA$$((--.4  ;;CCJqzz2;;78

D!r/   c                  0    d t        j                  d      fS Nbar*5r   r    r/   r-   <lambda>z!AutogenerateComputedTest.<lambda>P   s    r{{7+, r/   c                  0    t        j                  d      d fS r<   r>   r?   r/   r-   r@   z!AutogenerateComputedTest.<lambda>Q   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>R   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>V   s    W%r{{:'>? r/   c           
      p   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                  ||      }d d d        t        j                  t        j                  d      g       t        t              g        y # 1 sw Y   Ix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   
mock_callscalllistr(   	test_case
arg_before	arg_afterr)   r*   	mock_warnr+   s           r-   !test_cant_change_computed_warningz:AutogenerateComputedTest.test_cant_change_computed_warningO   s    !( 6 6y MFH M
IZZ%-RJ<
#+B)	4d35'"5'/J/	
 	4d35'"5'.I.	
 ZZ+, 	*	MM"b)E	* 	  YYHIJ	

 	DK	* 	*s   D,,D5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                  0    t        j                  d      d fS r<   r>   r?   r/   r-   r@   z!AutogenerateComputedTest.<lambda>   s    R[[)40 r/   c           
      H   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                  ||      }d d d        t        j                  g        t        t              g        y # 1 sw Y   5xY w)Nr   r   Tr   rF   r   rG   )r
   rH   rI   r   r   r   r   r   rJ   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+, 	*	MM"b)E	*I  "%DK		* 	*s   DD!c                 |   t               }t               }t        d|t        dt        d      t        dt              t        dt        t	        j
                  d                   t        d|t        dt        d      t        dt              t        dt                     | j                  ||      }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        j                  t        d      r*t        t        |j                   j"                        d       yt        j                  t        d      r*t        t        |j                   j"                        d       yy)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   rF   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#   r7   r   againstr   r%   r8   r9   )r(   r)   r*   r+   oldnews         r-   (test_remove_computed_default_on_computedzAAutogenerateComputedTest.test_remove_computed_default_on_computed   sc    ZZ4d35'"5'2;;z#:;	
 	4d35'"5'"	
 b"%E!HQKN,-E!HQKNF#E!HQKNE"Ahqk"oAhqk"oC
3 0 012fl3CGGLL!<01CGGLL!:. 2r/   N)__name__
__module____qualname____requires____backend__r.   r:   r
   combinationsr   r2   r3   rS   )computed_doesnt_reflect_as_server_defaultrZ   r5   rd   r?   r/   r-   r   r      s    (LK!0"B W,	-	
 	@ 33  4 D W4<D0II	
		< <<(/ =(/r/   r   )
sqlalchemyr   r   r   r   r   _autogen_fixturesr    r
   r   r   r   r   r   r   r   r   r?   r/   r-   <module>ro      s@         1    !    z/18 z/r/   