a
    Dg                     @   sl   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 d dlmZ dd ZG d	d
 d
eZdS )    )settings)TestCaseoverride_settings)translation)gettext_lazy)LocalePage)TestPagec                  K   s0   t jjdd}| dd |jtf i | dS )N   )idtitlez	Test page)instance)r   objectsget
setdefaultZ	add_childr	   )kwargsZ	root_page r   ^/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/tests/test_locale_model.pymake_test_page
   s    r   c                   @   s   e Zd Zdd Zdd Zedddd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zed%ed&fd'ed(fgd)d*d+ Zed'dd,d- Zd.S )/TestLocaleModelc                 C   s*   t tj }|D ]}tjj|d qd S )Nlanguage_code)dictr   	LANGUAGESkeysr   r   Zget_or_create)selfZlanguage_codesr   r   r   r   setUp   s    zTestLocaleModel.setUpc                 C   s   t  }| |jd d S Nenr   get_defaultassertEqualr   r   localer   r   r   test_default   s    zTestLocaleModel.test_defaultzfr-ca)LANGUAGE_CODEc                 C   s   t  }| |jd d S Nfrr   r"   r   r   r   &test_default_doesnt_have_to_be_english   s    z6TestLocaleModel.test_default_doesnt_have_to_be_englishc                 C   s   |  t jd d S r   )r!   r   
get_activer   r   r   r   r   test_get_active_default    s    z'TestLocaleModel.test_get_active_defaultc                 C   s@   t d" | t jd W d    n1 s20    Y  d S r&   )r   overrider!   r   r)   r   r*   r   r   r   test_get_active_overridden#   s    z*TestLocaleModel.test_get_active_overriddenc              	   C   sT   dD ]J\}}|  |( t|d}| |j| W d    q1 sD0    Y  qd S )N)r   English)r'   Frenchzh-hansSimplified Chineser   )subTestr   r!   language_namer   r   expected_resultr#   r   r   r   test_language_name'   s    
z"TestLocaleModel.test_language_namec                 C   s>   t dd}| t |j W d    n1 s00    Y  d S Nfoor   )r   assertRaisesKeyErrorr5   r"   r   r   r   ,test_language_name_for_unrecognised_language1   s    
z<TestLocaleModel.test_language_name_for_unrecognised_languagec              	   C   sT   dD ]J\}}|  |( t|d}| |j| W d    q1 sD0    Y  qd S )N)r.   )r'   u	   français)r2   u   简体中文r   )r4   r   r!   language_name_localr6   r   r   r   test_language_name_local6   s    
z(TestLocaleModel.test_language_name_localc                 C   s>   t dd}| t |j W d    n1 s00    Y  d S r9   )r   r;   r<   r>   r"   r   r   r   2test_language_name_local_for_unrecognised_language@   s    
zBTestLocaleModel.test_language_name_local_for_unrecognised_languagec              
   C   s   dD ]}|  | t|d}td  | |j|j W d    n1 sN0    Y  t|( | |j |j  W d    n1 s0    Y  W d    q1 s0    Y  qd S )N)r'   r2   cader   r   )	r4   r   r   r,   r!   language_name_localizedr5   lowerr>   r   r   r#   r   r   r   5test_language_name_localized_reflects_active_languageE   s    
"zETestLocaleModel.test_language_name_localized_reflects_active_languagec                 C   sV   t dd}| |jd td  | |j|j W d    n1 sH0    Y  d S )Nr2   r   r3   )r   r!   rC   r   r,   r>   r"   r   r   r   6test_language_name_localized_for_unconfigured_languageY   s    
zFTestLocaleModel.test_language_name_localized_for_unconfigured_languagec                 C   s>   t dd}| t |j W d    n1 s00    Y  d S r9   )r   r;   r<   rC   r"   r   r   r   6test_language_name_localized_for_unrecognised_language_   s    
zFTestLocaleModel.test_language_name_localized_for_unrecognised_languagec              	   C   sT   dD ]J\}}|  |( t|d}| |j| W d    q1 sD0    Y  qd S )N))r   F)arT)heT)r'   Fr:   Fr   )r4   r   assertIsZis_bidir6   r   r   r   test_is_bidid   s    
zTestLocaleModel.test_is_bidic              	   C   s`   t jdfddfD ]J\}}| |( t|d}| |j| W d    q1 sP0    Y  qd S )NT)r2   FrK   r   )r   r%   r4   r   rL   Z
is_defaultr6   r   r   r   test_is_defaultp   s    
zTestLocaleModel.test_is_defaultc              
   C   s   t jt jdft jddfdt jdfddt jdffD ]\}}}| d| d| R t|( t|d	}| |j| W d    n1 s0    Y  W d    q01 s0    Y  q0d S )
NTr'   Fr2   )r   zen-gbTr:   zlocale=z active=r   )r   r%   r4   r   r,   r   r!   Z	is_active)r   Zlocale_languageZactive_languager7   r#   r   r   r   test_is_activez   s    



zTestLocaleModel.test_is_activec              	   C   sV   dD ]L\}}t |d}| |  | | | W d    q1 sF0    Y  qd S )N)r.   r1   )r:   r:   r   )r   r4   r!   get_display_namer6   r   r   r   test_get_display_name   s    
z%TestLocaleModel.test_get_display_namec              	   C   sV   dD ]L}t |d}| |$ | t||  W d    q1 sF0    Y  qd S )N)r   r2   r:   r   )r   r4   r!   strrP   rE   r   r   r   test_str_reflects_get_display   s    
z-TestLocaleModel.test_str_reflects_get_displayr   r/   r'   r0   )r   c                 C   s   t dd}| | t d S )Nr   r   )r   ZassertIsInstance__str__rR   r"   r   r   r   $test_str_when_languages_uses_gettext   s    
z4TestLocaleModel.test_str_when_languages_uses_gettextc                 C   s^   t jjddjtjjddd | t  jj	d tjjdd
  | t  jj	d dS )z
        On deleting the locale used for the root page (but no 'real' pages), the
        root page should be reassigned to a new locale (the default one, if possible)
        r
   )Z	depth__gtr'   r   )r#   r   N)r   r   filterupdater   r   r!   Zget_first_root_noder#   r   deleter*   r   r   r   /test_change_root_page_locale_on_locale_deletion   s    z?TestLocaleModel.test_change_root_page_locale_on_locale_deletionN)__name__
__module____qualname__r   r$   r   r(   r+   r-   r8   r=   r?   r@   rF   rG   rH   rM   rN   rO   rQ   rS   _rU   rY   r   r   r   r   r      s,   





r   N)Zdjango.confr   Zdjango.testr   r   Zdjango.utilsr   Zdjango.utils.translationr   r]   Zwagtail.modelsr   r   Zwagtail.test.i18n.modelsr	   r   r   r   r   r   r   <module>   s   