U
    {®Þh¾‰  ã                   @   sN  d dl 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 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ƒZG dd„ deƒZG dd„ deeƒZG dd„ deeƒZG dd„ deeƒZG dd„ deeƒZG dd„ deƒ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 )"é    N)ÚdateÚdatetimeÚ	timedelta)ÚStringIO)Ú
Permission)Ú
management)ÚTestCase)Úreverse)ÚAdminURLFinder)ÚQueryÚQueryDailyHitsÚSearchPromotion)Úget_search_promotions)ÚWagtailTestUtilsc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestSearchPromotionsc                 C   sP   t jjt d¡dddd |  t d¡j ¡ d¡ |  t d¡j ¡ j	d¡ d S )Nú	root pageé   r   úFirst search promotion©ÚqueryÚpage_idÚ
sort_orderÚdescription)
r   ÚobjectsÚcreater   ÚgetÚassertEqualÚeditors_picksÚcountÚfirstr   ©Úself© r"   úo/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/contrib/search_promotions/tests.pyÚtest_search_pick_create   s    üz,TestSearchPromotions.test_search_pick_createc                 C   sP   t jjt d¡dddd |  t d¡j ¡ d¡ |  t d¡j ¡ j	d¡ d S )Nr   úhttps://wagtail.orgr   r   ©r   Úexternal_link_urlr   r   r   )
r   r   r   r   r   r   r   r   r   r'   r    r"   r"   r#   Útest_search_pick_link_create$   s    üþz1TestSearchPromotions.test_search_pick_link_createc                 C   sž   t jjt d¡dddd t jjt d¡dddd t jjt d¡ddd	d
 |  t d¡j ¡ d¡ |  t d¡j ¡ j	d¡ |  t d¡j 
¡ j	d¡ d S )Nr   r   r   úFirst search pickr   é   zLast search pickr%   zMiddle search pickr&   é   )r   r   r   r   r   r   r   r   r   r   Úlastr    r"   r"   r#   Útest_search_pick_ordering5   s6    üüüþ ÿz.TestSearchPromotions.test_search_pick_orderingc                 C   sš   t  d¡}tdƒD ]}| ¡  qtjjt  d¡dddd tjjt  d¡ddd	d |  t  ¡  	¡ d¡ t  d¡j
 ¡ }|  |jd¡ |  |jjd¡ d S )
NÚpopularé   r*   r   úPopular search pickr   Zuninterestingr   zUninteresting search pick)r   r   ÚrangeÚadd_hitr   r   r   r   Úget_most_popularr   r   r   r   r   Úhits)r!   ÚpopularQueryÚiZpopular_picksr"   r"   r#   Útest_get_most_popularS   s,    

üüþz*TestSearchPromotions.test_get_most_popularc           
      C   sü   t  ¡ }|tdd }|tdd }t d¡}tdƒD ]}|j|d q6t d¡}|j|d |j|d |j|d tjj	t d¡dddd	 tjj	t d¡ddd
d	 tj
|d}|  | ¡ d¡ t d¡j}| ¡ }	|  |	jd
¡ |  |	jjd¡ d S )Nr*   ©Údaysr/   r.   ©r   Zsurpriser   r0   r   zSurprising search pick)Z
date_sincer   r+   )r   Útodayr   r   r   r1   r2   r   r   r   r3   r   r   r   r   r   r   r4   )
r!   ZTODAYZTWO_DAYS_AGOZFIVE_DAYS_AGOr5   r6   ZsurpriseQueryZmost_popular_queriesr   Zsurprise_picksr"   r"   r#   Útest_get_most_popular_sincem   s>    

üüþz0TestSearchPromotions.test_get_most_popular_sinceN)Ú__name__Ú
__module__Ú__qualname__r$   r(   r-   r7   r<   r"   r"   r"   r#   r      s
   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú"TestGetSearchPromotionsTemplateTagc                 C   sR   t jjt d¡dddd}t jjt d¡dddd ttdƒƒ}|  ||g¡ d S )Nr   r   r   r)   r   zroot page againúSecond search pick)r   r   r   r   r   Úlistr   r   )r!   ÚpickÚsearch_picksr"   r"   r#   Ú'test_get_search_promotions_template_tag”   s    üüzJTestGetSearchPromotionsTemplateTag.test_get_search_promotions_template_tagc                 C   s   t td ƒƒ}|  |g ¡ d S ©N)rB   r   r   )r!   rD   r"   r"   r#   Ú1test_get_search_promotions_with_none_query_string©   s    zTTestGetSearchPromotionsTemplateTag.test_get_search_promotions_with_none_query_stringN)r=   r>   r?   rE   rG   r"   r"   r"   r#   r@   “   s   r@   c                   @   s|   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d„ Zdd„ Zdd„ ZdS )ÚTestSearchPromotionsIndexViewc                 C   s   |   ¡ | _d S rF   )ÚloginÚuserr    r"   r"   r#   ÚsetUp¯   s    z#TestSearchPromotionsIndexView.setUpc                 C   s.   | j  tdƒ¡}|  |jd¡ |  |d¡ d S )Núwagtailsearchpromotions:indexéÈ   ú"wagtailsearchpromotions/index.html©Úclientr   r	   r   Ústatus_codeÚassertTemplateUsed©r!   Úresponser"   r"   r#   Útest_simple²   s    z)TestSearchPromotionsIndexView.test_simplec                 C   sF   | j  tdƒddi¡}|  |jd¡ |  |jd d¡ |  |d¡ d S )NrL   ÚqÚHellorM   Úquery_stringz1Sorry, no promoted results match "<em>Hello</em>")rP   r   r	   r   rQ   ÚcontextÚassertContainsrS   r"   r"   r#   Útest_search·   s     ÿþz)TestSearchPromotionsIndexView.test_searchc                 C   s~   t jjt d¡dd t jjt d¡dd | j tdƒddi¡}|  |jd¡ |  |j	d	 d¡ |  
|d
¡ |  
|d¡ d S )Nzsearch promotion queryr   )r   r   r%   )r   r'   rL   rV   rM   rX   z.<a href="/admin/pages/1/edit/" class="nolink">zN<a href="https://wagtail.org" class="nolink" target="_blank" rel="noreferrer">)r   r   r   r   r   rP   r	   r   rQ   rY   rZ   rS   r"   r"   r#   Útest_search_with_resultsÂ   s&    þþ ÿþz6TestSearchPromotionsIndexView.test_search_with_resultsc                 C   s4   t dƒD ]&}tjjt dt|ƒ ¡dddd qd S )Né2   úquery r   r   r)   r   )r1   r   r   r   r   r   Ústr©r!   r6   r"   r"   r#   Úmake_search_picks×   s    üz/TestSearchPromotionsIndexView.make_search_picksc                 C   sP   |   ¡  | j tdƒddi¡}|  |jd¡ |  |d¡ |  |jd jd¡ d S )NrL   Úpr*   rM   rN   Úpage_obj)	ra   rP   r   r	   r   rQ   rR   rY   ÚnumberrS   r"   r"   r#   Útest_paginationà   s
    z-TestSearchPromotionsIndexView.test_paginationc                 C   s0   |   ¡  | j tdƒddi¡}|  |jd¡ d S )NrL   rb   zHello World!é”  ©ra   rP   r   r	   r   rQ   rS   r"   r"   r#   Útest_pagination_invalidì   s     ÿz5TestSearchPromotionsIndexView.test_pagination_invalidc                 C   s0   |   ¡  | j tdƒddi¡}|  |jd¡ d S )NrL   rb   iŸ† rf   rg   rS   r"   r"   r#   Útest_pagination_out_of_rangeö   s     ÿz:TestSearchPromotionsIndexView.test_pagination_out_of_rangec              	      sÒ   t dƒ}|  ¡  | j |¡ |  d¡ | j |¡ W 5 Q R X t ¡ ‰tdƒD ]\}t dt	|ƒ ¡‰ ‡ fdd„tdƒD ƒ}‡ ‡fdd„tdƒD ƒ}t
j |¡ tj |¡ qN|  d¡ | j |¡ W 5 Q R X d S )	NrL   é   é   r^   c                    s*   g | ]"}t ˆ |d  d |d|› d‘qS )r*   r   zSearch pick r   )r   ©Ú.0Új)r   r"   r#   Ú
<listcomp>  s   ú
üzBTestSearchPromotionsIndexView.test_num_queries.<locals>.<listcomp>r/   c                    s$   g | ]}t ˆ ˆt|d  |d‘qS )r8   )r   r   r4   )r   r   rl   ©r   r;   r"   r#   ro     s   ÿ)r	   ra   rP   r   ZassertNumQueriesr   r;   r1   r   r_   r   r   Zbulk_creater   )r!   Úurlr6   Zpromosr4   r"   rp   r#   Útest_num_queries   s$    
ù	þz.TestSearchPromotionsIndexView.test_num_queriesc                 C   sš   |   ¡  tjjt d¡dddd tjjt d¡dddd | j tdƒ¡}|  |j	d	¡ |  
|d
¡ |  |jd d jd¡ |  |jd d jd¡ d S )Nzaaargh snaker   r   zooh, it's a snaker   zbeloved snakezbeloved snake goes ssSSSSrL   rM   rN   Úqueries)ra   r   r   r   r   r   rP   r	   r   rQ   rR   rY   rX   rS   r"   r"   r#   Ú'test_results_are_ordered_alphabetically#  s$    üüzETestSearchPromotionsIndexView.test_results_are_ordered_alphabeticallyc           	      C   s  t  ¡ }tdƒD ] }t d¡j|t|d d qtjj	t d¡dddd tjj	t d¡d	dd
d | j
 tdƒ¡}| j|ddd |  t d¡jd¡ |  |j¡}tddd}tddd}| d|› d¡}| d|› d¡}|  |¡ |  |¡ |  t d¡j ¡ d	¡ d S )Né
   r   r8   r:   r   r   r)   r   r*   rA   rL   z<td>10</td>T)Úhtmlzwagtailadmin_pages:edit)r   ©Úargs)r*   úa[href="ú"])r   r;   r1   r   r   r2   r   r   r   r   rP   r	   rZ   r   r4   Úget_soupÚcontentÚ
select_oneZassertIsNotNoner   r   )	r!   r;   r6   rT   ÚsoupZroot_page_edit_urlZhomepage_edit_urlZroot_page_edit_linkZhomepage_edit_linkr"   r"   r#   Útest_multiple_searchpromotions=  s4    üü

z<TestSearchPromotionsIndexView.test_multiple_searchpromotionsc                 C   sî  |   ¡  tdƒ}tjjt d¡dddd tjjt d¡ddd	d t d
¡}tdƒD ]}| ¡  qVtjj|dddd t d¡}tdƒD ]}| ¡  qŠtjj|dddd | j	 |d ¡}|  
|jd¡ |  
|jd d jd¡ | j	 |d ¡}|  
|jd¡ |  
|jd d jd¡ | j	 |d ¡}|  
|jd¡ |  
|jd d jd¡ | j	 |d ¡}|  
|jd¡ |  
|jd d jd
¡ |  
|jd d jd¡ | j	 |d ¡}|  
|jd¡ |  
|jd d jd
¡ |  
|jd d jd¡ d S )NrL   Zzyzzyvasr   r   z9no definition found, this is a valid scrabble word thoughr   Zaardwolfé   z?Striped hyena of southeast Africa that feeds chiefly on insectsZoptimalr]   é   zAn oddly popular search term?Z
suboptimalé   zNot as popularz?ordering=-query_stringrM   rc   z?ordering=-query_string&p=3éÿÿÿÿz?ordering=query_stringz?ordering=-viewsz?ordering=views&p=3éþÿÿÿ)ra   r	   r   r   r   r   r   r1   r2   rP   r   rQ   rY   rX   )r!   rq   r5   r6   rT   r"   r"   r#   Útest_results_ordering[  sb    üü

ü

üz3TestSearchPromotionsIndexView.test_results_orderingc                 C   s^   d| j _| j  ¡  | j j tjjddd¡ | j t	dƒ¡}|  
|jd¡ |  |t	dƒ¡ d S )NFÚwagtailadminÚaccess_admin©Zcontent_type__app_labelÚcodenamerL   i.  Zwagtailadmin_home)rJ   Úis_superuserÚsaveÚuser_permissionsÚaddr   r   r   rP   r	   r   rQ   ÚassertRedirectsrS   r"   r"   r#   Útest_get_with_no_permission›  s    
þÿz9TestSearchPromotionsIndexView.test_get_with_no_permissionc                 C   s”   d| j _| j  ¡  | j j tjjdddtjjddd¡ | j t	dƒ¡}|  
|jd¡ |  |d	¡ |  |j¡}t	d
ƒ}|  | d|› d¡¡ d S )NFr†   r‡   rˆ   ZwagtailsearchpromotionsZchange_searchpromotionrL   rM   rN   úwagtailsearchpromotions:addry   rz   )rJ   rŠ   r‹   rŒ   r   r   r   r   rP   r	   r   rQ   rR   r{   r|   ZassertIsNoner}   )r!   rT   r~   Zadd_urlr"   r"   r#   Ú"test_get_with_edit_permission_onlyª  s$    
þþûz@TestSearchPromotionsIndexView.test_get_with_edit_permission_onlyN)r=   r>   r?   rK   rU   r[   r\   ra   re   rh   ri   rr   rt   r   r…   r   r‘   r"   r"   r"   r#   rH   ®   s   	

#@rH   c                   @   sL   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S )ÚTestSearchPromotionsAddViewc                 C   s   |   ¡  d S rF   ©rI   r    r"   r"   r#   rK   Ä  s    z!TestSearchPromotionsAddView.setUpc                 C   s.   | j  tdƒ¡}|  |jd¡ |  |d¡ d S )Nr   rM   z wagtailsearchpromotions/add.htmlrO   rS   r"   r"   r#   rU   Ç  s    z'TestSearchPromotionsAddView.test_simplec              	   C   sZ   dddddddddœ}| j  tdƒ|¡}|  |td	ƒ¡ |  t d¡jjdd
 	¡ ¡ d S )NÚtestr   r   éè  Ú rW   )rX   úeditors_picks-TOTAL_FORMSúeditors_picks-INITIAL_FORMSúeditors_picks-MAX_NUM_FORMSúeditors_picks-0-DELETEúeditors_picks-0-ORDERúeditors_picks-0-pageúeditors_picks-0-descriptionr   rL   )r   ©
rP   Úpostr	   rŽ   Ú
assertTruer   r   r   ÚfilterÚexists©r!   Z	post_datarT   r"   r"   r#   Ú	test_postÌ  s    ø
z%TestSearchPromotionsAddView.test_postc              
   C   s\   dddddddddd	œ	}| j  td
ƒ|¡}|  |tdƒ¡ |  t d¡jjdd 	¡ ¡ d S )Nr”   r   r   r•   r–   r%   ÚWagtailrW   )	rX   r—   r˜   r™   rš   r›   ú!editors_picks-0-external_link_urlú"editors_picks-0-external_link_textr   r   rL   )r'   rž   r£   r"   r"   r#   Útest_post_with_external_linkà  s"    ÷ÿÿz8TestSearchPromotionsAddView.test_post_with_external_linkc                 C   sH   dddddœ}| j  tdƒ|¡}|  |jd¡ |  |jd d d d¡ d S )	Nr”   r   r•   )rX   r—   r˜   r™   r   rM   Úsearchpicks_formsetú@Please specify at least one recommendation for this search term.©rP   rŸ   r	   r   rQ   ÚassertFormSetErrorrY   r£   r"   r"   r#   Ú!test_post_without_recommendationsù  s    üüz=TestSearchPromotionsAddView.test_post_without_recommendationsc                 C   sT   ddddddddddd	œ
}| j  td
ƒ|¡}|  |jd¡ |  |jd d d d¡ d S )Nr”   r   r   r•   r–   r%   r¥   rW   )
rX   r—   r˜   r™   rš   r›   rœ   r¦   r§   r   r   rM   r©   z4Please only select a page OR enter an external link.r«   r£   r"   r"   r#   Ú%test_post_with_page_and_external_link  s&    öüzATestSearchPromotionsAddView.test_post_with_page_and_external_linkc                 C   sN   ddddddddœ}| j  tdƒ|¡}|  |jd	¡ |  |jd
 d d d¡ d S )Nr”   r   r   r•   r–   rW   )rX   r—   r˜   r™   rš   r›   r   r   rM   r©   z.You must recommend a page OR an external link.r«   r£   r"   r"   r#   Ú test_post_missing_recommendation$  s     ù	üz<TestSearchPromotionsAddView.test_post_missing_recommendationc                 C   sN   ddddddddœ}| j  tdƒ|¡}|  |jd	¡ |  |jd
 d d d¡ d S )Nr”   r   r   r•   r–   r%   )rX   r—   r˜   r™   rš   r›   r¦   r   rM   r©   zGYou must enter an external link text if you enter an external link URL.r«   r£   r"   r"   r#   Útest_post_missing_external_text9  s     ù	üz;TestSearchPromotionsAddView.test_post_missing_external_textN)r=   r>   r?   rK   rU   r¤   r¨   r­   r®   r¯   r°   r"   r"   r"   r#   r’   Ã  s   r’   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestSearchPromotionsEditViewc                 C   sF   |   ¡ | _t d¡| _| jjjdddd| _| jjjdddd| _d S )NrW   r   r   ú	Root page)r   r   r   r*   ÚHomepage)	rI   rJ   r   r   r   r   r   Úsearch_pickÚsearch_pick_2r    r"   r"   r#   rK   P  s    
  ÿ  ÿz"TestSearchPromotionsEditView.setUpc                 C   sb   | j  td| jjfd¡}|  |jd¡ |  |d¡ t| j	ƒ}d| jj }|  | 
| j¡|¡ d S )Núwagtailsearchpromotions:editrw   rM   z!wagtailsearchpromotions/edit.htmlz/admin/searchpicks/%d/)rP   r   r	   r   Úidr   rQ   rR   r
   rJ   Zget_edit_urlr´   )r!   rT   Z
url_finderZexpected_urlr"   r"   r#   rU   \  s    ÿ
z(TestSearchPromotionsEditView.test_simplec                 C   sv   dddd| j jdddd| jjddddd	œ}| j td
| jjfd|¡}|  |tdƒ¡ |  t	j
j| j jdjd¡ d S )NrW   r*   r•   r–   r   r   úDescription has changedr³   ©rX   r—   r˜   r™   zeditors_picks-0-idrš   r›   rœ   r   zeditors_picks-1-idzeditors_picks-1-DELETEzeditors_picks-1-ORDERzeditors_picks-1-pagezeditors_picks-1-descriptionr¶   rw   rL   ©r·   )r´   r·   rµ   rP   rŸ   r	   r   rŽ   r   r   r   r   r   r£   r"   r"   r#   r¤   g  s0    ò ÿþz&TestSearchPromotionsEditView.test_postc                 C   s
  |   t d¡j ¡ d | j¡ |   t d¡j ¡ d | j¡ dddd| jjdddd| jjddddd	œ}| j 	t
d
| jjfd|¡}|  |t
dƒ¡ |   tjj| jjdjd¡ |   tjj| jjdjd¡ |   t d¡j ¡ d | j¡ |   t d¡j ¡ d | j¡ d S )NrW   r   r   r*   r•   r–   r²   r³   r¹   r¶   rw   rL   rº   )r   r   r   r   Úallr´   rµ   r·   rP   rŸ   r	   r   rŽ   r   r   r   r£   r"   r"   r#   Útest_post_reorder†  s@    ò ÿ ÿ ÿz.TestSearchPromotionsEditView.test_post_reorderc                 C   s’   dddd| j jdddd| jjddddd	œ}| j td
| jjfd|¡}|  |tdƒ¡ |  t	j
j| jjd ¡ ¡ |  t	j
j| j jd ¡ ¡ d S )NrW   r*   r•   r–   r   r   r²   r³   r¹   r¶   rw   rL   rº   )r´   r·   rµ   rP   rŸ   r	   r   rŽ   ÚassertFalser   r   r¡   r¢   r    r£   r"   r"   r#   Útest_post_delete_recommendation¯  s0    ò ÿÿz<TestSearchPromotionsEditView.test_post_delete_recommendationc                 C   sn   dddd| j jdddd| jjdddddœ}| j td	| jjfd
|¡}|  |jd¡ |  	|j
d d d d¡ d S )NrW   r*   r•   r   r   r¸   r³   r¹   r¶   rw   rM   r©   rª   )r´   r·   rµ   rP   rŸ   r	   r   r   rQ   r¬   rY   r£   r"   r"   r#   r­   Ð  s4    ò ÿüz>TestSearchPromotionsEditView.test_post_without_recommendationsN)	r=   r>   r?   rK   rU   r¤   r¼   r¾   r­   r"   r"   r"   r#   r±   O  s   )!r±   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestSearchPromotionsDeleteViewc                 C   s@   |   ¡  t d¡| _| jjjddd| _| jjjddd| _d S )NrW   r   r²   )r   r   r*   r³   )rI   r   r   r   r   r   r´   rµ   r    r"   r"   r#   rK   ñ  s     ÿ ÿz$TestSearchPromotionsDeleteView.setUpc                 C   s8   | j  td| jjfd¡}|  |jd¡ |  |d¡ d S )Núwagtailsearchpromotions:deleterw   rM   z+wagtailsearchpromotions/confirm_delete.html)rP   r   r	   r   r·   r   rQ   rR   rS   r"   r"   r#   rU   ý  s
    ÿz*TestSearchPromotionsDeleteView.test_simplec                 C   sf   | j  td| jjfd¡}|  |tdƒ¡ |  tjj	| j
jd ¡ ¡ |  tjj	| jjd ¡ ¡ d S )NrÀ   rw   rL   rº   )rP   rŸ   r	   r   r·   rŽ   r½   r   r   r¡   rµ   r¢   r´   rS   r"   r"   r#   r¤     s    ÿÿÿz(TestSearchPromotionsDeleteView.test_postN)r=   r>   r?   rK   rU   r¤   r"   r"   r"   r#   r¿   ð  s   r¿   c                   @   s   e Zd Zdd„ ZdS )Ú#TestGarbageCollectManagementCommandc           	      C   s   t  ¡ }|tdd  ¡ }|tdd  ¡ }g }tdƒD ],}t d|› ¡}|j|d | |j	¡ q8g }tdƒD ],}t d|› ¡}|j|d | |j	¡ qrg }tdƒD ]@}t d|› ¡}|j|d t
jj|dd	d
d | |j	¡ q¬tjdtƒ d |  tjj|d ¡ ¡ |  tjj||d ¡ ¡ |  tjj|d ¡ d¡ |  tjj||d ¡ d¡ |  tjj|d ¡ d¡ |  tjj||d ¡ d	¡ d S )Né   r8   r   ru   zHello r:   zWorld zFoo bar r   ZTestr   Z searchpromotions_garbage_collect)Ústdout)Zid__in)r   Zquery_id__in)r   Únowr   r   r1   r   r   r2   Úappendr·   r   r   r   r   Zcall_commandr   r½   r¡   r¢   r   r   r   )	r!   ZnowdtZold_hit_dateZrecent_hit_dateZquery_ids_to_be_deletedr6   rV   Zrecent_query_idsZpromoted_query_idsr"   r"   r#   Útest_garbage_collect_command  s`       ÿ ÿÿ ÿü ÿüz@TestGarbageCollectManagementCommand.test_garbage_collect_commandN)r=   r>   r?   rÆ   r"   r"   r"   r#   rÁ     s   rÁ   c                   @   s8   e Zd Zdd„ Zi fdd„Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestQueryChooserViewc                 C   s   |   ¡  d S rF   r“   r    r"   r"   r#   rK   R  s    zTestQueryChooserView.setUpc                 C   s   | j  d|¡S )Nz#/admin/searchpicks/queries/chooser/)rP   r   )r!   Úparamsr"   r"   r#   r   U  s    zTestQueryChooserView.getc                 C   sF   |   ¡ }|  |jd¡ |  |d¡ t |j ¡ ¡}|  |d d¡ d S )NrM   z4wagtailsearchpromotions/queries/chooser/chooser.htmlÚstepZchooser)r   r   rQ   rR   ÚjsonÚloadsr|   Údecode)r!   rT   Zresponse_jsonr"   r"   r#   rU   X  s     ÿz TestQueryChooserView.test_simplec                 C   s    |   ddi¡}|  |jd¡ d S )NrV   rW   rM   ©r   r   rQ   rS   r"   r"   r#   r[   a  s    z TestQueryChooserView.test_searchc                 C   s<   |   ddi¡}|  |jd¡ |   ddi¡}|  |jd¡ d S )Nrb   r   rM   i'  rf   rÍ   rS   r"   r"   r#   re   e  s    z$TestQueryChooserView.test_paginationN)r=   r>   r?   rK   r   rU   r[   re   r"   r"   r"   r#   rÇ   Q  s
   	rÇ   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestHitCounterc                 C   s   |   t d¡jd¡ d S )NrW   r   )r   r   r   r4   r    r"   r"   r#   Útest_no_hitso  s    zTestHitCounter.test_no_hitsc                 C   s&   t  d¡ ¡  |  t  d¡jd¡ d S )NrW   r   )r   r   r2   r   r4   r    r"   r"   r#   Útest_hitr  s    zTestHitCounter.test_hitc                 C   s4   t dƒD ]}t d¡ ¡  q|  t d¡jd¡ d S )Nru   rW   )r1   r   r   r2   r   r4   r`   r"   r"   r#   Útest_10_hitsy  s    zTestHitCounter.test_10_hitsN)r=   r>   r?   rÏ   rÐ   rÑ   r"   r"   r"   r#   rÎ   n  s   rÎ   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestQueryStringNormalisationc                 C   s   t  d¡| _d S )Nz  Hello  World!  )r   r   r   r    r"   r"   r#   rK   ƒ  s    z"TestQueryStringNormalisation.setUpc                 C   s   |   t| jƒd¡ d S )Nzhello world!)r   r_   r   r    r"   r"   r#   Útest_normalisation†  s    z/TestQueryStringNormalisation.test_normalisationc                 C   s.   ddddg}|D ]}|   | jt |¡¡ qd S )Nz  Hello World!zHello World!  zhello  world!z  Hello  world!  )r   r   r   r   ©r!   rs   r   r"   r"   r#   Útest_equivalent_queries‰  s    üz4TestQueryStringNormalisation.test_equivalent_queriesc                 C   s,   dddg}|D ]}|   | jt |¡¡ qd S )NZ
HelloWorldzHelloWorld!  Hello  World!  rW   )ZassertNotEqualr   r   r   rÔ   r"   r"   r#   Útest_different_queries”  s    ýz3TestQueryStringNormalisation.test_different_queriesN)r=   r>   r?   rK   rÓ   rÕ   rÖ   r"   r"   r"   r#   rÒ   ‚  s   rÒ   c                   @   s   e Zd Zdd„ ZdS )ÚTestQueryPopularityc                 C   s\  t dƒD ]}t d¡ ¡  qt dƒD ]}t d¡ ¡  q$t ¡ }|  | ¡ d¡ |  |d t d¡¡ |  |d t d¡¡ t dƒD ]}t d	¡ ¡  q„|  | ¡ d¡ |  |d t d¡¡ |  |d t d	¡¡ |  |d t d¡¡ t d
ƒD ]}t d¡ ¡  qò|  | ¡ d¡ |  |d t d¡¡ |  |d t d¡¡ |  |d t d	¡¡ d S )Nr+   zunpopular queryru   zpopular queryr*   r   r   r/   zlittle popular queryrk   )r1   r   r   r2   r3   r   r   )r!   r6   Zpopular_queriesr"   r"   r#   Útest_query_popularity   s(    z)TestQueryPopularity.test_query_popularityN)r=   r>   r?   rØ   r"   r"   r"   r#   r×   Ÿ  s   r×   )#rÊ   r   r   r   Úior   Zdjango.contrib.auth.modelsr   Zdjango.corer   Zdjango.testr   Zdjango.urlsr	   Zwagtail.admin.admin_url_finderr
   Z(wagtail.contrib.search_promotions.modelsr   r   r   ZKwagtail.contrib.search_promotions.templatetags.wagtailsearchpromotions_tagsr   Zwagtail.test.utilsr   r   r@   rH   r’   r±   r¿   rÁ   rÇ   rÎ   rÒ   r×   r"   r"   r"   r#   Ú<module>   s2   }    "(9