o
    voi                     @   s   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 de	eZdS )    )nullcontextN)Column)Integer)MetaData)Table   )AutogenFixtureTest   )testing)config)eq_)expect_warnings)is_)is_true)mock)TestBasec                   @   s|   e Zd ZdZdZdd Zdd Zdd Ze	d	d
 dd
 dd
 dd
 dd Z
e	dd
 dd
 dd
 dd
 dd ZdS )AutogenerateComputedTest)computed_columnsTc                 C   s   t jjjr
t }|S t }|S )N)r   requirements"computed_columns_warn_no_persistedenabledr   r   )selfctx r   _/home/ubuntu/.local/lib/python3.10/site-packages/alembic/testing/suite/test_autogen_computed.py_fixture_ctx   s
   
z%AutogenerateComputedTest._fixture_ctxc              
   C   s   t  }t  }td|tdtdd td|tdtddtdttd |   | ||}W d    n1 s9w   Y  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Computedr   _fixturer   namecomputedr   
isinstancer   	persistedstrsqltextr   m1m2diffscr   r   r   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 |   | ||}W d    n1 s9w   Y  t|d d d t|d d	 d |d d
 }t|j	d t
t|jtj t
t|jtj d S )Nr   r   Tr   r    r!   r   remove_columnr#   r	   )r   r   r   r   r$   r%   r   r&   r   r'   r   r)   r(   server_defaultr-   r   r   r   test_remove_computed_column8   s$   
z4AutogenerateComputedTest.test_remove_computed_columnc                   C   s   d t dfS Nbar*5r$   r%   r   r   r   r   <lambda>Q       z!AutogenerateComputedTest.<lambda>c                   C   s   t dd fS r6   r8   r   r   r   r   r9   R   r:   c                   C   s   t dt jdddfS )Nr7   bar * 42T)r*   r8   r   r   r   r   r9   S   s   c                   C      t dt dfS )Nr7   r;   r8   r   r   r   r   r9   W       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 smw   Y  W d    n1 s|w   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&   r   
mock_callscalllistr   	test_case
arg_before	arg_afterr.   r/   	mock_warnr0   r   r   r   !test_cant_change_computed_warningP   s:   
 
z:AutogenerateComputedTest.test_cant_change_computed_warningc                   C   s   dS )N)NNr   r   r   r   r   r9   |   s    c                   C      t dt dfS )Nr!   r8   r   r   r   r   r9   }   r=   c                   C   rL   r6   r8   r   r   r   r   r9   ~   r=   c                   C   r<   )Nr7   z
bar * 
	5r8   r   r   r   r   r9      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 smw   Y  W d    n1 s|w   Y  t|jg  tt|g  d S )Nr   r   Tr   r>   r    r?   )r
   r@   rA   r   r   r   r   r   rB   r   r&   r   rC   rE   rF   r   r   r   test_computed_unchanged{   s4    z0AutogenerateComputedTest.test_computed_unchangedN)__name__
__module____qualname____requires____backend__r   r2   r5   r
   combinationsrK   rM   r   r   r   r   r      s(    
	"r   )
contextlibr   
sqlalchemyr$   r   r   r   r   _autogen_fixturesr    r
   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s     