o
    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    i S )N r   argsr   kwargsr   ]/var/www/html/ndineBlogger/venv/lib/python3.10/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/adminadminusername)	r   getrequestcreate_superuseruserr   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.0wagtail_sidebar_collapsedwagtailadmin_homezsidebar-collapsed1N)clientcookiesr   r   assertNotContainsassertContains)r%   responser   r   r   test_remember_collapsed"   s   z)TestMenuRendering.test_remember_collapsedc              	   C   s   t dd}tdtddfdtddfg || j}W d    n1 s'w   Y  | |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   s   t ddd}dd }tdtddfdtdd	fd|fg || j}W d    n1 s/w   Y  | |td
ddg d S )Nr1   construct_menu)r3   construct_hook_namec                 S   s   dd |D |d d < d S )Nc                 S   s   g | ]	}|j d ks|qS )r9   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_imagesr4   r5   r6   r7   r8   )	r
   r   r:   r   r;   r   assertEqualr   r?   )r%   r@   rL   rA   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 d    n1 s.w   Y  | |t | 	t
|d | |d	 tj | 	|d	 jd
 | 	|d	 jd | |d	 jtdddg d S )Nr1   r2   register_submenu_itemzMy lovely submenur   r4   r5      r   zmy-lovely-submenur8   )r
   r   r:   r   r   r;   r   r<   r=   rM   lenr   SubMenuItemrF   labelr>   
menu_itemsr?   r%   r@   submenurA   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 d    n1 s2w   Y  | |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 Nr1   r2   rO   My dismissible submenudismissible-submenu-menu-itemr   rF   r4   r5   dismissible-menu-itemrP   r   w-dismissiblew-dismissible--dismissed)data-controller"data-w-dismissible-dismissed-classdata-w-dismissible-id-valueattrs)r
   r   r:   r   r	   r   r;   r   r<   r=   rM   rQ   r   rR   rF   rS   rc   r>   rT   r?   rU   r   r   r   test_dismissible_initialx   s`   



z*TestMenuRendering.test_dismissible_initialc                 C   s0  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 d    n1 sDw   Y  | |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)rZ   r\   r1   r2   rO   rY   rZ   r[   r4   r5   r\   rP   r   r]   r^   true)r_   r`   ra   z"data-w-dismissible-dismissed-valuerb   )r#   dismissiblessaver   r!   refresh_from_dbr
   r   r:   r   r	   r   r;   r<   r=   rM   rQ   r   rR   rF   rS   rc   r>   rT   r?   rU   r   r   r   test_dismissible_dismissed   sn   





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 d    n1 s=w   Y  | |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 rX   )r#   deleter   r!   rh   r
   r   r:   r   r	   r   r;   r<   r=   rM   rQ   r   rR   rF   rS   rc   r>   rT   r?   rU   r   r   r   test_dismissible_no_userprofile   sd   



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 d    n1 s7w   Y  | 	|t
d
ddt
dddg | 	|t
d
ddg d S )Nr1   r2   r4   r5   zSecret pagesz/pages/secret/r   z	non-adminr   r8   zsecret-pages)r
   r   r:   r   r   r;   r   create_userr!   r>   r   r?   )r%   r@   rA   rendered_non_adminr   r   r   test_admin_only_menuitem5  s2   
z*TestMenuRendering.test_admin_only_menuitemc                 C   sp   zt `W n	 ty   Y nw td dd t jD }W d    n1 s&w   Y  h d}| ||  d S )Nfrc                 S   s   h | ]}|j qS r   rE   rG   r   r   r   	<setcomp>`  s    z?TestMenuRendering.test_menu_items_have_names.<locals>.<setcomp>>   helpformsr9   reportsexplorersettingssnippets	documents)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0 tjD ]$}t|dsqz|j`W n	 ty"   Y nw |jjD ]}||j	 q'qW d    n1 s;w   Y  h d}| 
||  d S )Nro   r@   >   aging-pageseditor-guidelocked-pagessite-historyworkflow-tasksrevisable-modelsfile-site-settingicon-site-settingtest-site-settingfile-generic-settingicon-generic-settingtest-generic-settingrevisable-child-modelspromoted-search-resultsimportant-pages-site-settingimportant-pages-generic-settingsitesusersgroupslocales	redirects	workflows
styleguidecollectionspublishables)setr   rz   r   rx   hasattrr@   ry   addrF   r{   )r%   r|   rI   subitemr}   r   r   r   test_submenu_items_have_namest  s"   


"z/TestMenuRendering.test_submenu_items_have_namesN)__name__
__module____qualname__r&   r0   rB   rN   rW   rd   ri   rk   rn   r~   r   r   r   r   r   r      s    <D=!r   N)django.testr   r   django.urlsr   django.utilsr   wagtailr   wagtail.admin.menur   r   r	   r
   r   r   r   wagtail.admin.uir   wagtail.test.utilsr   wagtail.users.modelsr   r   r   r   r   r   r   <module>   s    $	