o
    h>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   U/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/locales/tests.pysetUp   s   zTestLocaleIndexView.setUpc                 C      | j td|S )Nwagtaillocales:indexclientgetr   r   paramsr   r   r   r         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      |    tj | _d S r   r   r   objectsr   englishr   r   r   r   r   !      zTestLocaleCreateView.setUpc                 C   r   Nzwagtaillocales:addr   r   r   r   r   r   %   r   zTestLocaleCreateView.getc                 C   r   r6   )r   postr   )r   	post_datar   r   r   r7   (   r   zTestLocaleCreateView.postc                 C   s&   |  | jjd |  | j d d S )NenEnglish)r%   r4   language_code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    formr;   fr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 )Nr;   rA   r   r;   )r7   assertRedirectsr   
assertTruer   r3   filterexistsr*   r   r   r   test_create@   s   z TestLocaleCreateView.test_createc                 C   6   |  ddi}| |jd | |jd ddg d S )Nr;   r9   r   r?   >Select a valid choice. en is not one of the available choices.r7   r%   r&   assertFormErrorrC   r*   r   r   r   test_duplicate_not_allowedM      z/TestLocaleCreateView.test_duplicate_not_allowedc                 C   rL   Nr;   jar   r?   z>Select a valid choice. ja is not one of the available choices.rN   r*   r   r   r   &test_language_code_must_be_in_settings\   rQ   z;TestLocaleCreateView.test_language_code_must_be_in_settingsN)r-   r.   r/   r   r   r7   r=   r,   rK   rP   rT   r   r   r   r   r0       s    r0   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   r3   r   r4   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r4   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 )Nr;   rW   rX   )r4   
setdefaultr;   r   r7   r   r[   r   r8   r]   r   r   r   r7   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.htmlr>   r!   r"   r    r?   r;   r9   r:   r@   z/admin/locales/edit/%d/)r   r%   r&   r'   r(   strr4   r)   rC   rD   rE   r
   rV   r[   get_edit_url)r   r+   
url_finder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 )
NfoorF   r]   r   r`   r?   r;   )NzSelect a new languager@   )
r   r3   creater   r%   r&   r'   rC   rD   rE   )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 )Nr;   rA   r   )r7   rG   r   r4   refresh_from_dbr%   r;   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 )	NrA   rF   r;   r9   rg   r   r?   rM   )r   r3   rh   r7   r%   r&   rO   rC   r   frenchr+   r   r   r   test_edit_duplicate_not_allowed   s   z2TestLocaleEditView.test_edit_duplicate_not_allowedc                 C   rL   rR   rN   r*   r   r   r   +test_edit_language_code_must_be_in_settings   rQ   z>TestLocaleEditView.test_edit_language_code_must_be_in_settings)NN)r-   r.   r/   r   r   r7   r,   rj   rl   ro   rp   r   r   r   r   rU   l   s    

rU   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   r1   r   r2   r   r   r   r   r      r5   zTestLocaleDeleteView.setUpNc                 C   $   |p| j }| jtd|jgd|S Nzwagtaillocales:deleterX   rZ   r\   r   r   r   r         
zTestLocaleDeleteView.getc                 C   rr   rs   )r4   r   r7   r   r[   r_   r   r   r   r7      rt   zTestLocaleDeleteView.postc                 C   s2   |   }| |jd | |d | |j d S )Nr   z(wagtailadmin/generic/confirm_delete.html)r   r%   r&   r'   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 )NrA   rF   rg   r   )	r   r3   rh   r7   rG   r   assertFalserI   rJ   rm   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 )NrA   rF   r   r   zYThis locale cannot be deleted because there are pages and/or other objects using it.




r9   )r   r3   rh   r7   r%   r&   listr   wsgi_requestlevelr   messagerH   rI   rJ   r   r+   messagesr   r   r   %test_cannot_delete_locales_with_pages   s   z:TestLocaleDeleteView.test_cannot_delete_locales_with_pageszde-at)ra   r@   )deGerman)plPolish)rS   Japanese)LANGUAGE_CODE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)rA   r   r   rS   rF   r9      	depth__gtr   r   r   r3   rh   r%   r   get_first_root_noder]   r;   rI   deleter7   rG   r   rv   rJ   )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 )NrA   rF   r9   r   r   r   r   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 )Nr   r   r   r   zFThis locale cannot be deleted because there are no other locales.




r9   rF   )r   r3   rI   r   r7   r%   r&   rx   r   ry   rz   r   r{   rH   r   rJ   r|   r   r   r   (test_cannot_delete_last_remaining_localeM  s   z=TestLocaleDeleteView.test_cannot_delete_last_remaining_locale)r-   r.   r/   r   r   r7   r,   rw   r~   r   r   r   r   r   r   r   r   rq      s$    



rq   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 )Nregister_permissions)content_typecodenameT)flat>   
add_localechange_localedelete_locale)r   r3   get_for_modelr   r   noner	   	get_hooksrI   r%   setvalues_list)r   	locale_ctqsfnregistered_permissionsr   r   r   test_registered_permissionsa  s   
z0TestAdminPermissions.test_registered_permissionsN)r-   r.   r/   r   r   r   r   r   r   `  s    r   N)django.contrib.auth.modelsr   "django.contrib.contenttypes.modelsr   django.contrib.messagesr   !django.contrib.messages.constantsr   django.testr   r   django.urlsr   wagtailr	   wagtail.admin.admin_url_finderr
   wagtail.modelsr   r   wagtail.test.utilsr   !wagtail.test.utils.template_testsr   r   r0   rU   rq   r   r   r   r   r   <module>   s"    Lq 