U
    {h1;                     @   s   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mZmZmZmZ d dlmZ d dlmZ d dlmZ ed	d
dZG dd deeZdS )    )RequestFactoryTestCase)reverse)translation)hooks)AdminOnlyMenuItemDismissibleMenuItemDismissibleSubmenuMenuItemMenuMenuItemSubmenuMenuItem
admin_menu)sidebar)WagtailTestUtils)UserProfileclsc                    s    fdd}|S )Nc                      s
    S )N r   argsr   kwargsr   e/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/tests/test_menu.pyhook_fn   s    zmenu_item_hook.<locals>.hook_fnr   )r   r   r   r   r   r   r   menu_item_hook   s    r   c                   @   sd   e Z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S )TestMenuRenderingc                 C   s<   t  d| _| jdd| j_t| jj| _|  | _d S )Nz/adminZadminusername)	r   getrequestZcreate_superuseruserr   Zget_for_userprofilelogin)selfr   r   r   setUp   s    zTestMenuRendering.setUpc                 C   sT   d| j jd< | j td}| |d d| j jd< | j td}| |d dS )z3Sidebar should render with collapsed class applied.0Zwagtail_sidebar_collapsedZwagtailadmin_homezsidebar-collapsed1N)clientcookiesr   r   ZassertNotContainsZassertContains)r"   responser   r   r   test_remember_collapsed"   s    z)TestMenuRendering.test_remember_collapsedc              	   C   sx   t dd}tdtddfdtddfg || j}W 5 Q R X | |t | |t	
dddt	
dddg d S )	Nregister_menu_itemregister_hook_namePages/pages/Images/images/pagesimages)r
   r   register_temporarilyr   render_componentr   assertIsInstancelistassertListEqualr   LinkMenuItem)r"   menurenderedr   r   r   test_simple_menu.   s    
z"TestMenuRendering.test_simple_menuc              	   C   sp   t ddd}dd }tdtddfdtdd	fd|fg || j}W 5 Q R X | |td
ddg d S )Nr*   Zconstruct_menu)r,   Zconstruct_hook_namec                 S   s   dd |D |d d < d S )Nc                 S   s   g | ]}|j d ks|qS )r2   name.0itemr   r   r   
<listcomp>K   s     
 zZTestMenuRendering.test_menu_with_construct_hook.<locals>.remove_images.<locals>.<listcomp>r   )r   itemsr   r   r   remove_imagesJ   s    zFTestMenuRendering.test_menu_with_construct_hook.<locals>.remove_imagesr-   r.   r/   r0   r1   )	r
   r   r3   r   r4   r   assertEqualr   r8   )r"   r9   rC   r:   r   r   r   test_menu_with_construct_hookD   s"    z/TestMenuRendering.test_menu_with_construct_hookc              	   C   s   t dd}t dd}tdtd|tdfdtddfg || j}W 5 Q R X | |t | 	t
|d | |d	 tj | 	|d	 jd
 | 	|d	 jd | |d	 jtdddg d S )Nr*   r+   register_submenu_itemzMy lovely submenur   r-   r.      r   zmy-lovely-submenur1   )r
   r   r3   r   r   r4   r   r5   r6   rD   lenr   SubMenuItemr=   labelr7   
menu_itemsr8   r"   r9   Zsubmenur:   r   r   r   test_submenu]   s(    

	zTestMenuRendering.test_submenuc                 C   s   t dd}t dd}tdtd|tddfdtddtd	dfg || j}W 5 Q R X | |t	 | 
t|d
 | |d tj | 
|d jd | 
|d jd | 
|d jdddd | |d jtjd	ddddd	ddg d S Nr*   r+   rF   My dismissible submenudismissible-submenu-menu-itemr   r=   r-   r.   dismissible-menu-itemrG   r   w-dismissiblew-dismissible--dismissed)data-controller"data-w-dismissible-dismissed-classdata-w-dismissible-id-valueattrs)r
   r   r3   r   r	   r   r4   r   r5   r6   rD   rH   r   rI   r=   rJ   rY   r7   rK   r8   rL   r   r   r   test_dismissible_initialx   s^    



z*TestMenuRendering.test_dismissible_initialc                 C   s  ddd| j _| j   | jj  tdd}tdd}tdt	d|t
ddfdt	d	d
tddfg || j}W 5 Q R X | |t | t|d | |d tj | |d jd | |d jd | |d jddddd | |d jtjdd	d
ddddddg d S )NT)rP   rR   r*   r+   rF   rO   rP   rQ   r-   r.   rR   rG   r   rS   rT   true)rU   rV   rW   z"data-w-dismissible-dismissed-valuerX   )r    Zdismissiblessaver   r   refresh_from_dbr
   r   r3   r   r	   r   r4   r5   r6   rD   rH   r   rI   r=   rJ   rY   r7   rK   r8   rL   r   r   r   test_dismissible_dismissed   sl    





z,TestMenuRendering.test_dismissible_dismissedc                 C   s
  | j   | jj  tdd}tdd}tdtd|t	ddfdtddt
d	dfg || j}W 5 Q R X | |t | t|d
 | |d tj | |d jd | |d jd | |d jdddd | |d jtjd	ddddd	ddg d S rN   )r    deleter   r   r]   r
   r   r3   r   r	   r   r4   r5   r6   rD   rH   r   rI   r=   rJ   rY   r7   rK   r8   rL   r   r   r   test_dismissible_no_userprofile   sb    



z1TestMenuRendering.test_dismissible_no_userprofilec              	   C   s   t dd}tdtddfdtddtdfg. || j}| jdd	| j_|| j}W 5 Q R X | 	|t
d
ddt
dddg | 	|t
d
ddg d S )Nr*   r+   r-   r.   zSecret pagesz/pages/secret/r   z	non-adminr   r1   zsecret-pages)r
   r   r3   r   r   r4   r   Zcreate_userr   r7   r   r8   )r"   r9   r:   Zrendered_non_adminr   r   r   test_admin_only_menuitem5  s4    
  z*TestMenuRendering.test_admin_only_menuitemc              	   C   sj   zt `W n tk
r   Y nX td dd t jD }W 5 Q R X dddddd	d
dh}| ||  d S )Nfrc                 S   s   h | ]
}|j qS r   r<   r>   r   r   r   	<setcomp>`  s     z?TestMenuRendering.test_menu_items_have_names.<locals>.<setcomp>Zexplorerr2   Z	documentsZsnippetsZformsZreportssettingshelp)r   registered_menu_itemsAttributeErrorr   overrideassertFalse)r"   namesexpectedr   r   r   test_menu_items_have_namesV  s     z,TestMenuRendering.test_menu_items_have_namesc                 C   s   t  }tdX tjD ]J}t|ds(qz
|j`W n tk
rF   Y nX |jjD ]}||j	 qPqW 5 Q R X ddddddd	d
dddddddddddddddddddh}| 
||  d S )Nrb   r9   zsite-historyZ	workflowsZuserszrevisable-child-modelsgroupszaging-pageszeditor-guidesitesZpublishableszlocked-pageszworkflow-taskszicon-site-settingzrevisable-modelscollectionsZlocalesZ
styleguideztest-generic-settingztest-site-settingzimportant-pages-generic-settingZ	redirectszimportant-pages-site-settingzpromoted-search-resultszicon-generic-settingzfile-site-settingzfile-generic-setting)setr   rh   r   rf   hasattrr9   rg   addr=   ri   )r"   rj   r@   subitemrk   r   r   r   test_submenu_items_have_namest  sP    


"z/TestMenuRendering.test_submenu_items_have_namesN)__name__
__module____qualname__r#   r)   r;   rE   rM   rZ   r^   r`   ra   rl   rt   r   r   r   r   r      s   <D=!r   N)Zdjango.testr   r   Zdjango.urlsr   Zdjango.utilsr   Zwagtailr   Zwagtail.admin.menur   r   r	   r
   r   r   r   Zwagtail.admin.uir   Zwagtail.test.utilsr   Zwagtail.users.modelsr   r   r   r   r   r   r   <module>   s   $	