
     h&;                     h   d dl mZ d dl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 n# e$ r	 d dlmZ Y nw xY wd d	lmZmZmZmZ d dlZd d
lmZmZmZmZmZmZ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(dS )    )unicode_literalsN)LogEntry)DjangoJSONEncoder)TestCaseSimpleTestCase)RequestFactory)logout)NoReverseMatch)TemplateContextTemplateSyntaxErrorRequestContext)import_moduleresolve_urlJsonResponse	get_modelrender_to_stringget_template_loadersget_current_site)is_compatible)UnimportantThingc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Z	 ej        d
k     rd Zd Zd Zd Zd Zd Zd Zd Zej        dk     rd Zd Z G d de          ZdS )CompatTestsc                 l   |                      t          dd                     |                     t          dd                     |                     t          dd                     |                      t          ddd                     |                     t          ddd                     d S )Nr   )      )r      EyjafjallajoekullGenericForeignKeymodels)module)
assertTruer   assertFalseselfs    T/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/compat/tests/test_compat.pytest_is_compatiblezCompatTests.test_is_compatible   s    k6::;;;{F;;<<<':FCCDDD&96(SSSTTT':F8TTTUUUUU    c                     t          d          }|j        D ]G}t          |t          j        d d                   r#|                     t          ||                     Hd S )Ncompat   r   __all__r   djangoVERSIONr"   hasattr)r%   r*   	attributes      r&   test_compatzCompatTests.test_compat#   sd    x(( 	< 	<IYrr(:;; <	 : :;;;	< 	<r(   c                     t          d          }|j        D ]H}t          |t          j        d d         d          r#|                     t          ||                     Id S )Nzcompat.modelsr+   r    r,   )r%   compat_modelsr1   s      r&   test_compat_modelszCompatTests.test_compat_models)   sl    %o66&. 	C 	CIYrr(:HEE Cy A ABBB	C 	Cr(   c                     ddl m} ddlm} |                      |dd|                    d          d|                    d          	          d
           dS )z
        Test: format_html
        url: https://github.com/django/django/blob/stable/1.8.x/tests/utils_tests/test_html.py#L44-L53

        r   )html)format_htmlz{0} {1} {third} {fourth}z< Dangerous >z<b>safe</b>z< dangerous againz<i>safe again</i>)thirdfourthzF&lt; Dangerous &gt; <b>safe</b> &lt; dangerous again <i>safe again</i>N)django.utilsr7   r*   r8   assertEqual	mark_safe)r%   r7   r8   s      r&   test_format_htmlzCompatTests.test_format_html/   s     	&%%%%%&&&&&&K2,!^^M::#6$(NN3F$G$G	   U	
 	
 	
 	
 	
r(   c                 L    |                      dt          d                     dS )zg
        Tests that passing a URL path to ``resolve_url`` will result in the
        same url.
        z/something/Nr<   r   r$   s    r&   test_resolve_url__url_pathz&CompatTests.test_resolve_url__url_pathD   s(    
 	M(B(BCCCCCr(   c                    |                      dt          d                     |                      dt          d                     |                      dt          d                     |                      dt          d                     dS )zp
        Tests that passing a relative URL path to ``resolve_url`` will result
        in the same url.
        z../z../relative/z./z./relative/Nr@   r$   s    r&   test_resolve_url__relative_pathz+CompatTests.test_resolve_url__relative_pathK   s    
 	E 2 2333^)D)DEEE{400111M(B(BCCCCCr(   c                 P    d}|                      |t          |                     dS )zg
        Tests that passing a full URL to ``resolve_url`` will result in the
        same url.
        zhttp://example.com/Nr@   )r%   urls     r&   test_resolve_url__full_urlz&CompatTests.test_resolve_url__full_urlU   s-    
 $k#../////r(   c                     t          d          }|                     |                                t          |                     dS )z
        Tests that passing a model to ``resolve_url`` will result in
        ``get_absolute_url`` being called on that model instance.
        r   )
importanceN)r   r<   get_absolute_urlr   r%   ms     r&   test_resolve_url__modelz#CompatTests.test_resolve_url__model]   sB    
 ***++--{1~~>>>>>r(   c                 Z    t          t                    }|                     d|           dS )z
        Tests that passing a view name to ``resolve_url`` will result in the
        URL path mapping to that view name.
        /accounts/logout/N)r   r	   r<   r%   resolved_urls     r&   test_resolve_url__view_functionz+CompatTests.test_resolve_url__view_functione   s.    
 #6**,l;;;;;r(   r   
   c                 P    t          d          }|                     d|           dS )z
            Tests that passing a view function to ``resolve_url`` will result in
            the URL path mapping to that view.
            z django.contrib.auth.views.logoutrN   N)r   r<   rO   s     r&   !test_resolve_url__valid_view_namez-CompatTests.test_resolve_url__valid_view_name{   s/    
 ''IJJL0,?????r(   c                 L    |                      t          d          d           dS )zY
        Tests that passing a domain to ``resolve_url`` returns the same domain.
        zexample.comNr@   r$   s    r&   test_resolve_url__domainz$CompatTests.test_resolve_url__domain   s(     	]33]CCCCCr(   c                     |                      t                    5  t          d            ddd           dS # 1 swxY w Y   dS )z|
        Tests that passing a non-view callable into ``resolve_url`` raises a
        ``NoReverseMatch`` exception.
        c                      dS )Nasdf r[   r(   r&   <lambda>zYCompatTests.test_resolve_url__non_view_callable_raises_no_reverse_match.<locals>.<lambda>   s     r(   N)assertRaisesr
   r   r$   s    r&   ;test_resolve_url__non_view_callable_raises_no_reverse_matchzGCompatTests.test_resolve_url__non_view_callable_raises_no_reverse_match   s    
 ~.. 	( 	('''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(   9= =c                     t           j        d             } |             |                     t          j                            d          j        d           dS )z+
        Test of commit_on_success
        c                  P    t          dd          } |                                  d S )Nr   pkrH   r   saverK   s    r&   	db_actionz5CompatTests.test_commit_on_success.<locals>.db_action   s%     A!444AFFHHHHHr(   r   rc   N)r*   commit_on_successr<   r   objectsgetrH   )r%   rg   s     r&   test_commit_on_successz"CompatTests.test_commit_on_success   sb     
	!	 	 
"	!	 		)1555;;FJJJJJr(   c                     t          dd          }|                                 t          j                     |                     t           j                            d          j        d           dS )z 
        Test of commit
        r+   rb   rh   N)r   re   r*   commitr<   rj   rk   rH   rJ   s     r&   test_commitzCompatTests.test_commit   sb     a000	)1555;;FJJJJJr(   c                    t           j        d             }t           j        d             }t          j        dk     rdS  |            } ||           |                     t
          j                            d          j        d           dS )z=
        Test of rollback with transaction savepoint
        c                  P    t          dd          } |                                  | S )Nr   rb   rd   rf   s    r&   rg   z6CompatTests.test_rollback__with_sid.<locals>.db_action   &     A!444AFFHHHHr(   c                     d| _         t          j        j                                        }|                                  t          j        d |           d S N   )rH   r.   dbtransaction	savepointre   r*   rollback)rK   sids     r&   db_action_with_rollbackzDCompatTests.test_rollback__with_sid.<locals>.db_action_with_rollback   sD    AL)'1133CFFHHHOD#&&&&&r(   r   ru   Nr   rh   	r*   ri   r.   r/   r<   r   rj   rk   rH   r%   rg   r{   rK   s       r&   test_rollback__with_sidz#CompatTests.test_rollback__with_sid   s     
	!	 	 
"	!	
 
	!	' 	' 
"	!	' >F""FIKK""")1555;;FJJJJJr(   c                    t           j        d             }t           j        d             }t          j        dk     rdS  |            } ||           |                     t
          j                            d          j        d           dS )z@
        Test of rollback without transaction savepoint
        c                  P    t          dd          } |                                  | S )Nr   rb   rd   rf   s    r&   rg   z9CompatTests.test_rollback__without_sid.<locals>.db_action   rr   r(   c                 b    d| _         |                                  t          j                     d S rt   )rH   re   r*   ry   rf   s    r&   r{   zGCompatTests.test_rollback__without_sid.<locals>.db_action_with_rollback   s*    ALFFHHHOr(   )r      Nr   rh   r}   r~   s       r&   test_rollback__without_sidz&CompatTests.test_rollback__without_sid   s     
	!	 	 
"	!	
 
	!	 	 
"	!	
 >F""FIKK""")1555;;FJJJJJr(   c                     t          d          }|                    t          i                     }|                     |d           d S )NzB{% load url from compat %}<a href="{% url "logout" %}">Log out</a>z'<a href="/accounts/logout/">Log out</a>)r   renderr   r<   r%   templater7   s      r&   test_url_template_tagz!CompatTests.test_url_template_tag   sW    7
 
 wr{{++5	
 	
 	
 	
 	
r(   r   	   c                    ddl m} t          d          }|                     d|                    t          i                                |                     t                    5  t          d          }|                    t          i                      d d d            n# 1 swxY w Y    |d           t          d          }|                     d|                    t          i                                d S )Nr   )add_to_builtinsz${% load test_app_tags %}{% my_tag %}zReturn value of my_tagz{% my_tag %}z0compat.tests.test_app.templatetags.test_app_tags)r*   r   r   assertInr   r   r]   r   )r%   r   r   s      r&   test_add_to_builtinsz CompatTests.test_add_to_builtins   s?   ......   H MM2HOOGBKK4P4PQQQ ""#677 - -#"  ,,,	- - - - - - - - - - - - - - - ONOOO H MM2HOOGBKK4P4PQQQQQs   &2B$$B(+B(c                 <   t                      }|                     t          |          d           |                     |d         t          j        j        j        j                   |                     |d         t          j        j        j	        j                   d S )Nr+   r   r   )
r   r<   lenassertIsInstancer.   r   loaders
filesystemLoaderapp_directories)r%   template_loaderss     r&   test_get_template_loadersz%CompatTests.test_get_template_loaders   s    /11-..222.q16?3J3U3\]]].q16?3J3Z3abbbbbr(   c                   $    e Zd ZdZd Zd Zd ZdS )CompatTests.GetModelsTestz
        Sources:
        * https://github.com/django/django/blob/stable/1.9.x/tests/app_loading/tests.py
        * https://github.com/django/django/blob/stable/1.9.x/tests/apps/tests.py

        c                      ddl m} || _        d S )Nr   )r    )&compat.tests.utils_tests.not_installedr    not_installed_module)r%   r    s     r&   setUpzCompatTests.GetModelsTest.setUp  s"    EEEEEE(.D%%%r(   c                     |                      t                    5  t          dd           d d d            d S # 1 swxY w Y   d S )Nnot_installedNotInstalledModel)r]   LookupErrorr   r$   s    r&   ,test_get_model_only_returns_installed_modelszFCompatTests.GetModelsTest.test_get_model_only_returns_installed_models
  s    "";// @ @/+>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @r_   c                    |                      t          dd          t                     |                     t                    5  t          dd           d d d            n# 1 swxY w Y   |                      t          dd          t                     |                     t                    5  t          dd           d d d            n# 1 swxY w Y   |                      t          d          t                     |                     t                    5  t          d           d d d            n# 1 swxY w Y   |                     t
                    5  t          d           d d d            d S # 1 swxY w Y   d S )	Nadminr   LogExitloGentrYAdminzadmin.LogEntryzadmin.LogExitadmin_LogEntry)r<   r   r   r]   r   
ValueErrorr$   s    r&   test_get_modelz(CompatTests.GetModelsTest.test_get_model  sU   Yw
;;XFFF"";// . .'9---. . . . . . . . . . . . . . . Yw
;;XFFF"";// / /':.../ / / / / / / / / / / / / / / Y'788(CCC"";// + +/***+ + + + + + + + + + + + + + +"":.. , ,*+++, , , , , , , , , , , , , , , , , ,sH   A!!A%(A%/CCCD55D9<D9E77E;>E;N)__name__
__module____qualname____doc__r   r   r   r[   r(   r&   GetModelsTestr      sN        	 		/ 	/ 	/	@ 	@ 	@	, 	, 	, 	, 	,r(   r   N)r   r   r   r'   r2   r5   r>   rA   rC   rF   rL   rQ   r.   r/   rU   rW   r^   rl   ro   r   r   r   r   r   r   r   r[   r(   r&   r   r      s       V V V< < <C C C
 
 
*D D DD D D0 0 0? ? ?< < < ~	@ 	@ 	@D D D( ( (
K 
K 
KK K KK K K0K K K.	
 	
 	
 ~	R 	R 	R0c c c, , , , , , , , , ,r(   r   c                   V    e Zd ZdZd Zd Zd Zd Zd Zd Z	e
j        dk    rd	 Zd
S d
S )VerbatimTagTestCasezq
    Source: https://github.com/django/django/blob/master/tests/template_tests/syntax_tests/test_verbatim.py
    c                     d| _         d S )Nz{% load verbatim from compat %})
import_tagr$   s    r&   r   zVerbatimTagTestCase.setUp%  s    ;r(   c                     t          | j        dz             }|                    t          i                     }|                     |d           d S )Nz){% verbatim %}{{ bare }}{% endverbatim %}z
{{ bare }}r   r   r   r   r<   r   s      r&   test_verbatim_tag01z'VerbatimTagTestCase.test_verbatim_tag01(  s]    DO78 
 
 wr{{++	
 	
 	
 	
 	
r(   c                     t          | j        dz             }|                    t          i                     }|                     |d           d S )Nz*{% verbatim %}{% endif %}{% endverbatim %}z{% endif %}r   r   s      r&   test_verbatim_tag02z'VerbatimTagTestCase.test_verbatim_tag021  s]    DO89 
 
 wr{{++	
 	
 	
 	
 	
r(   c                     t          | j        dz             }|                    t          i                     }|                     |d           d S )Nz:{% verbatim %}It's the {% verbatim %} tag{% endverbatim %}zIt's the {% verbatim %} tagr   r   s      r&   test_verbatim_tag03z'VerbatimTagTestCase.test_verbatim_tag03:  s^    DOIJ 
 
 wr{{+++	
 	
 	
 	
 	
r(   c                     |                      t                    5  t          | j        dz              d d d            d S # 1 swxY w Y   d S )Nz>{% verbatim %}{% verbatim %}{% endverbatim %}{% endverbatim %})r]   r   r   r   r$   s    r&   test_verbatim_tag04z'VerbatimTagTestCase.test_verbatim_tag04C  s    233 	 	T_PQ   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A  AAc                     t          | j        dz             }|                    t          i                     }|                     |d           d S )Nz>{% verbatim %}{% endverbatim %}{% verbatim %}{% endverbatim %} r   r   s      r&   test_verbatim_tag05z'VerbatimTagTestCase.test_verbatim_tag05I  sS    DOLM 
 
 wr{{++r"""""r(   r|   c                     t          | j        dz             }|                    t          i                     }|                     |d           d S )NzO{% verbatim special %}Don't {% endverbatim %} just yet{% endverbatim special %}z Don't {% endverbatim %} just yetr   r   s      r&   test_verbatim_tag06z'VerbatimTagTestCase.test_verbatim_tag06Q  sa    _!_  H ??72;;//DT4    r(   N)r   r   r   r   r   r   r   r   r   r   r.   r/   r   r[   r(   r&   r   r      s         < < <
 
 

 
 

 
 
  # # # ~	 	 	 	 	  r(   r   c                   X    e Zd ZdZd Zd Zd Zd Zd Zd Z	e
j        dk    rd	 Zd
 ZdS )JsonResponseTestszZ
    Source: https://github.com/django/django/blob/master/tests/httpwrappers/tests.py
    c                     ddi}t          |          }|                     t          j        |j                                                  |           d S )Nkeyu   łóżkor   r<   jsonloadscontentdecode)r%   dataresponses      r&   test_json_response_non_asciiz.JsonResponseTests.test_json_response_non_ascii`  sN    z"%%H$4$;$;$=$=>>EEEEEr(   c                     |                      t                    5  t          g d           d d d            d S # 1 swxY w Y   d S )N)r   r+   r   )r]   	TypeErrorr   r$   s    r&   9test_json_response_raises_type_error_with_default_settingzKJsonResponseTests.test_json_response_raises_type_error_with_default_settinge  s    y)) 	$ 	$###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   :>>c                     t          dd          }|                     t          j        |j                                                  d           d S )NfoobarFsafer   r%   r   s     r&   test_json_response_textz)JsonResponseTests.test_json_response_texti  sI    u555H$4$;$;$=$=>>IIIIIr(   c                     t          ddgd          }|                     t          j        |j                                                  ddg           d S )NfoobarFr   r   r   s     r&   test_json_response_listz)JsonResponseTests.test_json_response_listm  sQ    U;;;H$4$;$;$=$=>>OOOOOr(   c                     t          j                    }t          |d          }|                     t	          j        |j                                                  t          |                     d S )NFr   )	uuiduuid4r   r<   r   r   r   r   str)r%   ur   s      r&   test_json_response_uuidz)JsonResponseTests.test_json_response_uuidq  sZ    JLL...H$4$;$;$=$=>>AGGGGGr(   c                      G d dt                     }t          i |          }|                     t          j        |j                                                  ddi           d S )Nc                       e Zd Zd ZdS )TJsonResponseTests.test_json_response_custom_encoder.<locals>.CustomDjangoJSONEncoderc                 .    t          j        ddi          S )Nr   r   )r   dumps)r%   os     r&   encodez[JsonResponseTests.test_json_response_custom_encoder.<locals>.CustomDjangoJSONEncoder.encodex  s    z5%.111r(   N)r   r   r   r   r[   r(   r&   CustomDjangoJSONEncoderr   w  s#        2 2 2 2 2r(   r   )encoderr   r   )r   r   r<   r   r   r   r   )r%   r   r   s      r&   !test_json_response_custom_encoderz3JsonResponseTests.test_json_response_custom_encoderv  s{    	2 	2 	2 	2 	2&7 	2 	2 	2  ,CDDDH$4$;$;$=$=>>OOOOOr(   r   c                     t          ddiddi          }|                     |j                                        d           d S )Nr   r   indentr+   )json_dumps_paramsz{
  "foo": "bar"
})r   r<   r   r   r   s     r&   2test_json_response_passing_arguments_to_json_dumpszDJsonResponseTests.test_json_response_passing_arguments_to_json_dumps  sI    #UENxQRmTTTHX-44668NOOOOOr(   c                 r    t                      }|                    d          }t          |          }|sJ dS )z*
        Test of get_current_site
        z/hello/N)r   rk   r   )r%   rfrequestsites       r&   test_get_current_sitez'JsonResponseTests.test_get_current_site  s:     &&##((tr(   N)r   r   r   r   r   r   r   r   r   r   r.   r/   r   r   r[   r(   r&   r   r   \  s         F F F
$ $ $J J JP P PH H H
P P P ~	P 	P 	P    r(   r   c                   R    e Zd ZdZd Zd Zej        dk     rd Zd Z	d Z
d Zd	 Zd
S )RenderToStringTestztest_context.htmlc                 V    |                      t          | j                  d           d S )Nzobj:r<   r   template_namer$   s    r&   
test_basiczRenderToStringTest.test_basic  s*    )$*<==vFFFFFr(   c                 \    |                      t          | j        ddi          d           d S )Nobjtestobj:testr   r$   s    r&   test_positional_argz&RenderToStringTest.test_positional_arg  s1    )$*<ufoNNPZ[[[[[r(   rR   c                 ^    |                      t          | j        ddi          d           d S )Nr   r   )
dictionaryr   r   r$   s    r&   test_dictionary_kwargz(RenderToStringTest.test_dictionary_kwarg  s5    -d.@eU[_]]]_ijjjjjr(   c           	      x    |                      t          | j        t          ddi                    d           d S Nr   r   )context_instancer   r<   r   r   r   r$   s    r&   test_context_instance_kwargz.RenderToStringTest.test_context_instance_kwarg  s@    -d.@SZ\aci[jSkSklllnxyyyyyr(   c           
      z    |                      t          | j        t          d ddi                    d           d S r  )r<   r   r   r   r$   s    r&   test_request_contextz'RenderToStringTest.test_request_context  sV    -d.@SabfinpvhwSxSxyyy  |F  G  G  G  G  Gr(   c           
      ~    |                      t          | j        ddit          ddi                    d           d S )Nr   12)r  r  zobj:1r  r$   s    r&   *test_dictionary_and_context_instance_kwargz=RenderToStringTest.test_dictionary_and_context_instance_kwarg  so    -d.@eUX\lsuz|  uA  mB  mB  C  C  C  EL  M  M  M  M  Mr(   c                 ^    |                      t          | j        ddi          d           d S )Nr   r   )contextr   r   r$   s    r&   test_context_kwargz%RenderToStringTest.test_context_kwarg  s4    )$*<ufoVVVXbcccccr(   N)r   r   r   r   r   r   r.   r/   r  r  r	  r  r  r[   r(   r&   r   r     s        'MG G G\ \ \ ~	k 	k 	k	z 	z 	z	G 	G 	G	M 	M 	Md d d d dr(   r   ))
__future__r   r   r   r.   django.contrib.admin.modelsr   django.core.serializers.jsonr   django.testr   r   django.test.clientr   django.contrib.auth.viewsr	   django.urlsr
   ImportErrordjango.core.urlresolversdjango.templater   r   r   r   r*   r   r   r   r   r   r   r   compat.docs.compatibilityr   compat.tests.test_app.modelsr   r   r   r   r   r[   r(   r&   <module>r     sQ   ' ' ' ' ' '    0 0 0 0 0 0 : : : : : : 0 0 0 0 0 0 0 0 - - - - - - , , , , , ,8******* 8 8 8777777778 R R R R R R R R R R R R < < < < < < < < < < < < < < < < < < 3 3 3 3 3 3 9 9 9 9 9 9C, C, C, C, C,( C, C, C,L9 9 9 9 9( 9 9 9x. . . . . . . .bd d d d d d d d d ds   ; A	A	