U
    {h1                     @   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	 d dl
mZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZ G dd deeZdS )    )StringIO)
Permission)
management)TransactionTestCase)reverse)	urlencode)Page)
EventIndex
SimplePageSingleEventPage)WagtailTestUtils)local_datetimec                       s   e Zd ZdgZ fddZd$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d Zdd Zd d! Zd"d# Z  ZS )%TestPageSearchztest_empty.jsonc                    s,   t    tjddt dd |  | _d S )NZupdate_indexdefault2   )backend_namestdout
chunk_size)supersetUpr   Zcall_commandr   loginuserself	__class__ r/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/tests/pages/test_page_search.pyr      s    
zTestPageSearch.setUpNwagtailadmin_pages:searchc                 K   s   | j jt||pi f|S )N)clientgetr   )r   paramsurl_nameextrar   r   r   r       s    zTestPageSearch.getc                 C   s&   |   }| |d | |jd d S )Nwagtailadmin/pages/search.html   )r    assertTemplateUsedassertEqualstatus_coder   responser   r   r   	test_view   s    zTestPageSearch.test_viewc                 C   s   t jjdd}|jtddddddd	}| d
di}| |jd | |d | |jd d t	dt
di}t
d|jfdd|  }| |d| d d S )N   idHello from Cauldron Lakebright-fallsIt's not a lake, it's an oceanTFtitleslugcontentliveZhas_unpublished_changesinstanceqHellor%   r$   query_stringnextr   wagtailadmin_pages:copyargs?href="")r   objectsr    	add_childr
   r'   r(   r&   contextr   r   pkassertContainsr   	root_pageZnew_pager*   Znext_urlZexpected_new_page_copy_urlr   r   r   test_search$   s$    
zTestPageSearch.test_searchc                 C   s`   t jjdd}|jtddddddd	 | d
di}| |d | d
di}| |d d S )Nr,   r-   z
Greetings!Zhellozgood morningTFr2   r7   r9   zThere is one matching pageZ	greetings)r   rC   r    rD   r
   assertNotContainsrG   )r   rI   r*   r   r   r   test_search_searchable_fields=   s    z,TestPageSearch.test_search_searchable_fieldsc                 C   s   t jjdd}|jtddddddd	}| jd
didd}| |jd | |d | |d | |j	d d t
dtdi}td|jfdd|  }| |d| d d S )Nr,   r-   r/   r0   r1   TFr2   r7   r9   r:   z!wagtailadmin_pages:search_results)r"   r%   r$   z&wagtailadmin/pages/search_results.htmlr;   r<   r   r=   r>   r@   rA   rB   )r   rC   r    rD   r
   r'   r(   ZassertTemplateNotUsedr&   rE   r   r   rF   rG   rH   r   r   r   	test_ajaxT   s,    
 zTestPageSearch.test_ajaxc                 C   sL   |  ddd}| |jd | |d |  ddd}| |jd d S )Nr:      )r9   pr%   r$   i'    )r    r'   r(   r&   r)   r   r   r   test_paginationp   s
    zTestPageSearch.test_paginationc                 C   sB   |  ddi}| |jd |jd }| tdd |D  d S )Nr9   rootr%   pagesc                 s   s   | ]}|j d kV  qdS )rR   N)r4   ).0rr   r   r   	<genexpr>~   s     zHTestPageSearch.test_root_can_appear_in_search_results.<locals>.<genexpr>)r    r'   r(   rE   Z
assertTrueany)r   r*   resultsr   r   r   &test_root_can_appear_in_search_resultsy   s    
z5TestPageSearch.test_root_can_appear_in_search_resultsc              
   C   sT   t jjdd}tdddddtdd	d	d
}|j|d | ddi}| |d d S )Nr,   r-   Lunar eventthe moonpublicfree
2001-01-01  rN   r3   locationaudiencecost	date_fromlatest_revision_created_atr7   r9   ZlunarzLunar event (single event))r   rC   r    r   r   rD   rG   )r   rI   	new_eventr*   r   r   r   8test_search_uses_admin_display_title_from_specific_class   s    
zGTestPageSearch.test_search_uses_admin_display_title_from_specific_classc                 C   s@   d| j _| j jtjjddd | j   | |  d d S )NFZwagtailadminZaccess_admin)Zcontent_type__app_labelcodenamez/admin/)	r   Zis_superuserZuser_permissionsaddr   rC   r    saveZassertRedirectsr   r   r   r   test_search_no_perms   s     
z#TestPageSearch.test_search_no_permsc              
   C   s   t jjdd}tdddddtdd	d	d
}|j|d tdddddtdd	d	d
}|j|d | ddd}dd |jd D }| ||j|jg | ddd}dd |jd D }| ||j|jg d S )Nr,   r-   rZ   r[   r\   r]   r^   r_   rN   r`   r7   zA Lunar eventLunarr3   r9   Zorderingc                 S   s   g | ]
}|j qS r   r-   rT   pager   r   r   
<listcomp>   s     z=TestPageSearch.test_search_order_by_title.<locals>.<listcomp>rS   z-titlec                 S   s   g | ]
}|j qS r   r-   rn   r   r   r   rp      s     	r   rC   r    r   r   rD   rE   r'   r.   r   rI   rf   Znew_event_2r*   page_idsr   r   r   test_search_order_by_title   s2    

z)TestPageSearch.test_search_order_by_titlec              
   C   s   t jjdd}tdddddtdd	d	d
}|j|d tdddddtdd	d	d
}|j|d | ddd}dd |jd D }| ||j|jg | ddd}dd |jd D }| ||j|jg d S )Nr,   r-   rZ   r[   r\   r]   r^   r_   rN   r`   r7   zLunar event 2i  rl   re   rm   c                 S   s   g | ]
}|j qS r   r-   rn   r   r   r   rp      s     z?TestPageSearch.test_search_order_by_updated.<locals>.<listcomp>rS   z-latest_revision_created_atc                 S   s   g | ]
}|j qS r   r-   rn   r   r   r   rp      s     rq   rr   r   r   r   test_search_order_by_updated   s2    

z+TestPageSearch.test_search_order_by_updatedc              
   C   s   t jjdd}tdddddtdd	d	d
d}|j|d tdddddtdd	d	dd}|j|d | ddd}dd |jd D }| ||j|jg | ddd}dd |jd D }| ||j|jg d S )Nr,   r-   rZ   r[   r\   r]   r^   r_   rN   T)r3   ra   rb   rc   rd   re   r6   r7   Frl   r6   rm   c                 S   s   g | ]
}|j qS r   r-   rn   r   r   r   rp      s     z>TestPageSearch.test_search_order_by_status.<locals>.<listcomp>rS   z-livec                 S   s   g | ]
}|j qS r   r-   rn   r   r   r   rp      s     rq   )r   rI   Z
live_eventZdraft_eventr*   rs   r   r   r   test_search_order_by_status   s6    
	
	z*TestPageSearch.test_search_order_by_statusc                 C   s<   |  ddi}| |jd |  ddi}| |jd d S )Ncontent_typezdemosite.standardpager%   zdemosite.standardpage.errorrP   )r    r'   r(   r)   r   r   r   test_search_filter_content_type   s    z.TestPageSearch.test_search_filter_content_typec              
   C   s   t jjdd}tddd}|j|d ddii g}td	}|D ]}| j|d
 | |}| |jd | 	|d | |j
d d | |d | |d | |d | |d | |d | || d W 5 Q R X q>d S )Nr,   r-   ALL THE EVENTSIt's just a nod to the canonr3   Zintror7   r9    r   paramr%   r$   r;   
Page typeszAll (3)Page (2)Event index (1)%?q=&amp;content_type=tests.eventindex)r   rC   r    r	   rD   r   subTestr'   r(   r&   rE   rG   )r   rI   event_indexr!   urlr~   r*   r   r   r   -test_empty_search_renders_content_type_facets   s.    
z<TestPageSearch.test_empty_search_renders_content_type_facetsc              
   C   s*  t jjdd}tddd}tdddd	d
tdddd}|j|d |j|d dddddig}td}|D ]}| j|d | |}| 	|j
d | |d | 	|jd d | |d | |d | |d | |d | |d | |d | |d | || d W 5 Q R X qld S )Nr,   r-   ry   rz   r{   rZ   r[   r\   r]   r^   r_   rN   r`   r7   r|   ztests.singleeventpage)r9   rw   rw   r   r}   r%   r$   r;   r   zAll (4)r   zSingle event page (1)r   r   )r   rC   r    r	   r   r   rD   r   r   r'   r(   r&   rE   rG   rK   )r   rI   r   rf   r!   r   r~   r*   r   r   r   *test_empty_search_with_content_type_filter  sH    

z9TestPageSearch.test_empty_search_with_content_type_filter)Nr   )__name__
__module____qualname__Zfixturesr   r    r+   rJ   rL   rM   rQ   rY   rg   rk   rt   ru   rv   rx   r   r   __classcell__r   r   r   r   r      s"   

	
 	r   N)ior   Zdjango.contrib.auth.modelsr   Zdjango.corer   Zdjango.testr   Zdjango.urlsr   Zdjango.utils.httpr   Zwagtail.modelsr   Zwagtail.test.testapp.modelsr	   r
   r   Zwagtail.test.utilsr   Zwagtail.test.utils.timestampsr   r   r   r   r   r   <module>   s   