Ë
    ¸2Úiß  ã                   ó  — 	 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«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy# e$ r d dlZY Œ}w xY w)é    )ÚmockN)ÚValidationError)Úmodels)Úoverride_settingsé   )ÚSOFT_DELETE_CASCADE)ÚSafeDeleteModelé   )ÚSafeDeleteForceTestCasec                   ó   — e Zd Zy)ÚSoftDeleteModelN©Ú__name__Ú
__module__Ú__qualname__© ó    úX/var/www/html/acx/venv/lib/python3.12/site-packages/safedelete/tests/test_soft_delete.pyr   r      ó   „ àr   r   c                   óH   — e Zd Z ej                  eej                  ¬«      Zy)ÚSoftDeleteRelatedModel)Ú	on_deleteN)r   r   r   r   Ú
ForeignKeyr   ÚCASCADEÚrelatedr   r   r   r   r      s   „ Øˆf×Ñ ¸6¿>¹>ÔJ�Gr   r   c                   ó   — e Zd Zy)ÚSoftDeleteMixinModelNr   r   r   r   r   r      r   r   r   c                   ó4   — e Zd Z ej                  dd¬«      Zy)ÚUniqueSoftDeleteModeléd   T)Ú
max_lengthÚuniqueN)r   r   r   r   Ú	CharFieldÚnamer   r   r   r   r      s   „ àˆ6×ÑØØô�Dr   r   c                   ól   — e Zd Z ej                  d¬«      Z ej                  d¬«      Z G d„ d«      Zy)ÚUniqueConstraintSoftDeleteModelr    ©r!   c                   ó:   — e Zd Z ej                  ddgd¬«      gZy)ú$UniqueConstraintSoftDeleteModel.Metar$   ÚteamÚunique_constraint)Úfieldsr$   N)r   r   r   r   ÚUniqueConstraintÚconstraintsr   r   r   ÚMetar)   *   s$   „ à#ˆF×#Ñ#Ø Ð'Ø(ôð
‰r   r/   N©r   r   r   r   r#   r$   r*   r/   r   r   r   r&   r&   %   s0   „ àˆ6×Ñ sÔ+€DØˆ6×Ñ sÔ+€D÷
ò 
r   r&   c                   ól   — e Zd Z ej                  d¬«      Z ej                  d¬«      Z G d„ d«      Zy)ÚUniqueTogetherSoftDeleteModelr    r'   c                   ó   — e Zd ZdZy)ú"UniqueTogetherSoftDeleteModel.Meta©r$   r*   N)r   r   r   Úunique_togetherr   r   r   r/   r4   8   s   „ Ø*‰r   r/   Nr0   r   r   r   r2   r2   3   s0   „ àˆ6×Ñ sÔ+€DØˆ6×Ñ sÔ+€D÷+ò +r   r2   c                   óö   — e Zd Zd„ Zd„ Zd„ Z ej                  d«       ej                  d«       ej                  d«      d„ «       «       «       Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z ed¬«      d„ «       Zy)ÚSoftDeleteTestCasec                 óJ   — t         j                  j                  «       | _        y ©N)r   ÚobjectsÚcreateÚinstance©Úselfs    r   ÚsetUpzSoftDeleteTestCase.setUp>   s   € Ü'×/Ñ/×6Ñ6Ó8ˆ�r   c                 ó‚   — | j                  | j                  d| j                  j                  j                  dif¬«       y)zPDeleting a model with the soft delete policy should only mask it, not delete it.r
   )Úexpected_outputN)ÚassertSoftDeleter=   Ú_metaÚlabelr>   s    r   Útest_softdeletez"SoftDeleteTestCase.test_softdeleteA   s4   € à×Ñ˜dŸm™m¸aÀ$Ç-Á-×BUÑBU×B[ÑB[Ð]^ÐA_Ð=`ÐÕar   c                 ó^   — | j                  t        j                  j                  «       «       y)zlDeprecated: Deleting a SafeDeleteModel model with the soft delete policy should only mask it, not delete it.N)rC   r   r;   r<   r>   s    r   Útest_softdelete_mixinz(SoftDeleteTestCase.test_softdelete_mixinE   s    € à×ÑÔ2×:Ñ:×AÑAÓCÕDr   z$safedelete.models.post_undelete.sendz&safedelete.models.post_softdelete.sendz%safedelete.models.pre_softdelete.sendc                 ó  — | j                   j                  «        | j                  |j                  d«       | j                  |j                  d«       | j                   j	                  «        | j                  |j                  d«       y)zVThe soft delete and undelete signals should be sent correctly for soft deleted models.r
   N)r=   ÚdeleteÚassertEqualÚ
call_countÚsave)r?   Úmock_presoftdeleteÚmock_softdeleteÚmock_undeletes       r   Útest_signalszSoftDeleteTestCase.test_signalsI   sx   € ð
 	�‰×ÑÔð 	×ÑØ×)Ñ)Øô	
ð
 	×ÑØ×&Ñ&Øô	
ð 	�‰×ÑÔØ×ÑØ×$Ñ$Øõ	
r   c                 ó*  — | j                  | j                  d¬«       | j                  j                  «        | j                  t        j
                  j                  «       d«       | j                  t        j                  j                  «       d«       y)z;Undeleting a soft deleted model should uhhh... undelete it?F)rM   r
   N)rC   r=   ÚundeleterK   r   r;   ÚcountÚall_objectsr>   s    r   Útest_undeletez SoftDeleteTestCase.test_undeletec   sq   € à×Ñ˜dŸm™m°%ÐÔ8Ø�‰×ÑÔ Ø×ÑÜ×#Ñ#×)Ñ)Ó+Øô	
ð 	×ÑÜ×'Ñ'×-Ñ-Ó/Øõ	
r   c                 ó|  — | j                  t        j                  j                  «       d«       t        j                  j	                  «       j                  «        | j                  t        j                  j                  «       d«       t        j                  j	                  «       j                  «        | j                  t        j                  j                  «       d«       t        j                  j	                  «       j                  «        | j                  t        j                  j                  «       d«       y )Nr
   r   )rK   r   r;   rT   ÚallrJ   rS   Údeleted_objectsr>   s    r   Útest_undelete_querysetz)SoftDeleteTestCase.test_undelete_querysetp   sÏ   € Ø×Ñœ×0Ñ0×6Ñ6Ó8¸!Ô<ä×Ñ×#Ñ#Ó%×,Ñ,Ô.Ø×Ñœ×0Ñ0×6Ñ6Ó8¸!Ô<ä×Ñ×#Ñ#Ó%×.Ñ.Ô0Ø×Ñœ×0Ñ0×6Ñ6Ó8¸!Ô<ä×'Ñ'×+Ñ+Ó-×6Ñ6Ô8Ø×Ñœ×0Ñ0×6Ñ6Ó8¸!Õ<r   c                 ó¸  — | j                  t        j                  j                  «       d«       t        j                  j                  t        j                  j                  «       ¬«       | j                  t        j                  j                  «       d«       t        j                  j                  «       j                  «        | j                  t        j                  j                  «       d«       t        j                  j                  «       j                  «        | j                  t        j                  j                  «       d«       t        j                  j                  «       j                  t        ¬«       | j                  t        j                  j                  «       d«       | j                  t        j                  j                  «       d«       y )Nr
   )r   r   )Úforce_policy)rK   r   r;   rT   r   r<   ÚfirstrX   rJ   rY   rS   r   r>   s    r   ÚKtest_undelete_with_soft_delete_policy_and_forced_soft_delete_cascade_policyz^SoftDeleteTestCase.test_undelete_with_soft_delete_policy_and_forced_soft_delete_cascade_policy|   s<  € Ø×Ñœ×0Ñ0×6Ñ6Ó8¸!Ô<Ü×&Ñ&×-Ñ-´o×6MÑ6M×6SÑ6SÓ6UÐ-ÔVØ×ÑÔ/×7Ñ7×=Ñ=Ó?ÀÔCä×Ñ×#Ñ#Ó%×,Ñ,Ô.Ø×Ñœ×0Ñ0×6Ñ6Ó8¸!Ô<ä×&Ñ&×*Ñ*Ó,×3Ñ3Ô5Ø×ÑÔ/×7Ñ7×=Ñ=Ó?ÀÔCä×'Ñ'×+Ñ+Ó-×6Ñ6ÔDWÐ6ÔXØ×Ñœ×0Ñ0×6Ñ6Ó8¸!Ô<Ø×ÑÔ/×7Ñ7×=Ñ=Ó?ÀÕCr   c                 ó´   — t         j                  j                  d¬«      j                  «        | j	                  t
        t        d¬«      j                  «       y)z>Check that uniqueness is also checked against deleted objects Útest©r$   N)r   r;   r<   rJ   ÚassertRaisesr   Úvalidate_uniquer>   s    r   Útest_validate_uniquez'SoftDeleteTestCase.test_validate_unique‹   sF   € ä×%Ñ%×,Ñ,Øð 	-ó 	
ç
‰&Œ(Ø×ÑÜÜ!Øôç‰oõ		
r   c                 óÂ   — t         j                  j                  d¬«       t         j                  j                  d¬«      \  }}| j                  |j                  d«       y )Nr
   )Úid)r   r;   Úupdate_or_createrK   rf   ©r?   ÚobjÚcreateds      r   Ú%test_update_or_create_no_unique_fieldz8SoftDeleteTestCase.test_update_or_create_no_unique_field—   sJ   € Ü×Ñ×0Ñ0°AÐ0Ô6Ü&×.Ñ.×?Ñ?À1Ð?ÓE‰ˆˆWØ×Ñ˜Ÿ™ Õ#r   c                 ó  — t         j                  j                  d¬«      \  }}|j                  «        t         j                  j                  d¬«      \  }}| j	                  |j
                  d«       | j	                  |d«       y )Núunique-testra   F©r   r;   rg   rJ   rK   r$   rh   s      r   Ú'test_update_or_create_with_unique_fieldz:SoftDeleteTestCase.test_update_or_create_with_unique_fieldœ   si   € ä,×4Ñ4×EÑEÈ=ÐEÓY‰ˆˆWØ�
‰
Œä,×4Ñ4×EÑEÈ=ÐEÓY‰ˆˆWØ×Ñ˜Ÿ™ =Ô1Ø×Ñ˜ %Õ(r   c                 óH  — t         j                  j                  dd¬«      \  }}|j                  «        t         j                  j                  ddi ¬«      \  }}| j	                  |j
                  d«       | j	                  |j                  d«       | j                  |«       y )NÚthorÚavengersr5   )r$   r*   Údefaults)r&   r;   rg   rJ   rK   r$   r*   ÚassertFalserh   s      r   Ú,test_update_or_create_with_unique_constraintz?SoftDeleteTestCase.test_update_or_create_with_unique_constraint¥   s†   € ä6×>Ñ>×OÑOÐU[ÐblÐOÓm‰ˆˆWØ�
‰
Œä6×>Ñ>×OÑOÐU[ÐblÐwyÐOÓz‰ˆˆWØ×Ñ˜Ÿ™ 6Ô*Ø×Ñ˜Ÿ™ :Ô.Ø×Ñ˜Õ!r   c                 óF  — t         j                  j                  dd¬«      \  }}|j                  «        t         j                  j                  dd¬«      \  }}| j	                  |j
                  d«       | j	                  |j                  d«       | j                  |«       y )Nrq   rr   r5   )r2   r;   rg   rJ   rK   r$   r*   rt   rh   s      r   Ú5test_update_or_create_with_unique_together_constraintzHSoftDeleteTestCase.test_update_or_create_with_unique_together_constraint¯   sƒ   € ä4×<Ñ<×MÑMÐSYÐ`jÐMÓk‰ˆˆWØ�
‰
Œä4×<Ñ<×MÑMÐSYÐ`jÐMÓk‰ˆˆWØ×Ñ˜Ÿ™ 6Ô*Ø×Ñ˜Ÿ™ :Ô.Ø×Ñ˜Õ!r   c                 ó  — | j                  t        j                  «       «       | j                  t        j                  «       «       | j                  t
        j                  «       «       | j                  t        j                  «       «       y r:   )rt   r   Úhas_unique_fieldsÚ
assertTruer   r2   r&   r>   s    r   Útest_model_has_unique_fieldsz/SoftDeleteTestCase.test_model_has_unique_fields¹   s[   € Ø×Ñœ×:Ñ:Ó<Ô=Ø�‰Ô-×?Ñ?ÓAÔBØ�‰Ô5×GÑGÓIÔJØ�‰Ô7×IÑIÓKÕLr   T)Ú2SAFE_DELETE_INTERPRET_UNDELETED_OBJECTS_AS_CREATEDc                 ó  — t         j                  j                  d¬«      \  }}|j                  «        t         j                  j                  d¬«      \  }}| j	                  |j
                  d«       | j	                  |d«       y )Nrm   ra   Trn   rh   s      r   Ú4test_update_or_create_flag_with_settings_flag_activezGSoftDeleteTestCase.test_update_or_create_flag_with_settings_flag_active¿   sk   € ô -×4Ñ4×EÑEÈ=ÐEÓY‰ˆˆWØ�
‰
Œä,×4Ñ4×EÑEÈ=ÐEÓY‰ˆˆWØ×Ñ˜Ÿ™ =Ô1à×Ñ˜ $Õ'r   N)r   r   r   r@   rF   rH   r   ÚpatchrQ   rV   rZ   r^   rd   rk   ro   ru   rw   r{   r   r~   r   r   r   r8   r8   <   s¤   „ ò9òbòEð €T‡Z�ZÐ6Ó7Ø€T‡Z�ZÐ8Ó9Ø€T‡Z�ZÐ7Ó8ñ
ó 9ó :ó 8ð
ò.
ò
=òDò

ò$ò
)ò"ò"òMñ È$ÔOñ(ó Pñ(r   r8   )Úunittestr   ÚImportErrorÚdjango.core.exceptionsr   Ú	django.dbr   Údjango.testr   Úconfigr   r	   Útestcaser   r   r   r   r   r&   r2   r8   r   r   r   ú<module>r‡      s�   ððÝõ 3Ý Ý )å (Ý $Ý -ô	�oô 	ô
K˜_ô Kô	˜?ô 	ô
˜Oô ô
 oô 
ô+ Oô +ôL(Ð0õ L(øðs ò Ýðús   ‚A: Á:	BÂB