
    BhK              
          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 d dlmZmZ d d	lmZ  e	d
dd
dddddddgddddd       G d de             Z e	d
ddd
dddddddgid       G d de             Z e	ddddddddddgddddd       G d d e             Z e	d!dd!d"ddddddgddddd       G d# d$e             Z e	d
g d%d&d'ddddddgd(d&dgidd       G d) d*e             Z e	d
dd
dddddddgd
dgdddd+dd       G d, d-e             Z e	d
dd
dddddddgd
dgdddd+dd       G d. d/e             Zy0)1    )import_module)patch)settings)Context)override_settings)api)CMSTestCase)get_language_from_requesti18n)detailsen)frFrenchr   EnglishdeGermanesSpanishr   Tcodenamepublicr   r   F)r   hide_untranslated)   defaultr   )LANGUAGE_CODE	LANGUAGESCMS_LANGUAGESSITE_IDc                   $    e Zd Zd Zd Zd Zd Zy)TestLanguagesc                     | j                  t        j                  d      d       | j                  t        j                         d       y )Nr   assertEqualr   get_language_codeget_current_languageselfs    C/home/dcms/DCMS/lib/python3.12/site-packages/cms/tests/test_i18n.pytest_language_codez TestLanguages.test_language_code&   s6    //5t<224d;    c                    t        j                         }| j                  dt        |             |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d       |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d	       y 
N   r   r   r   r   Tr   r   Fr   get_languagesr(   lenr)   r,   resultlangs      r-   test_get_languages_default_sitez-TestLanguages.test_get_languages_default_site*       ##%CK(ayft,//V=tDh.ayft,//V=tDh/r/   c                    t        j                  d      }| j                  dt        |             |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d       |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d	       y 
Nr   r2   r   r   r   r   Tr   Fr3   r6   s      r-   test_get_languages_defined_sitez-TestLanguages.test_get_languages_defined_site6       ##A&CK(ayft,//V=tDh.ayft,//V=tDh/r/   c                    t        j                  d      }| j                  dt        |             | j                  |d   d   d       | j                  t        j                  |d   d         d       | j                  |d   d   d       | j                  t        j                  |d   d         d       | j                  |d   d   d	       | j                  t        j                  |d   d         d	       | j                  |d
   d   d       | j                  t        j                  |d
   d         d       |D ],  }| j                  |d   d       | j                  |d   d       . y )NB      r   r   r   r   r   r2   r      r   r   Tr   Fr3   r6   s      r-   !test_get_languages_undefined_sitez/TestLanguages.test_get_languages_undefined_siteB   sS   ##B'CK(6*D1//q	&0ABDI6*D1//q	&0ABDI6*D1//q	&0ABDI6*D1//q	&0ABDI 	?DT(^T2T"56>	?r/   N__name__
__module____qualname__r.   r9   r=   rC    r/   r-   r%   r%      s    0<
0
0?r/   r%   c                       e Zd Zd Zd Zd Zy)TestLanguagesNoDefaultc                    t        j                         }| j                  dt        |             |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d       |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d	       y r1   r3   r6   s      r-   r9   z6TestLanguagesNoDefault.test_get_languages_default_sitef   r:   r/   c                    t        j                  d      }| j                  dt        |             |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d       |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d	       y r<   r3   r6   s      r-   r=   z6TestLanguagesNoDefault.test_get_languages_defined_siter   r>   r/   c                    t        j                  d      }| j                  dt        |             | j                  |d   d   d       | j                  t        j                  |d   d         d       | j                  |d   d   d       | j                  t        j                  |d   d         d       | j                  |d   d   d	       | j                  t        j                  |d   d         d	       | j                  |d
   d   d       | j                  t        j                  |d
   d         d       |D ],  }| j                  |d   d       | j                  |d   d       . y )Nr@   rA   r   r   r   r   r   r2   r   rB   r   r   Tr   r3   r6   s      r-   rC   z8TestLanguagesNoDefault.test_get_languages_undefined_site~   sS   ##B'CK(6*D1//q	&0ABDI6*D1//q	&0ABDI6*D1//q	&0ABDI6*D1//q	&0ABDI 	>DT(^T2T"56=	>r/   N)rE   rF   rG   r9   r=   rC   rH   r/   r-   rJ   rJ   R   s    (
0
0>r/   rJ   en-us))fr-caFrench (Canada))rN   English (US))en-gbEnglish (UK)r   r   rQ   rO   rP   c                   $    e Zd Zd Zd Zd Zd Zy)TestLanguageCodesEnUSc                     | j                  t        j                  d      d       | j                  t        j                         d       y )NrN   r'   r+   s    r-   r.   z(TestLanguageCodesEnUS.test_language_code   6    //8'B224g>r/   c                    t        j                         }| j                  dt        |             |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d       |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d	       y )
Nr2   r   r   rN   r   Tr   rO   Fr3   r6   s      r-   r9   z5TestLanguageCodesEnUS.test_get_languages_default_site       ##%CK(ayfw///V=wGh.ayfw///V=wGh/r/   c                    t        j                  d      }| j                  dt        |             |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d       |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d	       y )
Nr   r2   r   r   rN   r   TrO   Fr3   r6   s      r-   r=   z5TestLanguageCodesEnUS.test_get_languages_defined_site       ##A&CK(ayfw///V=wGh.ayfw///V=wGh/r/   c                 d   t        j                  d      }| j                  dt        |             | j                  |d   d   d       | j                  t        j                  |d   d         d       | j                  |d   d   d       | j                  t        j                  |d   d         d       | j                  |d   d   d	       | j                  t        j                  |d   d         d	       | j                  |d
   d   d       | j                  t        j                  |d
   d         d       | j                  |d   d   d       | j                  t        j                  |d   d         d       |D ],  }| j                  |d   d       | j                  |d   d       . y Nr@      r   r   rO   r   rN   r2   rR   rB   r   rA   r   r   Tr   Fr3   r6   s      r-   rC   z7TestLanguageCodesEnUS.test_get_languages_undefined_site      ##B'CK(6*G4//q	&0ABGL6*G4//q	&0ABGL6*G4//q	&0ABGL6*D1//q	&0ABDI6*D1//q	&0ABDI 	?DT(^T2T"56>	?r/   NrD   rH   r/   r-   rU   rU          2?
0
0?r/   rU   rR   rS   c                   $    e Zd Zd Zd Zd Zd Zy)TestLanguageCodesEnGBc                     | j                  t        j                  d      d       | j                  t        j                         d       y )NrR   r'   r+   s    r-   r.   z(TestLanguageCodesEnGB.test_language_code   rW   r/   c                    t        j                         }| j                  dt        |             |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d       |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d	       y )
Nr2   r   r   rR   r   Tr   rO   Fr3   r6   s      r-   r9   z5TestLanguageCodesEnGB.test_get_languages_default_site   rY   r/   c                    t        j                  d      }| j                  dt        |             |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d       |d   }| j                  |d   d       | j                  t        j                  |d         d       | j                  |d   d	       y )
Nr   r2   r   r   rR   r   TrO   Fr3   r6   s      r-   r=   z5TestLanguageCodesEnGB.test_get_languages_defined_site   r[   r/   c                 d   t        j                  d      }| j                  dt        |             | j                  |d   d   d       | j                  t        j                  |d   d         d       | j                  |d   d   d       | j                  t        j                  |d   d         d       | j                  |d   d   d	       | j                  t        j                  |d   d         d	       | j                  |d
   d   d       | j                  t        j                  |d
   d         d       | j                  |d   d   d       | j                  t        j                  |d   d         d       |D ],  }| j                  |d   d       | j                  |d   d       . y r]   r3   r6   s      r-   rC   z7TestLanguageCodesEnGB.test_get_languages_undefined_site
  r_   r/   NrD   rH   r/   r-   rb   rb      r`   r/   rb   )r   r   r   r   r   	fallbacksc                       e Zd Zd Zy)TestLanguagesNotInCMSLanguagesc                 X    t        j                  dd      }| j                  |ddg       y )Nr   r   r   r   )r   get_fallback_languagesr(   )r,   	languagess     r-   test_get_fallback_languagesz:TestLanguagesNotInCMSLanguages.test_get_fallback_languages2  s(    //a8	T4L1r/   N)rE   rF   rG   rm   rH   r/   r-   ri   ri     s    ,2r/   ri   )rg   redirect_on_fallbackr   r   c                       e Zd Zd Z edddddddddgi	      d
        Z edddgdddi	      d        Z edddgdddi	      d        Z edddgddi	      d        Zy)TestLanguageFallbacksc                 t   | j                  ddd       | j                  j                  d      }| j                  |j                  d       | j                  j                  d      }| j                  |j                  d       | j                  j                  d      }| j                  |j                  d       y	)
zS
        No redirect_on_fallback will return 200 with the fallback content
        homenav_playground.htmlr   /.  /en/   /fr/N)create_homepageclientgetr(   status_code)r,   responses     r-   r.   z(TestLanguageFallbacks.test_language_codeQ  s     	V%:DA;;??3'--s3;;??6*--s3;;??6*--s3r/   r   r   r   Tr   r   r   )r"   c                    | j                  ddd      }t        j                  dd|       | j                  j	                  d      }| j                  |j                  d       | j                  |d       t        t        j                        }|j                         }|j                          |j                  | j                  j                  t        j                  <   d| j                  j                  t        j                   <   | j                  j	                  d      }| j                  |j                  d       | j                  |d       | j                  j	                  d       | j                  | j                  j                  t        j                      j"                  d       | j                  j	                  d      }| j                  |j                  d       | j                  |d       y )	Nrr   rs   r   r   rt   ru   rv   rx   )ry   r   create_page_contentrz   r{   r(   r|   assertRedirectsr   r   SESSION_ENGINESessionStoresavesession_keycookiesSESSION_COOKIE_NAMELANGUAGE_COOKIE_NAMEvalue)r,   pager}   enginestores        r-   test_session_languagez+TestLanguageFallbacks.test_session_language^  ss    ##F,A4Hfd3;;??3'--s3Xv.x667##%

<A<M<MH889 >BH99:;;??3'--s3Xv.,,X-J-JKQQSWX;;??3'--s3Xv.r/   r   F)rg   r   rn   c                    | j                  ddd      }| j                  d      }t        j                  di |}| j                  j                  |j                  d            }| j                  |j                  d       | j                  j                  |j                  d            }| j                  |j                  d       y )Nrr   rs   r   languager   rw   rH   )	ry   get_new_page_data_dbfieldsr   create_pagerz   r{   get_absolute_urlr(   r|   )r,   homepage	page_datar   r}   s        r-   test_no_redirect_on_fallbackz2TestLanguageFallbacks.test_no_redirect_on_fallback  s     ''!

 33 4 
	 ++;;??4#8#8$#8#GH--s3 ;;??8#<#<d#<#KL--s3r/   c                 B   | j                  ddd      }|j                  d      j                  d      }t        j                  |ddd       | j                  d	      }t        j                  di |}|j                  d      j                  d      }t        j                  |ddd       t        d
      5 }|j                  d	      }| j                  |d      }t        ||j                  d             |j                  ||j                                t        d| j                  |d      i      }	| j                  ||	      }
| j!                  |
d       ddd       t        d
      5 }|j                  d	      }| j                  |      }t        ||j                  d             |j                  ||j                                t        d|i      }	| j                  ||	      }
| j!                  |
d       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)zB
        Test that the fallback content will be displayed
        rr   rs   r   body)slot
TextPluginzHello, world!)plugin_typer   r   r   zcms.views.render_pagecontentr   )slugrequestNrH   )ry   get_placeholdersr{   r   
add_pluginr   r   r   r   get_requestr   get_pathassert_called_once_withget_content_objr   _render_placeholderr(   )r,   r   homepage_ph_frr   r   
page_ph_frmock_renderpathr   contextrendered_placeholders              r-   $test_no_redirect_on_fallback_contentz:TestLanguageFallbacks.test_no_redirect_on_fallback_content  s3    ''!

 "22#6#" 	$ 		
 33 4 
	 ++**#6#" 	$ 		
 12 	Dk(($(7D&&tT2GG$--"56//$$& y$*:*:4*FGHG#'#;#;J#P 1?C	D 12 	Dk,,d,;D&&t,GG("3"3D"9://((*
 y'23G#'#;#;NG#T 1?C	D 	D	D 	D	D 	Ds   :B"H	/BH	HH)rg   rn   c                    | j                  d      }t        j                  di |}| j                  j	                  |j                  d            }| j                  |j                  d       | j                  j	                  |j                  d            }| j                  ||j                  d             | j                  d      } | j                  di | | j                  j	                  |j                  d            }| j                  |j                  d       | j                  j	                  |j                  d            }| j                  ||j                  d             y )Nr   r   rw   r   rH   )
r   r   r   rz   r{   r   r(   r|   r   ry   )r,   r   r   response_frresponse_enhome_page_datas         r-   test_redirect_on_fallbackz/TestLanguageFallbacks.test_redirect_on_fallback  sF    33 4 
	 ++kkood&;&;T&;&JK00#6kkood&;&;T&;&JK[$*?*?*?*NO 88 9 
 	.~.kkood&;&;T&;&JK00#6kkood&;&;T&;&JK[$*?*?*?*NOr/   N)	rE   rF   rG   r.   r   r   r   r   r   rH   r/   r-   rp   rp   7  s    44 "! !!		
//, "D\(-
44" "D\(-
6D6Dp "D\(,
PPr/   rp   c                       e Zd Zd Zd Zy)TestGetLanguageFromRequestc                 d    | j                  dddi      }| j                  t        |      d       y )Nr   r    )r   	post_datar   r(   r
   r,   r   s     r-   Etest_get_language_from_request_does_not_return_empty_string_from_postz`TestGetLanguageFromRequest.test_get_language_from_request_does_not_return_empty_string_from_post  s9    ""D=
"  	27;TBr/   c                 `    | j                  dd      }| j                  t        |      d       y )Nz/en/?language=r   r   r   r   s     r-   Dtest_get_language_from_request_does_not_return_empty_string_from_getz_TestGetLanguageFromRequest.test_get_language_from_request_does_not_return_empty_string_from_get  s.    ""#3d"C27;TBr/   N)rE   rF   rG   r   r   rH   r/   r-   r   r     s    4CCr/   r   N)	importlibr   unittest.mockr   django.confr   django.template.contextr   django.test.utilsr   cmsr   cms.test_utils.testcasesr	   	cms.utilsr
   r   	cms.viewsr   r%   rJ   rU   rb   ri   rp   r   rH   r/   r-   <module>r      s   #    + /  0 5  "  	
 !&
 ),+?K +?-,+?\ "
 	
 	
	 !$'>[ '>%$'>T " # &	
 !&
 +.-?K -?/.-?` " # &	
 !&
 +.-?K -?/.-?`    $

 %(2[ 2)(2 "  	
 $)!&	
  -0fPK fP10fPR "  	
 $)!&	
  -0
C 
C10
Cr/   