o
    h                     @   s   d Z ddlmZ ddlmZmZ ddlmZmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ G d	d
 d
ee	ZG dd deZG dd deZG dd deZdS )zO
Tests for the search box in the admin side menu, and the custom search hooks.
    )
Permission)ContextTemplate)RequestFactorySimpleTestCaseTestCase)reverse)user_has_any_page_permission)
SearchArea)WagtailTestUtilsc                   @   s   e Zd Ze ZdddZdS )BaseSearchAreaTestCase/admin/Nc                 C   s2   | j j||d}| j|_td}|td|iS )N)dataz.{% load wagtailadmin_tags %}{% search_other %}request)rfgetuserr   renderr   )selfcurrent_urlr   r   template r   e/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/tests/test_admin_search.pysearch_other   s   z#BaseSearchAreaTestCase.search_other)r   N)__name__
__module____qualname__r   r   r   r   r   r   r   r      s    r   c                       s,   e Zd Z fddZdd Zdd Z  ZS )TestSearchAreasc                    s   t    |  | _d S N)supersetUploginr   r   	__class__r   r   r       s   
zTestSearchAreas.setUpc                 C   s   t d}d}d}d}d}| j|d|i}| |jd | |d | |d	 | |d
 | j|||||f dd | j||dd}| j|||||f ddd | j||dd}| j||||d |f ddd d S )Nwagtailadmin_pages:searchHellozsearch--custom-classzk<svg class="icon icon-custom filter-options__icon" aria-hidden="true"><use href="#icon-custom"></use></svg>zI<a href="/customsearch/?q=%s" class="%s" is-custom="true">%sMy Search</a>q   zwagtailadmin/pages/search.htmlz$wagtailadmin/shared/search_area.htmlz%wagtailadmin/shared/search_other.htmlT)htmltrue)r'   zhide-option)status_coder)   )r'   zactive-optionz nolink)r   clientr   assertEqualr+   assertTemplateUsedassertContainsassertNotContains)r   
search_urlquerybase_cssicontest_stringresponser   r   r   test_other_searches   s.   
z#TestSearchAreas.test_other_searchesc                 C   s@   |   }| td| | d| | d| | d| d S )Nr%   /customsearch/Pages	My Search)r   assertInr   r   renderedr   r   r   test_search_other<   s
   z!TestSearchAreas.test_search_other)r   r   r   r    r7   r>   __classcell__r   r   r#   r   r      s    r   c                       s8   e Zd ZdZdd Z fddZdd Zdd	 Z  ZS )
TestSearchAreaNoPagePermissionsz
    Test the admin search when the user does not have permission to manage
    pages. The search bar should show the first available search area instead.
    c                 C   s   |   | _| t| j d S r   )r!   r   assertFalser	   r"   r   r   r   r    K   s   
z%TestSearchAreaNoPagePermissions.setUpc                    s4   t   }d|_|jtjjddd |  |S )NFwagtailadminaccess_admin)content_type__app_labelcodename)	r   create_test_useris_superuseruser_permissionsaddr   objectsr   save)r   r   r#   r   r   rF   O   s   
z0TestSearchAreaNoPagePermissions.create_test_userc                 C   s,   | j d}| |td | |d dS )z{
        Check that the menu search area on the dashboard is not searching
        pages, as they are not allowed.
        r   r%   zF{"_type": "wagtail.sidebar.SearchModule", "_args": ["/customsearch/"]}N)r,   r   r0   r   r/   )r   r6   r   r   r   test_dashboardZ   s   z.TestSearchAreaNoPagePermissions.test_dashboardc                 C   s@   |   }| td| | d| | d| | d| dS )zHThe pages search link should be hidden, custom search should be visible.r%   r8   r9   r:   N)r   assertNotInr   r;   r<   r   r   r   r>   g   s
   z1TestSearchAreaNoPagePermissions.test_search_other)	r   r   r   __doc__r    rF   rL   r>   r?   r   r   r#   r   r@   E   s    r@   c                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )SearchAreaComparisonTestCasezTests the comparison functions.c                 C   sD   t dddd| _t dddd| _t ddd	d| _t dddd| _d S )
NzLabel 1z/url1d   )orderzLabel 2z/url2r(   z/url3i,  )r
   search_area1search_area2search_area3search_area4r"   r   r   r   r    t   s   z"SearchAreaComparisonTestCase.setUpc                 C   s8   |  | j| jk | | j| jk | | jdk d S N	Something)
assertTruerR   rU   rA   rS   r"   r   r   r   test_eqz   s   z$SearchAreaComparisonTestCase.test_eqc                 C   sp   |  | j| jk  |  | j| jk  | | j| jk  | t | jdk  W d    d S 1 s1w   Y  d S rV   )rX   rR   rS   rT   rA   assertRaises	TypeErrorr"   r   r   r   test_lt      "z$SearchAreaComparisonTestCase.test_ltc                 C   s   |  | j| jk |  | j| jk |  | j| jk |  | j| jk | | j| jk | t | jdk W d    d S 1 sCw   Y  d S rV   )rX   rR   rS   rT   rU   rA   rZ   r[   r"   r   r   r   test_le      "z$SearchAreaComparisonTestCase.test_lec                 C   sp   |  | j| jk |  | j| jk | | j| jk | t | jdk W d    d S 1 s1w   Y  d S rV   )rX   rS   rR   rT   rA   rZ   r[   r"   r   r   r   test_gt   r]   z$SearchAreaComparisonTestCase.test_gtc                 C   s   |  | j| jk |  | j| jk |  | j| jk |  | j| jk | | j| jk | t | jdk W d    d S 1 sCw   Y  d S rV   )rX   rS   rR   rT   rU   rA   rZ   r[   r"   r   r   r   test_ge   r_   z$SearchAreaComparisonTestCase.test_geN)
r   r   r   rN   r    rY   r\   r^   r`   ra   r   r   r   r   rO   q   s    
rO   N)rN   django.contrib.auth.modelsr   django.templater   r   django.testr   r   r   django.urlsr   wagtail.admin.authr	   wagtail.admin.searchr
   wagtail.test.utilsr   r   r   r@   rO   r   r   r   r   <module>   s    
-,