
    h                     ~    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mZ dd	lmZmZ  G d
 de      Zy)    N)cache)translation)now)appsettings)get_translation_cache_key   )DateTimeModelSimpleModel)AppTestCaseoverride_parler_settingsc                   X     e Zd ZdZe fd       Zd
dZd Zd Zd Z	d Z
d Zd	 Z xZS )QueryCountTestsz!
    Test model construction
    c                    t         |           d| _        | j                  D ]-  }t        j                  j                  | j                  |       / t        j                  j                  | j                  t                      y )N)
MexicoMonacoMoroccoNetherlandsNorwayPolandPortugalRomaniaRussiazSouth Africa)_current_languagetr_title)r   r   datetime)	super
setUpClasscountry_listr
   objectscreateconf_fallbackr	   r   )clscountry	__class__s     M/home/dcms/DCMS/lib/python3.12/site-packages/parler/tests/test_query_count.pyr   zQueryCountTests.setUpClass   s{    
 '' 	^G&&9J9JU\&]	^ 	$$!//'CE 	% 	
    c                     || j                   }fd}t        j                  |      5  | j                  ||       d d d        y # 1 sw Y   y xY w)Nc                  >    D ]  } t        | j                          y N)strr   )objqss    r%   test_qsz;QueryCountTests.assertNumTranslatedQueries.<locals>.test_qs5   s     "CLL!"r&   )r!   r   overrideassertNumQueries)selfnumr,   language_coder-   s     `  r%   assertNumTranslatedQueriesz*QueryCountTests.assertNumTranslatedQueries.   sN      ..M	" !!-0 	0!!#w/	0 	0 	0s   AAc                     t        d      5  | j                  dt        | j                        z   t        j
                  j                                ddd       y# 1 sw Y   yxY w)zA
        Test that uncached queries work, albeit slowly.
        FPARLER_ENABLE_CACHINGr   N)r   r3   lenr   r
   r   allr0   s    r%   test_uncached_queriesz%QueryCountTests.test_uncached_queries>   sT     &EB 	c++AD4E4E0F,FH[H[H_H_Hab	c 	c 	cs   AAA$c                    t         j                  j                         d   }| j                  |t         j                  j	                  | j
                        j                         d          | j                  t         j                  j	                  | j
                        j                  dd      d   t        j                         y)zO
        Test QuerySet methods that do not return QuerySets of models.
        r   r   dayN)
r	   r   r8   assertEquallanguager!   assertIsInstancedatesdtdate)r0   r+   s     r%   "test_iteration_with_non_qs_methodsz2QueryCountTests.test_iteration_with_non_qs_methodsE   s    
 ##'')!,m33<<T=O=OPTTVWXYZ!!**4+=+=>DDZQVWXYZ\^\c\c	
r&   c                     t        d      5  | j                  dt        j                  j	                  d             ddd       y# 1 sw Y   yxY w)z5
        Test that .prefetch_related() works
        Fr5      translationsN)r   r3   r
   r   prefetch_relatedr9   s    r%   test_prefetch_queriesz%QueryCountTests.test_prefetch_queriesQ   sE     &EB 	++;&&77G	 	 	s   0AAc                    t        j                          t        d      5  t        j                  j                         }| j                  dt        | j                        z   |       | j                  d|       t        j                  j                  d      }| j                  d|       | j                  d|       ddd       y# 1 sw Y   yxY w)z>
        Test that the ``_translations_cache`` works.
        Fr5   r   r   rF   rE   N)
r   clearr   r
   r   r8   r3   r7   r   rG   )r0   r,   s     r%   test_model_cache_queriesz(QueryCountTests.test_model_cache_queriesZ   s     	%EB 	$$((*B++AD4E4E0F,FK++2 $$55nEB++Ar2++2	 	 	s   BCCc                    t        d      5  t        j                  j                         }|j                  j                         }t        |j                  dd      }ddd       | j                  d       y# 1 sw Y   xY w)zg
        Test that ``get_translation_cache_key`` creates correct cache key if prefix is empty.
         PARLER_CACHE_PREFIXr   enNz*parler.testapp.SimpleModelTranslation.1.enr   r
   r   firstrF   r   r$   r=   r0   modelfieldkeys       r%   +test_get_translation_cache_key_empty_prefixz;QueryCountTests.test_get_translation_cache_key_empty_prefixm   sr     &"= 	F''--/E&&,,.E+EOOQEC	F 	JK		F 	F   AA88Bc                    t        d      5  t        j                  j                         }|j                  j                         }t        |j                  dd      }ddd       | j                  d       y# 1 sw Y   xY w)ze
        Test that ``get_translation_cache_key`` creates correct cache key if prefix is set.
        mysiterN   r   rP   Nz1mysite.parler.testapp.SimpleModelTranslation.1.enrQ   rS   s       r%   *test_get_translation_cache_key_with_prefixz:QueryCountTests.test_get_translation_cache_key_with_prefixw   sr     &(C 	F''--/E&&,,.E+EOOQEC	F 	QR		F 	FrX   r)   )__name__
__module____qualname____doc__classmethodr   r3   r:   rC   rH   rK   rW   r[   __classcell__)r$   s   @r%   r   r      sB     
 
40 c

&LSr&   r   )r   rA   django.core.cacher   django.utilsr   django.utils.timezoner   parlerr   parler.cacher   testapp.modelsr	   r
   utilsr   r   r    r&   r%   <module>rj      s-     # $ %  2 6 8qSk qSr&   