
    h+                        d dl mZ d dlmZ d dlmZmZ d dlm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZm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      Z G d de      Zy)    )storage)	FileField)	post_savepre_save)filessignal_handlerssignalsr   )aliases)settings)modelsutilsc                   ,     e Zd ZdZ fdZ fdZ xZS )BaseTestFc                    t         |           ddiddiddidddiddd	d
ddd	ddd	ddddiidt        _        t        j
                  | _        i t        _        t	        j                          | j                  rt        j                         | _        | j                  | j                  d       t        j                  j                  j!                  d      }| j                  |_        | j                  |_        y y )Nsize  r   ,  r   d   r   largemediumsmall   r   iX  P   Tr   crop)r   bannerr   r      r%   )avatarr   sidebar)      ) easy_thumbnails_tests.Profile$easy_thumbnails_tests.Profile.avatar	other_appavatars/test.jpgr&   )supersetUpr   THUMBNAIL_ALIASESr
   _aliases_BaseTest__aliasespopulate_from_settingscreate_filer   TemporaryStorager   create_imager   Profile_meta	get_fieldthumbnail_storage)selffield	__class__s     R/home/dcms/DCMS/lib/python3.12/site-packages/easy_thumbnails/tests/test_aliases.pyr0   zBaseTest.setUp   s     !*-!:. *- !*-#,d;.
 $,T:"*D95
 FJ/&
"$ !))&&( 113DLdll,>?NN((228<E LLEM&*llE#     c                     | j                   t        _        | j                  r| j                  j                          t        |           y N)r3   r
   r2   r5   r   delete_temporary_storager/   tearDownr<   r>   s    r?   rD   zBaseTest.tearDown/   s3    >>LL113r@   )__name__
__module____qualname__r5   r0   rD   __classcell__r>   s   @r?   r   r      s    K3B r@   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)		AliasTestc                 0   | j                  t        j                  d      d        | j                  t        j                  d      ddi       | j                  t        j                  d      d        | j                  t        j                  d      d        y )Ninvalidr   r   r   r&   r"   assertEqualr
   getr<   s    r?   test_globalzAliasTest.test_global8   sk    Y/6W-
/CDX.5X.5r@   c                     | j                  t        j                  dd      ddd       | j                  t        j                  dd      ddd       y )	Nr&   r,   targetr#   Tr    r   r$   rO   rR   s    r?   test_targetzAliasTest.test_target>   sV    KK!GIt,	. 	KK FHt,	.r@   c                     | j                  t        j                  dd      ddd       | j                  t        j                  dd      ddd       | j                  t        j                  dd      d        y )	Nr"   r,   rU   r   Tr    r+   easy_thumbnails_testsrO   rR   s    r?   test_partial_targetzAliasTest.test_partial_targetH   st    KK!GI-	/ 	KK)HI-	/ 	KK)@A4	Ir@   c                     | j                  t        j                  dd      ddi       | j                  t        j                  dd      ddi       | j                  t        j                  d	d      d        y )
Nr   z(easy_thumbnails_tests.Profile.not_avatarrU   r   r   r   r,   r   rN   rO   rR   s    r?   test_target_fallbackzAliasTest.test_target_fallbackS   s|    KK JLZ 	"
 	KK!GIZ 	"
 	KK"HJ	r@   c           
         | j                  t        j                         ddiddiddid       | j                  t        j                  d      ddiddiddid       | j                  t        j                  d      dd	d
ddiddiddid       | j                  t        j                  d      dd	d
dd	d
ddiddid	ddd       y )Nr   r   r   r   r   unknown_appr+   r   Tr    r   )r"   r   r   r   r,   r#   r$   r!   r   )r&   r"   r   r   r   rP   r
   allrR   s    r?   test_allzAliasTest.test_alld   s    KKM *-!:. *-	 	KK& *-!:. *-	 	KK78#,d; *-!:. *-		 	KK>?#+T:#,d; *-!:."&9	r@   c           	          | j                  t        j                  dd      dddddid	       | j                  t        j                  d
d      ddddddddidddd       y )Nr+   F)include_globalr   Tr    r   r   )r"   r   r,   r#   r$   r_   )r&   r"   r   r   r`   rR   s    r?   test_all_no_globalzAliasTest.test_all_no_global   s    KK/G (1$?$j1	 	KK6uN (0>'0$?$j1&*H=		r@   c                 .   t         j                  j                  j                  d       t         j                  j                  j	                  d      j                         }| j                  t        j                  d|j                        ddd       y )	Nr.   r&   r&   r   rU   r$   Tr    )
r   r8   objectscreateonlyfirstrP   r
   rQ   r&   )r<   instances     r?   test_deferredzAliasTest.test_deferred   si    %%-?%@>>))..x8>>@KK8t,	.r@   N)
rF   rG   rH   rS   rW   rZ   r\   rb   re   rm    r@   r?   rL   rL   6   s'    6.	I""H(.r@   rL   c                       e Zd ZdZd Zd Zy)AliasThumbnailerTestTc                     t        j                  | j                  d      }| j                  |_        |d   }| j	                  |j
                  |j                  fd       y )Nr.   r   )r   K   )r   get_thumbnailerr   r;   rP   widthheight)r<   thumbnailerthumbs      r?   test_thumbnailerz%AliasThumbnailerTest.test_thumbnailer   sL    ++DLL:LM(,%G$%++u||4i@r@   c                     t        j                  d      }t        j                  |j                        }|d   }| j                  |j                  |j                  fd       y )Nr.   rg   r   r$   )r   r8   r   rs   r&   rP   rt   ru   )r<   profilerv   rw   s       r?   test_thumbnailer_fieldfilez/AliasThumbnailerTest.test_thumbnailer_fieldfile   sL    ..(:;++GNN;G$%++u||4h?r@   N)rF   rG   rH   r5   rx   r{   rn   r@   r?   rp   rp      s    KA@r@   rp   c                   8     e Zd ZdZd Z fdZ fdZd Z xZS )GenerationBaseTc                     t        d      S )Nz$Subclasses should return the handler)NotImplementedErrorrR   s    r?   get_signal_handlerz!GenerationBase.get_signal_handler   s    "#IJJr@   c                    t         |           t        j                  j	                  | j                         t        j                         t        j                  | _
        | j                  j                  t        _	        t        j                  j                  | _        | j                  t        j                  _        t        j"                  | _        | j                  t        _        y N)sender)r/   r0   r	   
saved_fileconnectr   r   r8   r   
MEDIA_ROOT_MEDIA_ROOTr   temporary_locationdjango_storagedefault_storage_wrapped_old_default_storagethumbnail_default_storage_old_thumbnail_default_storagerE   s    r?   r0   zGenerationBase.setUp   s    ""##%fnn 	# 	> $.."ll==$2$B$B$K$K!26,,&&/.5.O.O+,0LL)r@   c                 .   | j                   t        _        | j                  t        j
                  _        | j                  t        _	        t        j                  j                  | j                         t        j                         t         | E          y r   )r   r   r   r   r   r   r   r   r   r   r	   r   
disconnectr   r   r8   r/   rD   rE   s    r?   rD   zGenerationBase.tearDown   si    ,0,O,O)262K2K&&/"..%%##%fnn 	& 	>r@   c                 @   |j                   }t        j                  ||       |j                  j                  D ].  }t        |t              sdt        ||j                        _	        0 t        j                  ||       | j                  j                  d      d   S )Nr   rl   Tavatars   )r>   r   sendr9   fields
isinstancer   getattrname
_committedr   r   listdir)r<   rl   clsr=   s       r?   	fake_savezGenerationBase.fake_save   s}      S84YY%% 	@E%+;?%**-8	@ 	cH5||##I.q11r@   )	rF   rG   rH   r5   r   r0   rD   r   rI   rJ   s   @r?   r}   r}      s    KK92r@   r}   c                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
GenerationTestzA
    Test the ``generate_aliases`` signal handler behaviour.
    c                 "    t         j                  S rB   )r   generate_aliasesrR   s    r?   r   z!GenerationTest.get_signal_handler   s    ///r@   c                     t        j                  d      }| j                  |      }| j                  t	        |      d       y)zU
        Thumbnails are not generated if there isn't anything to generate...
        Nrg   r   r   r8   r   rP   lenr<   rz   r   s      r?   
test_emptyzGenerationTest.test_empty   s4     ..-w'UQ'r@   c                     t        j                  d      }| j                  |      }| j                  t	        |      d       yzJ
        Thumbnails are only generated when the file is modified.
        r.   rg   r   Nr   r   s      r?   test_no_changezGenerationTest.test_no_change   5     ..(:;w'UQ'r@   c                     t        j                  d      }d|j                  _        | j	                  |      }| j                  t        |      d       y)zl
        When a file is modified, thumbnails are built for all matching
        non-global aliases.
        r.   rg   F   Nr   r8   r&   r   r   rP   r   r   s      r?   test_changedzGenerationTest.test_changed   A    
 ..(:;$)!w'UQ'r@   c                     t        j                  d      }|j                  j                  d       | j	                  |      }| j                  t        |      d       y )Nr.   rg   F)saver   )r   r8   r&   deleter   rP   r   r   s      r?   test_deletedzGenerationTest.test_deleted   sH    ..(:;5)w'UQ'r@   c                 2   t        j                  d      }|j                  }d|_        t	        j
                  ||       d|_        t        j
                  ||       | j                  j                  d      d   }| j                  t        |      d       y)	zS
        A ClearablFileInput will set field value to False before pre_save
        r.   rg   Fr   r*   r   r   N)r   r8   r>   r&   r   r   r   r   r   rP   r   )r<   rz   r   r   s       r?   test_clearablezGenerationTest.test_clearable  sy     ..(:;S73 cG4 $$Y/2UQ'r@   c                 *   t        j                  d      }| j                  j                  | j	                  | j                  d            5 }||_        | j                  |      }| j                  t        |      d       d d d        y # 1 sw Y   y xY w)Nr.   rg   zavatars/second.jpg   )	r   r8   r   openr7   logor   rP   r   )r<   rz   r   
list_filess       r?   test_standard_filefieldz&GenerationTest.test_standard_filefield  sz    ..(:; \\t00?STU 	1Y]GL0J S_a0	1 	1 	1s   4B		BN)rF   rG   rH   __doc__r   r   r   r   r   r   r   rn   r@   r?   r   r      s*    0((	((($	1r@   r   c                   "    e Zd ZdZd Zd Zd Zy)GlobalGenerationTestzH
    Test the ``generate_aliases_global`` signal handler behaviour.
    c                 "    t         j                  S rB   )r   generate_aliases_globalrR   s    r?   r   z'GlobalGenerationTest.get_signal_handler&  s    666r@   c                     t        j                  d      }| j                  |      }| j                  t	        |      d       yr   r   r   s      r?   r   z#GlobalGenerationTest.test_no_change)  r   r@   c                     t        j                  d      }d|j                  _        | j	                  |      }| j                  t        |      d       y)zr
        When a file is modified, thumbnails are built for all matching and
        project-wide aliases.
        r.   rg   F   Nr   r   s      r?   r   z!GlobalGenerationTest.test_changed1  r   r@   N)rF   rG   rH   r   r   r   r   rn   r@   r?   r   r   !  s    7(	(r@   r   N)django.core.filesr   r   django.db.modelsr   django.db.models.signalsr   r   easy_thumbnailsr   r   r	   easy_thumbnails.aliasr
   easy_thumbnails.confr   easy_thumbnails.testsr   r   r   rL   rp   r}   r   r   rn   r@   r?   <module>r      ss    7 & 8 D D ) ) /(u~~ (Vk. k.\@8 @ #2X #2LD1^ D1N(> (r@   