U
    {h7<                     @   s   d dl mZ d dlmZ d dlmZmZ d dlmZ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mZ d d
lmZ G dd deeZdS )    )mock)
Permission)post_delete
pre_delete)HttpRequestHttpResponse)TestCaseoverride_settings)reverse)Page)page_unpublished)
SimplePageStandardChildStandardIndex)WagtailTestUtilsc                   @   s   e Zd Zdd Zdd Zedddd Zed	ded
ddd Zed	ded
ddd Zed	d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"S )#TestPageDeletec                 C   sz   t jjdd| _tdddd| _| jj| jd tdd	d
| _| jj| jd t	ddd
| _
| jj| j
d |  | _d S )N   idzHello world!hello-worldhellotitleslugcontentinstancezHello indexzhello-index)r   r   zHello Kittyzhello-kitty)r   objectsget	root_pager   
child_page	add_childr   child_indexr   grandchild_pageloginuserself r(   r/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/tests/pages/test_delete_page.pysetUp   s      zTestPageDelete.setUpc                 C   sH   | j td| jjfd}| |jd | tj	j
| jjd  d S )Nwagtailadmin_pages:deleteargs   r   )clientr   r
   r    r   assertEqualstatus_code
assertTruer   r   filterexistsr'   responser(   r(   r)   test_page_delete#   s
    zTestPageDelete.test_page_delete
   )Z'WAGTAILADMIN_UNSAFE_PAGE_DELETION_LIMITc                 C   s   t dddd}| jj|d t dddd}| jj|d | jtd| jjfd	}| |jd
 | 	|d | 
t jj| jjd  | jtd| jjfd	 | t jj| jjd  d S )Nchild 1child-1r   r   r   child 2child-2r+   r,   r.   +<input type="text" name="confirm_site_name"r   )r   r    r!   r/   r   r
   r   r0   r1   ZassertNotContainsr2   r   r3   r4   postassertFalser'   child_1child_2r6   r(   r(   r)   test_confirm_delete_scenario_1+   s    z-TestPageDelete.test_confirm_delete_scenario_1   mysite)ZWAGTAIL_SITE_NAMEc                 C   s   t dddd}| jj|d t dddd}| jj|d | jtd| jjfd	}| |jd
 | 	|d | 	|d | 	|d | 
t jj| jjd  d S )Nr9   r:   r   r   r   r;   r<   r+   r,   r.   -This action will delete total <b>3</b> pages.%Please type <b>mysite</b> to confirm.r=   r   )r   r    r!   r/   r   r
   r   r0   r1   assertContainsr2   r   r3   r4   r@   r(   r(   r)   test_confirm_delete_scenario_2C   s    z-TestPageDelete.test_confirm_delete_scenario_2c                 C   s   t dddd}| jj|d t dddd}| jj|d | jjtd| jjfd	d
did}| |jd dd |j	d D }| t
|d | |d | |d | |d | t jj| jjd  d S )Nr9   r:   r   r   r   r;   r<   r+   r,   confirm_site_namerandomdatar.   c                 S   s   g | ]
}|j qS r(   )message).0mr(   r(   r)   
<listcomp>g   s     zATestPageDelete.test_confirm_delete_scenario_3.<locals>.<listcomp>messages   rF   rG   r=   r   )r   r    r!   r/   r>   r
   r   r0   r1   contextlenrH   r2   r   r3   r4   )r'   rA   rB   r6   rR   r(   r(   r)   test_confirm_delete_scenario_3W   s    z-TestPageDelete.test_confirm_delete_scenario_3c                 C   s   t dddd}| jj|d t dddd}| jj|d | jjtd| jjfd	d
did}| |td| jjfd	 | 	t j
j| jjd  | 	t j
j|jd  | 	t j
j|jd  d S )Nr9   r:   r   r   r   r;   r<   r+   r,   rJ   rE   rL   wagtailadmin_explorer   )r   r    r!   r/   r>   r
   r   assertRedirectsr   r?   r   r3   r4   r@   r(   r(   r)   test_confirm_delete_scenario_4o   s     z-TestPageDelete.test_confirm_delete_scenario_4c                 C   s>   | j td| jjfd}| |jd | || j  d S )Nr+   r,   r.   )	r/   r   r
   r    r   r0   r1   rH   Zget_admin_display_titler5   r(   r(   r)   %test_page_delete_specific_admin_title   s
    z4TestPageDelete.test_page_delete_specific_admin_titlec                 C   st   d| j _| j jtjjddd | j   | jt	d| j
jfd}| |jd | tjj| j
jd  d S )	NFZwagtailadminZaccess_admin)Zcontent_type__app_labelcodenamer+   r,   i.  r   )r%   Zis_superuserZuser_permissionsaddr   r   r   saver/   r
   r    r   r0   r1   r2   r   r3   r4   r5   r(   r(   r)    test_page_delete_bad_permissions   s     
z/TestPageDelete.test_page_delete_bad_permissionsc              	   C   s   t  }t| z| jtd| jj	fd}| 
|td| jj	fd | jtt dd | tjj| jjdd d | |jd	 |jd d
 }| |d | jj | |d | j | |d | jj W 5 t| X d S )Nr+   r,   rW   $treebeard found consistency problemsmsgr   Zpath__startswithr   r   rS   r   senderr   )r   	MagicMockr   connect
disconnectr/   r>   r
   r    r   rX   r   r?   anyr   find_problemsr0   r   r3   pathcount
call_countZ
mock_callsZspecific_classassertIsInstance)r'   mock_handlerr6   Z	mock_callr(   r(   r)   test_page_delete_post   s6    
 
  z$TestPageDelete.test_page_delete_postc              	   C   s   d| j _| j   t }t| z|| j	t
d| j jfd}| |t
d| jjfd | jtt dd | tjj| jjdd d	 | |jd	 W 5 t| X d S )
NFr+   r,   rW   r_   r`   r   rb   r   )r    liver]   r   rd   r   re   rf   r/   r>   r
   r   rX   r   r?   rg   r   rh   r0   r   r3   ri   rj   rk   )r'   rm   r6   r(   r(   r)   test_page_delete_notlive_post   s2    

 
  z,TestPageDelete.test_page_delete_notlive_postc              	      s  g g g  fdd}fdd} fdd}t | t| t| z6| jtd| jj	fd}| 
|td	| jj	fd | jtt d
d | tjj| jj	d  | tjj| jj	d  | tjj| jj	d  | tjj| jj	d  | t| jj	f | t| jj	f | t| jj	f | t| jj	f | t| jj	f  | t| jj	f  W 5 t | t| t| X d S )Nc                    s     | |jf d S Nappendpkrc   r   kwargs)unpublish_signals_receivedr(   r)   page_unpublished_handler   s    zFTestPageDelete.test_subpage_deletion.<locals>.page_unpublished_handlerc                    s     | |jf d S rq   rr   ru   )pre_delete_signals_receivedr(   r)   pre_delete_handler   s    z@TestPageDelete.test_subpage_deletion.<locals>.pre_delete_handlerc                    s     | |jf d S rq   rr   ru   )post_delete_signals_receivedr(   r)   post_delete_handler   s    zATestPageDelete.test_subpage_deletion.<locals>.post_delete_handlerr+   r,   rW   r_   r`   r   )r   re   r   r   rf   r/   r>   r
   r"   r   rX   r   r?   rg   r   rh   r   r   r3   r4   r   r#   ZassertIn)r'   rx   rz   r|   r6   r(   )r{   ry   rw   r)   test_subpage_deletion   sp    


 
 
 
 
 
 
 
 

z$TestPageDelete.test_subpage_deletionc              	      s^    fdd}  d|   jtd jjfd}W 5 Q R X  |jd  |jd d S )Nc                    s&     | t  |j jj tdS NzOverridden!rl   r   r0   r   r    r   requestpager&   r(   r)   	hook_func>  s    z>TestPageDelete.test_before_delete_page_hook.<locals>.hook_funcbefore_delete_pager+   r,   r.      Overridden!)	register_hookr/   r   r
   r    r   r0   r1   r   r'   r   r6   r(   r&   r)   test_before_delete_page_hook=  s    z+TestPageDelete.test_before_delete_page_hookc              	      sz    fdd}  d|   jtd jjfd}W 5 Q R X  |jd  |jd  	t
jj jjd  d S )	Nc                    s&     | t  |j jj tdS r~   r   r   r&   r(   r)   r   M  s    zCTestPageDelete.test_before_delete_page_hook_post.<locals>.hook_funcr   r+   r,   r.   r   r   )r   r/   r>   r
   r    r   r0   r1   r   r2   r   r   r3   r4   r   r(   r&   r)   !test_before_delete_page_hook_postL  s    z0TestPageDelete.test_before_delete_page_hook_postc              	      sz    fdd}  d|   jtd jjfd}W 5 Q R X  |jd  |jd  	t
jj jjd  d S )	Nc                    s&     | t  |j jj tdS r~   r   r   r&   r(   r)   r   _  s    z=TestPageDelete.test_after_delete_page_hook.<locals>.hook_funcZafter_delete_pager+   r,   r.   r   r   )r   r/   r>   r
   r    r   r0   r1   r   r?   r   r   r3   r4   r   r(   r&   r)   test_after_delete_page_hook^  s    z*TestPageDelete.test_after_delete_page_hookN)__name__
__module____qualname__r*   r7   r	   rC   rI   rV   rY   rZ   r^   rn   rp   r}   r   r   r   r(   r(   r(   r)   r      s*   
	')Ir   N)Zunittestr   Zdjango.contrib.auth.modelsr   Zdjango.db.models.signalsr   r   Zdjango.httpr   r   Zdjango.testr   r	   Zdjango.urlsr
   Zwagtail.modelsr   Zwagtail.signalsr   Zwagtail.test.testapp.modelsr   r   r   Zwagtail.test.utilsr   r   r(   r(   r(   r)   <module>   s   