U
    {®Þ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   )ÚselfZcurrent_urlr   r   Útemplate© r   úm/var/www/dating/data/www/fatepal.com/env/lib/python3.8/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:searchZ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   ZassertEqualr)   ZassertTemplateUsedÚassertContainsÚassertNotContains)r   Z
search_urlÚqueryZbase_cssÚiconZtest_stringÚresponser   r   r   Útest_other_searches   s4    ÿ   ÿü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   r0   r7   Ú__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 )NFZwagtailadminZaccess_admin)Zcontent_type__app_labelÚcodename)	r   Úcreate_test_userZis_superuserZuser_permissionsÚaddr   Úobjectsr   Úsave)r   r   r"   r   r   r<   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   r,   r   r+   )r   r/   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$   r1   r2   r3   N)r   ZassertNotInr   r4   r5   r   r   r   r7   g   s
    z1TestSearchAreaNoPagePermissions.test_search_other)	r   r   r   Ú__doc__r   r<   r@   r7   r8   r   r   r"   r   r9   E   s
   r9   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/url1éd   )Ú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 ©NZ	Something)Ú
assertTruerE   rH   r:   rF   r!   r   r   r   Útest_eqz   s    z$SearchAreaComparisonTestCase.test_eqc              	   C   sZ   |   | j| jk ¡ |   | j| jk ¡ |  | j| jk ¡ |  t¡ | jdk  W 5 Q R X d S rI   )rJ   rE   rF   rG   r:   ÚassertRaisesÚ	TypeErrorr!   r   r   r   Útest_lt„   s
    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 5 Q R X d S rI   )rJ   rE   rF   rG   rH   r:   rL   rM   r!   r   r   r   Útest_le’   s    z$SearchAreaComparisonTestCase.test_lec              	   C   sZ   |   | j| jk¡ |   | j| jk¡ |  | j| jk¡ |  t¡ | jdk W 5 Q R X d S rI   )rJ   rF   rE   rG   r:   rL   rM   r!   r   r   r   Útest_gt¦   s
    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 5 Q R X d S rI   )rJ   rF   rE   rG   rH   r:   rL   rM   r!   r   r   r   Útest_ge´   s    z$SearchAreaComparisonTestCase.test_geN)
r   r   r   rA   r   rK   rN   rO   rP   rQ   r   r   r   r   rB   q   s   
rB   N)rA   Zdjango.contrib.auth.modelsr   Zdjango.templater   r   Zdjango.testr   r   r   Zdjango.urlsr   Zwagtail.admin.authr	   Zwagtail.admin.searchr
   Zwagtail.test.utilsr   r   r   r9   rB   r   r   r   r   Ú<module>   s   
-,