o
    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)WAGTAILSEARCH_BACKENDSc                   @   (   e Zd ZdZdd Zdd Zdd ZdS )	TestPostgresSearchBackendr   c                 C   sP  ddl m}m}m}m} | |g d | |g d | |dd | |dd | |dd	 | |dd	 | |d
d | |dd | |dd | |dgg d | |dgg d | |g dg d | |g dg d | |g dg d | |g dg d | |g dg d d S )N   )BOOSTS_WEIGHTSWEIGHTS_VALUESdetermine_boosts_weights
get_weight))
   Ar   Bg      ?C)      ?D)g?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"   )r   r   r      ))r$   r   r   )r   r   r    )r   r   g      ?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)   r   )"backends.database.postgres.weightsr   r   r   r   assertListEqualassertEqual)selfr   r   r   r    r.   j/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/search/tests/test_postgres_backend.pytest_weights   sL   




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      g | ]}|j qS r.   title.0rr.   r.   r/   
<listcomp>Q       zGTestPostgresSearchBackend.test_search_tsquery_chars.<locals>.<listcomp>'starting quotec                 S   r3   r.   r4   r6   r.   r.   r/   r9   S   r:   ending quote'c                 S   r3   r.   r4   r6   r.   r.   r/   r9   U   r:   double quo''tec                 S   r3   r.   r4   r6   r.   r.   r/   r9   W   r:   triple quo'''tec                 S   r3   r.   r4   r6   r.   r.   r/   r9   Y   r:   Something:Bc                 S   r3   r.   r4   r6   r.   r.   r/   r9   ]   r:   Something:*c                 S   r3   r.   r4   r6   r.   r.   r/   r9   _   r:   Something:A*BCDc                 S   r3   r.   r4   r6   r.   r.   r/   r9   a   r:   first & secondc                 S   r3   r.   r4   r6   r.   r.   r/   r9   e   r:   first | secondc                 S   r3   r.   r4   r6   r.   r.   r/   r9   i   r:   first & !secondc                 S   r3   r.   r4   r6   r.   r.   r/   r9   m   r:   first <-> secondc                 S   r3   r.   r4   r6   r.   r.   r/   r9   q   r:   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 )r1   r2   c                 S   r3   r.   r4   r6   r.   r.   r/   r9   }   r:   zMTestPostgresSearchBackend.test_autocomplete_tsquery_chars.<locals>.<listcomp>r;   c                 S   r3   r.   r4   r6   r.   r.   r/   r9      r:   r<   c                 S   r3   r.   r4   r6   r.   r.   r/   r9      r:   r=   c                 S   r3   r.   r4   r6   r.   r.   r/   r9      r:   r>   c                 S   r3   r.   r4   r6   r.   r.   r/   r9      r:   z
backslash\c                 S   r3   r.   r4   r6   r.   r.   r/   r9      r:   r?   c                 S   r3   r.   r4   r6   r.   r.   r/   r9      r:   r@   c                 S   r3   r.   r4   r6   r.   r.   r/   r9      r:   rA   c                 S   r3   r.   r4   r6   r.   r.   r/   r9      r:   rB   c                 S   r3   r.   r4   r6   r.   r.   r/   r9      r:   rC   c                 S   r3   r.   r4   r6   r.   r.   r/   r9      r:   rD   c                 S   r3   r.   r4   r6   r.   r.   r/   r9      r:   rE   c                 S   r3   r.   r4   r6   r.   r.   r/   r9      r:   N)rF   autocompleter   rH   rI   rJ   r.   r.   r/   test_autocomplete_tsquery_charss   s8   z9TestPostgresSearchBackend.test_autocomplete_tsquery_charsN)__name__
__module____qualname__backend_pathr0   rL   rN   r.   r.   r.   r/   r      s
    0*r   dutch)r
   SEARCH_CONFIGc                   @   r   )	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  )r5   publication_datenumber_of_pages)	r   setUpr   rH   objectscreaterF   addbook)r-   r]   r.   r.   r/   rY      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 )NrV   zis beterz
zijn beterzzij beter dan)rF   rG   r   rH   r,   listr]   rJ   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)rF   rG   r   r   rH   r,   r^   r]   rJ   r.   r.   r/    test_search_language_phrase_text   s   z?TestPostgresLanguageTextSearch.test_search_language_phrase_textN)rO   rP   rQ   rR   rY   r_   r`   r.   r.   r.   r/   rU      s
    rU   )unittest	django.dbr   django.testr   django.test.utilsr   wagtail.search.queryr   "wagtail.search.tests.test_backendsr   wagtail.test.searchr   
skipUnlessvendorr   rU   r.   r.   r.   r/   <module>   s:    
 
