o
    ‹ågÀ  ã                   @   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 G dd„ de	eƒZdS )é    N)ÚColumn)ÚInteger)ÚMetaData)ÚTable)Úsqla_compaté   )ÚAutogenFixtureTesté   )Útesting)Úconfig)Úeq_)Úis_true)ÚTestBasec                   @   sÒ   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Ze	 
dedd�fedd�dfedd�eddd�fedd�edd�feddddd�eddddd�fedddd�edddd�f¡ejjdd„ ƒƒZdd„ Zdd „ ZdS )!ÚAutogenerateIdentityTest)Úidentity_columnsTc                 C   sÊ   t ƒ }t ƒ }td|tdtjƒƒ td|tdtjƒtdttjdd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|jdƒ d S )NÚuserÚotherÚidé   é   ©ÚstartÚ	incrementT©Úprimary_keyr   Ú
add_columné   r	   )r   r   r   ÚsaÚTextr   ÚIdentityÚ_fixturer   ÚnameÚidentityr   Ú
isinstancer   r   )ÚselfÚm1Úm2ÚdiffsÚi© r)   úg/var/www/html/flaskapp/venv/lib/python3.10/site-packages/alembic/testing/suite/test_autogen_identity.pyÚtest_add_identity_column   s,   
üüz1AutogenerateIdentityTest.test_add_identity_columnc              
   C   s²   t ƒ }t ƒ }td|tdttjddd�dd�ƒ td|ƒ |  ||¡}t|d d d	ƒ t|d d dƒ |d d }t|jdƒ t	t
|jtjƒƒ t|jjdƒ t|jjdƒ d S )
Nr   r   r   r	   r   Tr   r   Úremove_column)r   r   r   r   r   r   r    r   r!   r   r#   r"   r   r   )r$   r%   r&   r'   Úcr)   r)   r*   Útest_remove_identity_column1   s*   üý
z4AutogenerateIdentityTest.test_remove_identity_columnc                 C   sT   t ƒ }t ƒ }||fD ]}tjdd�}td|tdt|ƒƒ q
|  ||¡}t|g ƒ d S )Nr   ©r   r   r   )r   r   r   r   r   r   r    r   )r$   r%   r&   ÚmÚid_r'   r)   r)   r*   Útest_no_change_identity_columnM   s   z7AutogenerateIdentityTest.test_no_change_identity_columnc              	   C   sº   t ƒ }t ƒ }tjrdddœ}ndddœ}td|tdttjdd�ƒƒ tjdddi|¤Ž}td|tdt|ƒƒ |  ||¡}t	j
jd	krVtt|ƒd
ƒ t|d d d dƒ d S t|g ƒ d S )NT)Úoracle_on_nullÚoracle_order)Úon_nullÚorderr   r   r   r/   r   Úoracler   r   Úmodify_defaultr)   )r   r   Úidentity_has_dialect_kwargsr   r   r   r   r   r    r   Údbr!   r   Úlenr   )r$   r%   r&   Úargsr1   r'   r)   r)   r*   Útest_dialect_kwargs_changesY   s   
z4AutogenerateIdentityTest.test_dialect_kwargs_changesNr   r/   r   r   F)Úalwaysr   r   éd   )r   ÚminvalueÚmaxvalueÚcycleé
   r	   i'  )r   r   rA   i  c                 C   s  |rt jdi |¤Žfnd}|rt jdi |¤Žfnd}tƒ }tƒ }td|tdtg|¢R Ž tdt jƒƒ td|tdtg|¢R Ž tdt jƒƒ |  ||¡}tt	|d ƒdƒ |d d }t|d dƒ t|d dƒ t|d	 dƒ |d
 }|d }	dd„ }
|
||ƒ |
||	ƒ d S )Nr)   r   r   r   r   r   r8   r   r	   r   é   c                 S   sJ   | rt t|tjƒƒ |  ¡ D ]\}}tt||ƒ|ƒ qd S t |dv ƒ d S )N)NF)r   r#   r   r   Úitemsr   Úgetattr)ÚkwÚidtÚkÚvr)   r)   r*   Úcheck›   s   ÿz<AutogenerateIdentityTest.test_change_identity.<locals>.check)
r   r   r   r   r   r   r   r    r   r;   )r$   ÚbeforeÚafterÚ
arg_beforeÚ	arg_afterr%   r&   r'   ÚoldÚnewrK   r)   r)   r*   Útest_change_identitym   s6   
ü
ü
z-AutogenerateIdentityTest.test_change_identityc              
   C   sæ   t ƒ }t ƒ }td|tdtƒtdtjƒƒ td|tdttjddd�ƒtdtjƒƒ |  ||¡}tt	|d ƒdƒ |d d }t|d d	ƒ t|d dƒ t|d
 dƒ t|d d ƒ |d }t
t|tjƒƒ t|jdƒ t|jdƒ d S )Nr   r   r   r   éè  ©r   rA   r   r   r8   r	   r   rD   )r   r   r   r   r   r   r   r    r   r;   r   r#   r   rA   )r$   r%   r&   r'   Úaddedr)   r)   r*   Útest_add_identity_to_column¦   s2   
ü
üz4AutogenerateIdentityTest.test_add_identity_to_columnc              
   C   sÎ   t ƒ }t ƒ }td|tdttjddd�ƒtdtjƒƒ td|tdtƒtdtjƒƒ |  ||¡}tt	|d ƒdƒ |d d }t|d d	ƒ t|d dƒ t|d
 dƒ t|d d ƒ |d }t
t|tjƒƒ d S )Nr   r   r   rS   rT   r   r   r   r8   r	   rD   r   )r   r   r   r   r   r   r   r    r   r;   r   r#   )r$   r%   r&   r'   Úremovedr)   r)   r*   Ú test_remove_identity_from_columnÆ   s.   
ü
üz9AutogenerateIdentityTest.test_remove_identity_from_column)Ú__name__Ú
__module__Ú__qualname__Ú__requires__Ú__backend__r+   r.   r2   r=   r
   ÚcombinationsÚdictr   ÚrequirementsÚidentity_columns_alterrR   rV   rX   r)   r)   r)   r*   r      s.    þþ÷* r   )Ú
sqlalchemyr   r   r   r   r   Úalembic.utilr   Ú_autogen_fixturesr   Ú r
   r   r   r   r   r   r)   r)   r)   r*   Ú<module>   s    