
    Nwg{                        d dl Z d dlZd dlmZ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mZmZ d dlmZmZ d	d
lmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% ejL                  Z& e	       Z' eddddd       Z(e( ed      z   Z)e( ed      z
  Z* G d de      Z+ G d de j                        Z, G d de      Z- G d de      Z. G d de      Z/ G d de      Z0 ei        G d de             Z1 G d de      Z2y)     N)datetime	timedelta)StringIO)apps)get_user_model)
management)TestCaseTransactionTestCaseoverride_settings)
exceptionsregister   )ChoiceInheritTracking1InheritTracking2InheritTracking3InheritTracking4ModelWithCustomAttrForeignKey ModelWithCustomAttrOneToOneFieldModelWithHistoryInDifferentAppPoll
RestaurantTrackedAbstractBaseATrackedAbstractBaseBTrackedWithAbstractBaseTrackedWithConcreteBaseUserAccessorDefaultUserAccessorOverrideUUIDRegisterModelVoteri     
   )daysc                   *    e Zd Zd Zd Zd Zd Zd Zy)RegisterTestc                 b   | j                  t        t        j                  j	                               d       t
        j                  j                  t              }t        j                  j                  |d      }| j                  t        |j                  j	                               d       y )Nr   pub_datepollvotesr!   )	assertEquallenr   historyallr   objectscreatetoday)selfr*   choices      Z/var/www/horilla/myenv/lib/python3.12/site-packages/simple_history/registry_tests/tests.pytest_register_no_argsz"RegisterTest.test_register_no_args*   sv    V^^//12A6||""E"2&&D&:V^^//12A6    c                    d }| j                  t        |t               | j                  t	        t        j
                  j                               d       t        j                  j                  dd      }| j                  t	        t        j
                  j                               d       | j                  t	        |j
                  j                               d       y )Nc                     | j                   S N)r.   )models    r5   get_historyz<RegisterTest.test_register_separate_app.<locals>.get_history1   s    == r7   r   bobpass)usernamepasswordr!   )	assertRaisesAttributeErrorUserr,   r-   	historiesr/   r0   r1   )r3   r<   users      r5   test_register_separate_appz'RegisterTest.test_register_separate_app0   s    	! 	.+t<T^^//12A6||""EF"CT^^//12A6T^^//12A6r7   c                     | j                  t        j                        5  t        t        d       d d d        y # 1 sw Y   y xY w)Nagain)manager_name)rA   r   MultipleRegistrationsErrorr   r   r3   s    r5   test_reregisterzRegisterTest.test_reregister:   s5    zDDE 	7Zg6	7 	7 	7s	   ;Ac                 l   | j                  t        t        j                  j	                               d       t
        j                  j                  t              }t        j                  j                  |d      }t        j                  j                  d      }t        j                  j                  ||      }| j                  t        |j                  j	                               d       d}| j                  |t        |j                  j	                         d         d t        |              y )	Nr   r'   r)   voter)r?   )r4   rE   r!   z#Voter object changed by None as of )r,   r-   r    r.   r/   r   r0   r1   r2   r   rC   str)r3   r*   r4   rE   rN   expecteds         r5   test_register_custome_recordsz*RegisterTest.test_register_custome_records>   s    U]]..0115||""E"2&&D&:||""G"4$$F$>U]]..011583u}}'8'8':1'=#>X#OPr7   c                    | j                  t        t        j                  j	                               d       t        j
                  j                         }| j                  t        |j                  j	                               d       |j                  j	                         d   }| j                  t        |j                  t        j                               y )Nr   r!   )r,   r-   r   r.   r/   r0   r1   
assertTrue
isinstance
history_iduuidUUID)r3   entryr.   s      r5   test_register_history_id_fieldz+RegisterTest.test_register_history_id_fieldH   s    .66::<=qA!))002U]]..0115--##%a(
7#5#5tyyABr7   N)__name__
__module____qualname__r6   rF   rL   rQ   rY    r7   r5   r%   r%   )   s    777QCr7   r%   c                       e Zd Zd Zd Zy)TestUserAccessorc                 `    t        t               | j                  t        t        d             y )N!historicaluseraccessordefault_set)r   r   assertFalsehasattrrC   rK   s    r5   test_accessor_defaultz&TestUserAccessor.test_accessor_defaultQ   s!    $%'JKLr7   c                 d    t        t        d       | j                  t        t        d             y )Nmy_history_model_accessor)user_related_name)r   r   rS   rc   rC   rK   s    r5   test_accessor_overridez'TestUserAccessor.test_accessor_overrideU   s"    %9TU&ABCr7   N)rZ   r[   r\   rd   rh   r]   r7   r5   r_   r_   P   s    MDr7   r_   c                       e Zd Zd Zd Zy)TestInheritedModulec                 R    	 ddl m} y # t        $ r | j                  d       Y y w xY w)Nr   )HistoricalConcreteExternalz-HistoricalConcreteExternal is in wrong module)tests.modelsrl   ImportErrorfail)r3   rl   s     r5   test_using_app_labelz(TestInheritedModule.test_using_app_label[   s)    	GA 	GIIEF	G   	 &&c                 R    	 ddl m} y # t        $ r | j                  d       Y y w xY w)Nr   )HistoricalConcreteExternal2z.HistoricalConcreteExternal2 is in wrong module)rm   rs   rn   ro   )r3   rs   s     r5   test_defaultz TestInheritedModule.test_defaulta   s)    	HB 	HIIFG	Hrq   N)rZ   r[   r\   rp   rt   r]   r7   r5   rj   rj   Z   s    GHr7   rj   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestTrackingInheritancec                     | j                  t        d t        j                  j                  j
                  j                  D              t        g d             y )Nc              3   4   K   | ]  }|j                     y wr:   attname.0fs     r5   	<genexpr>zETestTrackingInheritance.test_tracked_abstract_base.<locals>.<genexpr>k         		   )idrU   history_change_reasonhistory_datehistory_user_idhistory_type)r,   sortedr   r.   r;   _metafieldsrK   s    r5   test_tracked_abstract_basez2TestTrackingInheritance.test_tracked_abstract_basei   sL     #:#B#B#H#H#N#N#U#U  			
r7   c                     | j                  t        d t        j                  j                  j
                  j                  D              t        g d             y )Nc              3   4   K   | ]  }|j                     y wr:   ry   r{   s     r5   r~   zETestTrackingInheritance.test_tracked_concrete_base.<locals>.<genexpr>|   r   r   )r   trackedconcretebase_ptr_idrU   r   r   r   r   )r,   r   r   r.   r;   r   r   rK   s    r5   test_tracked_concrete_basez2TestTrackingInheritance.test_tracked_concrete_basez   sL     #:#B#B#H#H#N#N#U#U  
		
r7   c                     | j                  t        j                        5   G d dt        t              }d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy)]TestTrackingInheritance.test_multiple_tracked_bases.<locals>.TrackedWithMultipleAbstractBasesN)rZ   r[   r\   r]   r7   r5    TrackedWithMultipleAbstractBasesr      s     r7   r   )rA   r   rJ   r   r   )r3   r   s     r5   test_multiple_tracked_basesz3TestTrackingInheritance.test_multiple_tracked_bases   s;    zDDE 	$&:	 	 	s	   >Ac                     | j                  t        d t        j                  j                  j
                  j                  D              t        g d             y )Nc              3   4   K   | ]  }|j                     y wr:   ry   r{   s     r5   r~   z\TestTrackingInheritance.test_tracked_abstract_and_untracked_concrete_base.<locals>.<genexpr>        R199Rr   )r   untrackedconcretebase_ptr_idrU   r   r   r   r   )r,   r   r   r.   r;   r   r   rK   s    r5   1test_tracked_abstract_and_untracked_concrete_basezITestTrackingInheritance.test_tracked_abstract_and_untracked_concrete_base   D    R&6&>&>&D&D&J&J&Q&QRR
	
r7   c                     | j                  t        d t        j                  j                  j
                  j                  D              t        g d             y )Nc              3   4   K   | ]  }|j                     y wr:   ry   r{   s     r5   r~   zNTestTrackingInheritance.test_indirect_tracked_abstract_base.<locals>.<genexpr>   r   r   )r   baseinherittracking2_ptr_idrU   r   r   r   r   )r,   r   r   r.   r;   r   r   rK   s    r5   #test_indirect_tracked_abstract_basez;TestTrackingInheritance.test_indirect_tracked_abstract_base   r   r7   c                     | j                  t        d t        j                  j                  j
                  j                  D              t        g d             y )Nc              3   4   K   | ]  }|j                     y wr:   ry   r{   s     r5   r~   zNTestTrackingInheritance.test_indirect_tracked_concrete_base.<locals>.<genexpr>   r   r   )r   baseinherittracking3_ptr_idrU   r   r   r   r   )r,   r   r   r.   r;   r   r   rK   s    r5   #test_indirect_tracked_concrete_basez;TestTrackingInheritance.test_indirect_tracked_concrete_base   r   r7   c                     | j                  t        j                        5  t        t               d d d        y # 1 sw Y   y xY wr:   )rA   r   rJ   r   r   rK   s    r5   +test_registering_with_tracked_abstract_basezCTestTrackingInheritance.test_registering_with_tracked_abstract_base   s4    zDDE 	'%&	' 	' 	's	   9AN)
rZ   r[   r\   r   r   r   r   r   r   r   r]   r7   r5   rv   rv   h   s%    
"
$
 
 
 'r7   rv   c                       e Zd ZdZd Zy)TestCustomAttrForeignKeyz<https://github.com/jazzband/django-simple-history/issues/431c                     t         j                  j                  j                  j	                  d      }| j                  |j                  d       y )Nr*   custom_poll)r   r.   r;   r   	get_fieldr,   	attr_namer3   fields     r5   test_custom_attrz)TestCustomAttrForeignKey.test_custom_attr   s8    -55;;AAKKFS-8r7   NrZ   r[   r\   __doc__r   r]   r7   r5   r   r      s
    F9r7   r   c                       e Zd ZdZd Zy)TestCustomAttrOneToOneFieldz<https://github.com/jazzband/django-simple-history/issues/870c                     t         j                  j                  j                  j	                  d      }| j                  t        |d             y )Nr*   r   )r   r.   r;   r   r   rb   rc   r   s     r5   r   z,TestCustomAttrOneToOneField.test_custom_attr   s9    088>>DDNNvV45r7   Nr   r]   r7   r5   r   r      s
    F6r7   r   )MIGRATION_MODULESc                       e Zd Zd Zd Zy)TestMigratec                 D    t        j                  ddt                      y )Nmakemigrationsmigration_test_app)stdoutr   call_commandr   rK   s    r5   test_makemigration_commandz&TestMigrate.test_makemigration_command   s    28:	
r7   c                 F    t        j                  dddt                      y )Nmigrater   T)faker   r   rK   s    r5   test_migrate_commandz TestMigrate.test_migrate_command   s    +$xz	
r7   N)rZ   r[   r\   r   r   r]   r7   r5   r   r      s    


r7   r   c                       e Zd ZdZd Zy)"TestModelWithHistoryInDifferentAppz<https://github.com/jazzband/django-simple-history/issues/485c                     t         j                  j                  j                  j                  }| j                  |d       y )Nexternal)r   r.   r;   r   	app_labelr,   )r3   appLabels     r5   test__different_appz6TestModelWithHistoryInDifferentApp.test__different_app   s/    199??EEOO:.r7   N)rZ   r[   r\   r   r   r]   r7   r5   r   r      s
    F/r7   r   )3unittestrV   r   r   ior   django.appsr   django.contrib.authr   django.corer   django.testr	   r
   r   simple_historyr   r   rm   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    	get_modelrC   r2   tomorrow	yesterdayr%   r_   rj   rv   r   r   r   r   r]   r7   r5   <module>r      s     (   . " H H /    * NN	q!R#9!$$I1%%	$C8 $CNDx(( DH( H^'h ^'B9x 96( 6 R(	
% 	
 )	
/ /r7   