U
    |h#                     @   s   d dl 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 e ejdkd	ed
ddiidG dd de
eZe ejdkd	ed
dddidG dd deZdS )    N)
connection)TestCase)override_settings)Phrase)BackendTests)models
postgresqlz&The current database is not PostgreSQLdefaultBACKEND2wagtail.search.backends.database.postgres.postgres)ZWAGTAILSEARCH_BACKENDSc                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )TestPostgresSearchBackendr   c              
   C   s  ddl m}m}m}m} | |ddddg | |ddd	d
g | |dd | |dd | |dd | |dd | |dd | |dd | |dd | |dgddddg | |dgddddg | |dddgddddg | |dddd gd!dd"dg | |dd#d$dd%gd&dddg | |dddd d'd(d)gd*d+d,dg | |d-ddddd d'gd.ddd/g d S )0N   )BOOSTS_WEIGHTSWEIGHTS_VALUESdetermine_boosts_weights
get_weight)
   A)r   B)g      ?C)      ?Dg?g?g?g      ?   r   r   g#@r   gffffff?r   r   r      )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r      )r   r   )r   r   r   g      ?      ?)r   r            )r   r   )r   r   )r   r   )r   r   )r    r   )Z"backends.database.postgres.weightsr   r   r   r   ZassertListEqualassertEqual)selfr   r   r   r    r#   r/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/search/tests/test_postgres_backend.pytest_weights   sR     
 
 





z&TestPostgresSearchBackend.test_weightsc                 C   s  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| d	d |D g  | j d
tj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  dS )}
        Checks that tsquery characters are correctly escaped
        and do not generate a PostgreSQL syntax error.
           L'amour piqué par une abeillec                 S   s   g | ]
}|j qS r#   title.0rr#   r#   r$   
<listcomp>Q   s     zGTestPostgresSearchBackend.test_search_tsquery_chars.<locals>.<listcomp>'starting quotec                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-   S   s     ending quote'c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-   U   s     double quo''tec                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-   W   s     triple quo'''tec                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-   Y   s     Something:Bc                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-   ]   s     Something:*c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-   _   s     Something:A*BCDc                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-   a   s     first & secondc                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-   e   s     first | secondc                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-   i   s     first & !secondc                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-   m   s     first <-> secondc                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-   q   s     N)backendsearchr   BookassertUnsortedListEqualr"   resultsr#   r#   r$   test_search_tsquery_charsI   s0    z3TestPostgresSearchBackend.test_search_tsquery_charsc                 C   s  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| d	d |D g  | j d
tj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  | j dtj}| dd |D g  dS )r&   r'   c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-   }   s     zMTestPostgresSearchBackend.test_autocomplete_tsquery_chars.<locals>.<listcomp>r.   c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     r/   c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     r0   c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     r1   c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     z
backslash\c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     r2   c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     r3   c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     r4   c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     r5   c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     r6   c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     r7   c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     r8   c                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     N)r9   autocompleter   r;   r<   r=   r#   r#   r$   test_autocomplete_tsquery_charss   s:     z9TestPostgresSearchBackend.test_autocomplete_tsquery_charsc                 C   sb   | j   | j tj}d|_|tjtjj  | j 	dtj}| 
dd |D ddg d S )NF
JavaScriptc                 S   s   g | ]
}|j qS r#   r(   r*   r#   r#   r$   r-      s     zGTestPostgresSearchBackend.test_index_without_upsert.<locals>.<listcomp>zJavaScript: The good partsz JavaScript: The Definitive Guide)r9   Zreset_indexZget_index_for_modelr   r;   Z_enable_upsertZ	add_itemsobjectsallr:   r<   )r"   indexr>   r#   r#   r$   test_index_without_upsert   s    
z3TestPostgresSearchBackend.test_index_without_upsertN)__name__
__module____qualname__backend_pathr%   r?   rA   rF   r#   r#   r#   r$   r      s
   0*0r   dutch)r
   ZSEARCH_CONFIGc                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestPostgresLanguageTextSearchr   c                 C   s4   t |  tjjjdddd}| j| || _d S )NNu is beter dan nooitz
1999-05-01iM  )r)   Zpublication_dateZnumber_of_pages)	r   setUpr   r;   rC   creater9   addbook)r"   rQ   r#   r#   r$   rN      s    
z$TestPostgresLanguageTextSearch.setUpc                 C   s   | j dtj}| t|| jg | j dtj}| t|| jg | j dtj}| t|| jg | j dtj}| t|| jg d S )NrM   zis beterz
zijn beterzzij beter dan)r9   r:   r   r;   r!   listrQ   r=   r#   r#   r$   test_search_language_plain_text   s    z>TestPostgresLanguageTextSearch.test_search_language_plain_textc                 C   sT   | j tdtj}| t|| jg | j tdtj}| t|| jg d S )NzNu is beterzNu zijn beter)r9   r:   r   r   r;   r!   rR   rQ   r=   r#   r#   r$    test_search_language_phrase_text   s    z?TestPostgresLanguageTextSearch.test_search_language_phrase_textN)rG   rH   rI   rJ   rN   rS   rT   r#   r#   r#   r$   rL      s   rL   )ZunittestZ	django.dbr   Zdjango.testr   Zdjango.test.utilsr   Zwagtail.search.queryr   Z"wagtail.search.tests.test_backendsr   Zwagtail.test.searchr   Z
skipUnlessvendorr   rL   r#   r#   r#   r$   <module>   s>       