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 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)   d/home/ubuntu/webapp/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    