a
    Dg>0                     @   s   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 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 G dd deee	ZG dd deee	ZG dd deee	ZG dd deee	ZG dd dee	ZdS )    )
Permission)ContentType)get_messages)ERROR)TestCaseoverride_settings)reverse)hooks)AdminURLFinder)LocalePage)WagtailTestUtils)AdminTemplateTestUtilsc                   @   s(   e Zd Zdd Zi fddZdd ZdS )TestLocaleIndexViewc                 C   s   |    d S N)loginself r   T/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/locales/tests.pysetUp   s    zTestLocaleIndexView.setUpc                 C   s   | j td|S )Nwagtaillocales:indexclientgetr   r   paramsr   r   r   r      s    zTestLocaleIndexView.getc                 C   s<   |   }| |jd | |d | dddg|j d S )N   zwagtailadmin/generic/index.html Localesurllabel)r   assertEqualstatus_codeassertTemplateUsedassertBreadcrumbsItemsRenderedcontentr   responser   r   r   test_simple   s    
zTestLocaleIndexView.test_simpleN)__name__
__module____qualname__r   r   r*   r   r   r   r   r      s   r   c                   @   sT   e Zd Zdd Zi fddZi fddZdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestLocaleCreateViewc                 C   s   |    tj | _d S r   r   r   objectsr   englishr   r   r   r   r   !   s    zTestLocaleCreateView.setUpc                 C   s   | j td|S Nzwagtaillocales:addr   r   r   r   r   r   %   s    zTestLocaleCreateView.getc                 C   s   | j td|S r2   )r   postr   )r   	post_datar   r   r   r3   (   s    zTestLocaleCreateView.postc                 C   s&   |  | jjd |  | j d d S )NenEnglish)r#   r1   language_codeZget_display_namer   r   r   r   test_default_language+   s    z*TestLocaleCreateView.test_default_languagec                 C   s`   |   }| |jd | |d | ddddddg|j | |jd jd	 jd
g d S )Nr   zwagtaillocales/create.htmlr   /admin/locales/)r"   r!   zNew: Localer   formr7   frZFrench)	r   r#   r$   r%   r&   r'   contextfieldschoicesr(   r   r   r   r*   0   s    z TestLocaleCreateView.test_simplec                 C   s:   |  ddi}| |td | tjjdd  d S )Nr7   r<   r   r7   )r3   assertRedirectsr   
assertTruer   r0   filterexistsr(   r   r   r   test_create@   s    z TestLocaleCreateView.test_createc                 C   s6   |  ddi}| |jd | |jd ddg d S )Nr7   r5   r   r:   >Select a valid choice. en is not one of the available choices.r3   r#   r$   assertFormErrorr=   r(   r   r   r   test_duplicate_not_allowedM   s    z/TestLocaleCreateView.test_duplicate_not_allowedc                 C   s6   |  ddi}| |jd | |jd ddg d S Nr7   jar   r:   z>Select a valid choice. ja is not one of the available choices.rG   r(   r   r   r   &test_language_code_must_be_in_settings\   s    z;TestLocaleCreateView.test_language_code_must_be_in_settingsN)r+   r,   r-   r   r   r3   r8   r*   rE   rI   rL   r   r   r   r   r.       s   r.   c                   @   sP   e Zd Zdd ZdddZdddZdd	 Zd
d Zdd Zdd Z	dd Z
dS )TestLocaleEditViewc                 C   s   |   | _tj | _d S r   )r   userr   r0   r   r1   r   r   r   r   r   m   s    
zTestLocaleEditView.setUpNc                 C   s(   |p| j }| jtd|jgd|p$i S )Nwagtaillocales:editargsr1   r   r   r   idr   r   localer   r   r   r   q   s    
zTestLocaleEditView.getc                 C   s:   |pi }|p| j }|d|j | jtd|jgd|S )Nr7   rO   rP   )r1   
setdefaultr7   r   r3   r   rS   r   r4   rU   r   r   r   r3   w   s    
zTestLocaleEditView.postc                 C   s   |   }| |jd | |d | ddddt| jdg|j | |jd j	d j
d	d
g t| j}d| jj }| || j| d S )Nr   wagtaillocales/edit.htmlr9   r   r    r   r:   r7   r5   r6   r;   z/admin/locales/edit/%d/)r   r#   r$   r%   r&   strr1   r'   r=   r>   r?   r
   rN   rS   Zget_edit_url)r   r)   Z
url_finderZexpected_urlr   r   r   r*      s$    
zTestLocaleEditView.test_simplec                 C   sV   t jjdd}| j|d}| |jd | |d | |jd jd j	dd	g d S )
NZfoor@   rU   r   rX   r:   r7   )NzSelect a new languager;   )
r   r0   creater   r#   r$   r%   r=   r>   r?   )r   invalidr)   r   r   r   test_invalid_language   s    z(TestLocaleEditView.test_invalid_languagec                 C   s<   |  ddi}| |td | j  | | jjd d S )Nr7   r<   r   )r3   rA   r   r1   Zrefresh_from_dbr#   r7   r(   r   r   r   	test_edit   s    
zTestLocaleEditView.test_editc                 C   sH   t jjdd}| jddi|d}| |jd | |jd ddg d S )	Nr<   r@   r7   r5   r[   r   r:   rF   )r   r0   r\   r3   r#   r$   rH   r=   r   frenchr)   r   r   r   test_edit_duplicate_not_allowed   s    z2TestLocaleEditView.test_edit_duplicate_not_allowedc                 C   s6   |  ddi}| |jd | |jd ddg d S rJ   rG   r(   r   r   r   +test_edit_language_code_must_be_in_settings   s    z>TestLocaleEditView.test_edit_language_code_must_be_in_settings)NN)NN)r+   r,   r-   r   r   r3   r*   r^   r_   rb   rc   r   r   r   r   rM   l   s   

rM   c                   @   s   e Zd Zdd Zi dfddZi dfddZdd	 Zd
d Zdd Ze	dg dddd Z
e	dg dddd Zdd ZdS )TestLocaleDeleteViewc                 C   s   |    tj | _d S r   r/   r   r   r   r   r      s    zTestLocaleDeleteView.setUpNc                 C   s$   |p| j }| jtd|jgd|S Nzwagtaillocales:deleterP   rR   rT   r   r   r   r      s    
zTestLocaleDeleteView.getc                 C   s$   |p| j }| jtd|jgd|S re   )r1   r   r3   r   rS   rW   r   r   r   r3      s    
zTestLocaleDeleteView.postc                 C   s2   |   }| |jd | |d | |j d S )Nr   z(wagtailadmin/generic/confirm_delete.html)r   r#   r$   r%   ZassertBreadcrumbsNotRenderedr'   r(   r   r   r   r*      s    z TestLocaleDeleteView.test_simplec                 C   sF   t jjdd}| j|d}| |td | t jjdd  d S )Nr<   r@   r[   r   )	r   r0   r\   r3   rA   r   assertFalserC   rD   r`   r   r   r   test_delete_locale   s    z'TestLocaleDeleteView.test_delete_localec                 C   sr   t jjdd |  }| |jd tt|j}| |d j	t
 | |d jd | t jjdd  d S )Nr<   r@   r   r   zYThis locale cannot be deleted because there are pages and/or other objects using it.




r5   )r   r0   r\   r3   r#   r$   listr   wsgi_requestlevelr   messagerB   rC   rD   r   r)   messagesr   r   r   %test_cannot_delete_locales_with_pages   s    z:TestLocaleDeleteView.test_cannot_delete_locales_with_pageszde-at)rY   r;   )deZGerman)plZPolish)rK   Japanese)ZLANGUAGE_CODEZWAGTAIL_CONTENT_LANGUAGESc                 C   s   dD ]}t jj|d q| t jjd tjjdd	  | 
 }| |td | t jjdd  | t jjd d S )N)r<   ro   rp   rK   r@   r5      Z	depth__gtr   ro   r   r0   r\   r#   r   Zget_first_root_noderU   r7   rC   deleter3   rA   r   rf   rD   )r   langr)   r   r   r   test_can_delete_default_locale  s    z3TestLocaleDeleteView.test_can_delete_default_localec                 C   s|   t jjdd | t jjd tjjdd	  | 
 }| |td | t jjdd  | t jjd d S )Nr<   r@   r5   rr   rs   r   rt   r(   r   r   r   ?test_can_delete_default_locale_when_language_code_has_no_locale2  s    zTTestLocaleDeleteView.test_can_delete_default_locale_when_language_code_has_no_localec                 C   sv   t jjdd  |  }| |jd tt|j	}| |d j
t | |d jd | tjjdd  d S )Nrr   rs   r   r   zFThis locale cannot be deleted because there are no other locales.




r5   r@   )r   r0   rC   ru   r3   r#   r$   rh   r   ri   rj   r   rk   rB   r   rD   rl   r   r   r   (test_cannot_delete_last_remaining_localeM  s    z=TestLocaleDeleteView.test_cannot_delete_last_remaining_locale)r+   r,   r-   r   r   r3   r*   rg   rn   r   rw   rx   ry   r   r   r   r   rd      s"   



rd   c                   @   s   e Zd Zdd ZdS )TestAdminPermissionsc                 C   s^   t jt}tj }tdD ]}|| O }q |j|d}| 	t
|jdddh d d S )NZregister_permissions)content_typecodenameT)Zflat>   Z
add_localeZdelete_localeZchange_locale)r   r0   Zget_for_modelr   r   noner	   Z	get_hooksrC   r#   setZvalues_list)r   Z	locale_ctqsfnZregistered_permissionsr   r   r   test_registered_permissionsa  s    
z0TestAdminPermissions.test_registered_permissionsN)r+   r,   r-   r   r   r   r   r   rz   `  s   rz   N)Zdjango.contrib.auth.modelsr   Z"django.contrib.contenttypes.modelsr   Zdjango.contrib.messagesr   Z!django.contrib.messages.constantsr   Zdjango.testr   r   Zdjango.urlsr   Zwagtailr	   Zwagtail.admin.admin_url_finderr
   Zwagtail.modelsr   r   Zwagtail.test.utilsr   Z!wagtail.test.utils.template_testsr   r   r.   rM   rd   rz   r   r   r   r   <module>   s    Lq 