o
    h                     @   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 G dd de	Zd	S )
    )date)StringIO)
management)	MATCH_ALL)BackendTests)modelsc                   @   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d Zdd  Zd!S )"%ElasticsearchCommonSearchBackendTestsc                 C   s   | j dtj}t| d S )Nz   )backendsearchr   Booklistselfresults r   o/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/search/tests/elasticsearch_common_tests.pytest_search_with_spaces_only   s   zBElasticsearchCommonSearchBackendTests.test_search_with_spaces_onlyc                 C   sZ   ddl m} | | t| jdtjjj	dd W d   dS 1 s&w   Y  dS )zR
        Not all lookup types are supported by the Elasticsearch backends
        r   FilterErrorHellozh(ea)llo)title__iregexN)
wagtail.search.backends.baser   assertRaisesr   r	   r
   r   r   objectsfilter)r   r   r   r   r   (test_filter_with_unsupported_lookup_type   s   "zNElasticsearchCommonSearchBackendTests.test_filter_with_unsupported_lookup_typec                 C   .   | j dtj}| dd |D ddg d S )NJavac                 S      g | ]}|j qS r   title.0rr   r   r   
<listcomp>&       zMElasticsearchCommonSearchBackendTests.test_partial_search.<locals>.<listcomp> JavaScript: The Definitive GuideJavaScript: The good partsr	   autocompleter   r   assertUnsortedListEqualr   r   r   r   test_partial_search"   s
   z9ElasticsearchCommonSearchBackendTests.test_partial_searchc                 C   s*   | j dtj}| dd |D g  d S )Nr   c                 S   r   r   r   r!   r   r   r   r$   -   r%   zVElasticsearchCommonSearchBackendTests.test_disabled_partial_search.<locals>.<listcomp>r	   r
   r   r   r*   r   r   r   r   test_disabled_partial_search*   s   zBElasticsearchCommonSearchBackendTests.test_disabled_partial_searchc                 C   r   )N
JavaScriptc                 S   r   r   r   r!   r   r   r   r$   5   r%   zfElasticsearchCommonSearchBackendTests.test_disabled_partial_search_with_whole_term.<locals>.<listcomp>r&   r'   r,   r   r   r   r   ,test_disabled_partial_search_with_whole_term/   s
   zRElasticsearchCommonSearchBackendTests.test_disabled_partial_search_with_whole_termc                 C   s.   | j dtj}| dd |D g d d S )NWesc                 S   r   r   r   r!   r   r   r   r$   >   r%   zSElasticsearchCommonSearchBackendTests.test_child_partial_search.<locals>.<listcomp>)zA Game of ThroneszA Storm of SwordszA Clash of Kingsr(   r   r   r   r   test_child_partial_search9   s
   z?ElasticsearchCommonSearchBackendTests.test_child_partial_searchc                 C   sh   t jjjdtddddd}| jt j}|| |  | j	dt j}| 
dd	 |D dg d S )
Nu   Ĥéllø  
         r    publication_datenumber_of_pagesr   c                 S   r   r   r   r!   r   r   r   r$   M   r%   zLElasticsearchCommonSearchBackendTests.test_ascii_folding.<locals>.<listcomp>)r   r   r   creater   r	   get_index_for_modeladd_itemrefreshr)   r*   r   bookindexr   r   r   r   test_ascii_foldingB   s   
z8ElasticsearchCommonSearchBackendTests.test_ascii_foldingc                 C   sV   | j dtj}| dd |D ddg | j dtj}| dd |D t  d S )	Nr.   c                 S   r   r   r   r!   r   r   r   r$   T   r%   zMElasticsearchCommonSearchBackendTests.test_query_analyser.<locals>.<listcomp>r&   r'   	JavaBeansc                 S   s   h | ]}|j qS r   r   r!   r   r   r   	<setcomp>Z   r%   zLElasticsearchCommonSearchBackendTests.test_query_analyser.<locals>.<setcomp>)r	   r
   r   r   r*   assertSetEqualsetr   r   r   r   test_query_analyserO   s   z9ElasticsearchCommonSearchBackendTests.test_query_analyserc                 C   sh   t jjjdtddddd}| jt j}|| |  | j	dt j}| 
dd	 |D dg d
S )z
        This tests that punctuation characters are treated the same
        way in both indexing and querying.

        See: https://github.com/wagtail/wagtail/issues/937
        z&Harry Potter and the Half-Blood Princei        i_  r6   z
Half-Bloodc                 S   r   r   r   r!   r   r   r   r$   o   r%   zQElasticsearchCommonSearchBackendTests.test_search_with_hyphen.<locals>.<listcomp>N)r   r   r   r9   r   r	   r:   r;   r<   r
   r*   r=   r   r   r   test_search_with_hyphen\   s   

z=ElasticsearchCommonSearchBackendTests.test_search_with_hyphenc                 C   s6   | j jdtjddgd}| dd |D ddg d S )	Nr.   andr    )operatorfieldsc                 S   r   r   r   r!   r   r   r   r$   {   r%   z]ElasticsearchCommonSearchBackendTests.test_and_operator_with_single_field.<locals>.<listcomp>r&   r'   r,   r   r   r   r   #test_and_operator_with_single_fieldu   s   zIElasticsearchCommonSearchBackendTests.test_and_operator_with_single_fieldc                 C   s<   t jd| jdt d | jttj}| 	t
|t
  d S )Nupdate_indexT)backend_nameschema_onlystdout)r   call_commandrN   r   r	   r
   r   r   r   rC   rD   r   r   r   r   %test_update_index_command_schema_only   s   zKElasticsearchCommonSearchBackendTests.test_update_index_command_schema_onlyc                 C   s$   | j ttj}| t|d d S )N   )r	   r
   r   r   r   assertEquallenr   r   r   r   test_more_than_ten_results   s   z@ElasticsearchCommonSearchBackendTests.test_more_than_ten_resultsc              	   C   s   g }t dD ]}|tjjjd| tddd|d q| jtj}|	tj| |
  | jttj}| t|d d S )N   Book r2   r3      r6      rangeappendr   r   r   r9   r   r	   r:   	add_itemsr<   r
   r   rT   rU   r   booksir?   r   r   r   r   "test_more_than_one_hundred_results   s   
zHElasticsearchCommonSearchBackendTests.test_more_than_one_hundred_resultsc              	   C   s   g }t dD ]}|tjjjd| tddd|d q| jtj}|	tj| |
  | jttjdd }| t|d d S )	NrW   rX   r2   r3   rY   r6   x   n   r[   r_   r   r   r   (test_slice_more_than_one_hundred_results   s   
zNElasticsearchCommonSearchBackendTests.test_slice_more_than_one_hundred_resultsc              	   C   s   g }t dD ]}|tjjjd| tddd|d q| jtj}|	tj| |
  | jttjdd  }| t|d d S )	NrW   rX   r2   r3   rY   r6   rd   6   r[   r_   r   r   r   test_slice_to_next_page   s   
z=ElasticsearchCommonSearchBackendTests.test_slice_to_next_pagec                 C   sZ   ddl m} tjjjdd}| | | jt	| W d    d S 1 s&w   Y  d S )Nr   r   r5   )publication_date__month)
r   r   r   r   r   r   r   r	   r
   r   )r   r   in_janr   r   r   0test_cannot_filter_on_date_parts_other_than_year   s
   "zVElasticsearchCommonSearchBackendTests.test_cannot_filter_on_date_parts_other_than_yearN)__name__
__module____qualname__r   r   r+   r-   r/   r1   r@   rE   rH   rL   rR   rV   rb   re   rg   rj   r   r   r   r   r      s"    	
	
r   N)datetimer   ior   django.corer   wagtail.search.queryr   "wagtail.search.tests.test_backendsr   wagtail.test.searchr   r   r   r   r   r   <module>   s    