
    h                     z    d dl Z d dlZd dlmZ d dlmZ d dl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      Zy)
    N)VERSION)ContentFile)utilsmodels)BaseTest)NoSourceGenerator)InvalidImageFormatErrorEasyThumbnailsErrorc                   j     e Zd Z fdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Z xZS )ThumbnailerFieldTestc                 0   t         |           t        j                         | _        | j                  | j                  d       dD ]M  }t        j                  j                  j                  |      }| j                  |_        | j                  |_
        O y )Navatars/avatar.jpg)avatarpicture)supersetUpr   TemporaryStoragestoragecreate_imager   	TestModel_meta	get_fieldthumbnail_storage)selfnamefield	__class__s      Q/home/dcms/DCMS/lib/python3.12/site-packages/easy_thumbnails/tests/test_fields.pyr   zThumbnailerFieldTest.setUp   ss    --/$,,(<=) 	3D$$**44T:E LLEM&*llE#	3    c                 V    | j                   j                          t        |           y )N)r   delete_temporary_storager   tearDown)r   r   s    r   r"   zThumbnailerFieldTest.tearDown   s    --/r   c                     t        j                  d      }|j                  j                  ddi      }| j	                  |j
                  |j                  fd       y )Nr   r   size,  r'   )r'      )r   r   r   generate_thumbnailassertEqualwidthheight)r   instancethumbs      r   test_generate_thumbnailz,ThumbnailerFieldTest.test_generate_thumbnail   sI    ##+?@22FJ3GH%++u||4jAr   c                     t        d      }| j                  j                  d|       t        j                  d      fd}| j                  t        |       y )N)Lorem ipsum dolor sit amet. Not an image.avatars/invalid.jpgr$   c                  >     j                   j                  ddi      S )Nr%   r&   )r   r)   r-   s   r   <lambda>zHThumbnailerFieldTest.test_generate_thumbnail_bad_image.<locals>.<lambda>'   s    8??==Z " r   )r   r   saver   r   assertRaisesr   r   	text_filegenerater-   s      @r   !test_generate_thumbnail_bad_imagez6ThumbnailerFieldTest.test_generate_thumbnail_bad_image#   sL     KL	/;##+@A"+X6r   c                     t        d      }| j                  j                  d|       t        j                  d      fd}| j                  t        |       y )Nr1   r2   r$   c                  "     j                   d   S )Nsmallr$   r4   s   r   r5   zNThumbnailerFieldTest.test_generate_thumbnail_alias_bad_image.<locals>.<lambda>/   s    8??73 r   )r   r   r6   r   r   r7   r	   r8   s      @r   'test_generate_thumbnail_alias_bad_imagez<ThumbnailerFieldTest.test_generate_thumbnail_alias_bad_image+   sJ     KL	/;##+@A318<r   c                     t        j                  d      }| j                  t        |j                  j
                  ddi       y )Nr   r$   r%   )r   r   )r   r   r7   r
   r   r)   r   r-   s     r   &test_generate_thumbnail_alias_0x0_sizez;ThumbnailerFieldTest.test_generate_thumbnail_alias_0x0_size2   s9    ##+?@OO..0@	Br   c                    t        j                  d      }|j                  j                  }|j                  j	                  ddi      j                  |j                  j	                  ddi      j                  |j                  j	                  ddi      j                  f}| j                  t        j                  j                  |             |D ]0  }| j                  t        j                  j                  |             2 |j                  j                  d       | j                  t        j                  j                  |             |D ]0  }| j                  t        j                  j                  |             2 y )	Nr   r$   r%   r&      rE   d   rG   Fr6   )
r   r   r   pathget_thumbnail
assertTrueosexistsdeleteassertFalser   r-   source_paththumb_pathsrI   s        r   test_deletez ThumbnailerFieldTest.test_delete8   s   ##+?@oo**OO))6:*>?DDOO))6:*>?DDOO))6:*>?DD

 	{34 	2DOOBGGNN401	2E*45 	3DRWW^^D12	3r   c                    t        j                  d      }|j                  j                  }|j                  j	                  ddi      j                  |j                  j	                  ddi      j                  |j                  j	                  ddi      j                  f}| j                  t        j                  j                  |             |D ]0  }| j                  t        j                  j                  |             2 |j                  j                          | j                  t        j                  j                  |             |D ]0  }| j                  t        j                  j                  |             2 y )Nr   r$   r%   r&   rD   rF   )
r   r   r   rI   rJ   rK   rL   rM   delete_thumbnailsrO   rP   s        r   test_delete_thumbnailsz+ThumbnailerFieldTest.test_delete_thumbnailsH   s   ##+?@oo**OO))6:*>?DDOO))6:*>?DDOO))6:*>?DD

 	{34 	2DOOBGGNN401	2))+{34 	3DRWW^^D12	3r   c                    t        j                  d      }|j                  j                  ddi       |j                  j                  ddi       | j	                  t        t        |j                  j                                     d       y )Nr   r$   r%   r&   rD      )r   r   r   rJ   r*   lenlistget_thumbnailsrA   s     r   test_get_thumbnailsz(ThumbnailerFieldTest.test_get_thumbnailsX   sh    ##+?@%%vz&:;%%vz&:;T(//"@"@"BCDaHr   c                 $   t        j                  d      }| j                  d|j                  d   j                         t        j                  t        j                  |            }| j                  d|j                  d   j                         y )Nr   r$   z)/media/avatars/avatar.jpg.100x100_q85.jpgr>   )r   r   r*   r   urlpickleloadsdumps)r   r-   new_instances      r   test_serializationz'ThumbnailerFieldTest.test_serialization^   sn    ##+?@DhooV]F^FbFbc||FLL$:;DlFYFYZaFbFfFfgr   c                 *   t         dk  r5	 |j                  j                         |j                  j                          S |j	                  d      5 }|j                         cd d d        S # |j                  j                          w xY w# 1 sw Y   y xY w)N)rX   r   rb)DJANGO_VERSIONfilereadcloseopen)r   r   fds      r   _read_filefieldz$ThumbnailerFieldTest._read_filefieldd   sr    F"#zz(

  "ZZ 	779	 	 

  "	 	s   A* B	*B	Bc                     t        j                  d      }|j                  j                  dt	        | j                  |j                              d       | j                  |j                  j                  d       y )Nr   r$   zfile.jpgFrH   
   )	r   r   r   r6   r   rl   r   r*   r+   rA   s     r   *test_saving_image_field_with_resize_sourcez?ThumbnailerFieldTest.test_saving_image_field_with_resize_sourcen   si     ##+?@D$8$8$IJQV 	 	X 	))//4r   c                     t        j                  d      }|j                  j                  dt	        | j                  |j                              d       | j                  |j                  j                  d       y )Nr   r$   zfile.gifFrH   zpictures/file.jpg)	r   r   r   r6   r   rl   r   r*   r   rA   s     r   8test_saving_image_field_with_resize_source_different_extzMThumbnailerFieldTest.test_saving_image_field_with_resize_source_different_extw   sh    ##+?@D$8$8$IJQV 	 	X 	))..0CDr   )__name__
__module____qualname__r   r"   r/   r;   r?   rB   rS   rV   r\   rc   rl   ro   rq   __classcell__)r   s   @r   r   r      sI    	3B
7=B3 3 Ih5Er   r   )rL   r_   djangor   rf   django.core.files.baser   easy_thumbnails.testsr   r   "easy_thumbnails.tests.test_aliasesr   AliasBaseTesteasy_thumbnails.enginer   easy_thumbnails.exceptionsr	   r
   r    r   r   <module>r~      s/    	  , . / H 42nE= nEr   