U
    {h'                     @   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mZ d dlmZ G dd deeZdS )    )mock)get_user_model)
Permission)	constants)HttpRequestHttpResponse)TestCase)reverse)Page)post_page_movepre_page_move)BusinessSubIndex
SimplePage)WagtailTestUtilsc                   @   sn   e Zd ZdgZe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S )TestPageMovez	test.jsonc                 C   s  t jjdd| _tdddd| _| jj| jd tdd	dd| _| jj| jd td
ddd| _| jj| jd tdddd| _	| jj| j	d tdddd| _
| jj| j
d tdddd| _tdddd}| jj| jd | jj|d | j  |  d S )N   idz	Section Az	section-aZhello)titleslugcontentinstancez	Section Bz	section-bz	Section Cz	section-czHello world!zhello-worldZUnpublishedZunpublishedzSub Pagezsub-pagechild)r
   objectsgetZ	root_pager   	section_a	add_child	section_bZ	section_ctest_page_atest_page_bunpublished_pageZ	unpublish)clsZsub_page r#   p/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/tests/pages/test_move_page.pysetUpTestData   s:          
zTestPageMove.setUpTestDatac                 C   s   |   | _d S )N)loginuserselfr#   r#   r$   setUp:   s    zTestPageMove.setUpc                 C   s<   | j td| jjfd}| |jd | || jj	 d S )Nwagtailadmin_pages:moveargs   )
clientr   r	   r   r   assertEqualstatus_codeZassertContainsr   r   r)   responser#   r#   r$   test_page_move>   s
    zTestPageMove.test_page_movec                 C   sX   d| j _| j jtjjddd | j   | jt	d| j
jfd}| |jd d S )NFZwagtailadminZaccess_admin)Zcontent_type__app_labelcodenamer+   r,   .  )r'   Zis_superuserZuser_permissionsaddr   r   r   saver/   r	   r   r   r0   r1   r2   r#   r#   r$   test_page_move_bad_permissionsE   s     
z+TestPageMove.test_page_move_bad_permissionsc                 C   sj   | j   t jjdd}| | | j| }| 	| | j t
d| jjfd}| |jd d S )Nzsiteeditor@example.com)emailr+   r,   r.   )r/   Zlogoutr   r   r   r&   r    Zpermissions_for_userZ
can_deleteassertFalser	   r!   r   r0   r1   )r)   r'   Zcan_bulk_deleter3   r#   r#   r$   1test_user_without_bulk_delete_permission_can_moveW   s    


z>TestPageMove.test_user_without_bulk_delete_permission_can_movec                 C   s   | j td| jj| jjfd}| |jd | j td| jj| j	jfd}| |jd | j td}t
|jd }| t|d | |d jtj | | jj|d j d S )	Nwagtailadmin_pages:move_confirmr,   r.   r6   Zwagtailadmin_homemessages   r   )r/   r   r	   r   r   r   r0   r1   r    r   listcontextlenlevelmessage_constantsERRORZassertInr   message)r)   r3   r>   r#   r#   r$   test_page_move_confirmh   s&    z#TestPageMove.test_page_move_confirmc              	   C   s   t  }t  }t| t| z$| jtd| j	j
| jj
fd W 5 t| t| X tjj| jjd}| |jd |jt j| j	j| j	|| jddd | |jd |jt j| j	jtjj| j	jd|| jddd d S )Nr=   r,   )pkr?   z/home/section-a/hello-world/z/home/section-b/hello-world/)signalZsenderr   Zparent_page_beforeZparent_page_afterZurl_path_beforeZurl_path_after)r   Z	MagicMockr   connectr   Z
disconnectr/   postr	   r   r   r   r
   r   r   r   rH   r0   Z
call_countZassert_called_withANYZspecific_class)r)   Zpre_moved_handlerZpost_moved_handlerZnonspecific_section_ar#   r#   r$   test_move_triggers_signals   sD    


z'TestPageMove.test_move_triggers_signalsc              	      sd    fdd}  d|&  jtd jj jjfd}W 5 Q R X  |jd  |j	d d S )Nc                    s0     | t   |jt   |jt tdS NzOverridden!ZassertIsInstancer   Zspecificr   r   requestpageZdestinationr(   r#   r$   	hook_func   s    z:TestPageMove.test_before_move_page_hook.<locals>.hook_funcbefore_move_pager=   r,   r.      Overridden!)
register_hookr/   r   r	   r   r   r   r0   r1   r   r)   rS   r3   r#   r(   r$   test_before_move_page_hook   s    z'TestPageMove.test_before_move_page_hookc              	      s    fdd}  d|&  jtd jj jjfd}W 5 Q R X  |jd  |j	d  t
jj jjd j jj d S )	Nc                    s0     | t   |jt   |jt tdS rN   rO   rP   r(   r#   r$   rS      s    z?TestPageMove.test_before_move_page_hook_post.<locals>.hook_funcrT   r=   r,   r.   rU   r   )rV   r/   rK   r	   r   r   r   r0   r1   r   r
   r   r   
get_parentr   rW   r#   r(   r$   test_before_move_page_hook_post   s     z,TestPageMove.test_before_move_page_hook_postc              	      s    fdd}  d|&  jtd jj jjfd}W 5 Q R X  |jd  |j	d  t
jj jjd j jj d S )	Nc                    s"     | t   |jt tdS rN   rO   )rQ   rR   r(   r#   r$   rS      s    z9TestPageMove.test_after_move_page_hook.<locals>.hook_funcZafter_move_pager=   r,   r.   rU   r   )rV   r/   rK   r	   r   r   r   r0   r1   r   r
   r   r   rY   rW   r#   r(   r$   test_after_move_page_hook   s     z&TestPageMove.test_after_move_page_hookc                 C   s   |  t| j | jjtdddddd}| jtd|jfd}| 	|j
d	 |jd
 }| 	|jd jj| jj | || jj d S )NzBusiness Sub Indexzbusiness-sub-indexTF)r   r   liveZhas_unpublished_changesr   r+   r,   r.   Z	move_formZnew_parent_page)r;   r   Zcan_exist_underr   r   r/   r   r	   r   r0   r1   rA   fieldsinitialrH   ZassertNotContainsr   )r)   rR   r3   formr#   r#   r$   Htest_page_move_after_parent_page_types_changes_to_different_parent_model   s    	
zUTestPageMove.test_page_move_after_parent_page_types_changes_to_different_parent_modelN)__name__
__module____qualname__Zfixturesclassmethodr%   r*   r4   r9   r<   rG   rM   rX   rZ   r[   r`   r#   r#   r#   r$   r      s   
&1r   N)Zunittestr   Zdjango.contrib.authr   Zdjango.contrib.auth.modelsr   Zdjango.contrib.messagesr   rD   Zdjango.httpr   r   Zdjango.testr   Zdjango.urlsr	   Zwagtail.modelsr
   Zwagtail.signalsr   r   Zwagtail.test.testapp.modelsr   r   Zwagtail.test.utilsr   r   r#   r#   r#   r$   <module>   s   