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	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dS )    N)skip)
connection)TransactionTestCase)override_settings)Not	PlainText)BackendTests)modelsmysqlz!The current database is not MySQLdefaultBACKEND,wagtail.search.backends.database.mysql.mysql)WAGTAILSEARCH_BACKENDSc                       s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Ze	d fddZ
e	d fddZe	d fddZe	d fddZe	d fddZe	d fddZ  ZS )TestMySQLSearchBackendr   c                 C   s   h d}| j ttdtjj }| dd |D | | j td tjj }| dd |D | | j td tjj }| dd |D |dd	hB  | j td
 tjj }| dd |D |dhB  d S )N>   
The HobbitThe Two TowersLearning PythonA Clash of KingsProgramming RustA Game of ThronesA Storm of SwordsThe Return of the KingTwo Scoops of Django 1.11The Fellowship of the RingThe Rust Programming Language
Foundation
javascriptc                 S      h | ]}|j qS  title.0rr   r   g/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/search/tests/test_mysql_backend.py	<setcomp>,       z2TestMySQLSearchBackend.test_not.<locals>.<setcomp>c                 S   r   r   r   r!   r   r   r$   r%   1   r&   zjavascript thec                 S   r   r   r   r!   r   r   r$   r%   9   r&   z JavaScript: The Definitive GuideJavaScript: The good partszjavascript partsc                 S   r   r   r   r!   r   r   r$   r%   C   r&   )	backendsearchr   r   r	   BookobjectsallassertSetEqual)selfall_other_titlesresultsr   r   r$   test_not   s2   zTestMySQLSearchBackend.test_notc                 C      | j dtjj }| dd |D t  | j dtjj }| dd |D t  | j dtjj }| dd |D t  d S )N c                 S   r   r   r   r!   r   r   r$   r%   J   r&   z;TestMySQLSearchBackend.test_empty_search.<locals>.<setcomp> c                 S   r   r   r   r!   r   r   r$   r%   P   r&   *c                 S   r   r   r   r!   r   r   r$   r%   V   r&   r(   r)   r	   r*   r+   r,   r-   setr.   r0   r   r   r$   test_empty_searchG      z(TestMySQLSearchBackend.test_empty_searchc                 C   r2   )Nr3   c                 S   r   r   r   r!   r   r   r$   r%   ]   r&   zATestMySQLSearchBackend.test_empty_autocomplete.<locals>.<setcomp>r4   c                 S   r   r   r   r!   r   r   r$   r%   c   r&   r5   c                 S   r   r   r   r!   r   r   r$   r%   i   r&   )r(   autocompleter	   r*   r+   r,   r-   r7   r8   r   r   r$   test_empty_autocompleteZ   r:   z.TestMySQLSearchBackend.test_empty_autocompletec                 C   s   | j dtjj }| dd |D dh | j dtjj }| dd |D dh | j dtjj }| dd |D dh | j d	tjj }| d
d |D t  d S )Nzjavascript @ partsc                 S   r   r   r   r!   r   r   r$   r%   q   r&   zETestMySQLSearchBackend.test_symbols_in_search_term.<locals>.<setcomp>r'   zjavascript parts @c                 S   r   r   r   r!   r   r   r$   r%   w   r&   z@ javascript partsc                 S   r   r   r   r!   r   r   r$   r%   }   r&   zjava@script partsc                 S   r   r   r   r!   r   r   r$   r%      r&   r6   r8   r   r   r$   test_symbols_in_search_termm   s(   z2TestMySQLSearchBackend.test_symbols_in_search_termc                 C   s2   | j dtjj }| dd |D dh d S )Nzparts javasc*c                 S   r   r   r   r!   r   r   r$   r%      r&   zHTestMySQLSearchBackend.test_autocomplete_with_symbols.<locals>.<setcomp>r'   )r(   r;   r	   r*   r+   r,   r-   r8   r   r   r$   test_autocomplete_with_symbols   s
   z5TestMySQLSearchBackend.test_autocomplete_with_symbolszThe MySQL backend doesn't support choosing individual fields for the search, only (body, title) or (autocomplete) fields may be searched.c                    
   t   S N)supertest_search_on_individual_fieldr.   	__class__r   r$   rB      s   
z6TestMySQLSearchBackend.test_search_on_individual_fieldz+The MySQL backend doesn't support boosting.c                    r?   r@   )rA   &test_search_boosting_on_related_fieldsrC   rD   r   r$   rF         
z=TestMySQLSearchBackend.test_search_boosting_on_related_fieldsc                    r?   r@   )rA   
test_boostrC   rD   r   r$   rH      rG   z!TestMySQLSearchBackend.test_boostz,The MySQL backend doesn't score annotations.c                    r?   r@   )rA   test_annotate_scorerC   rD   r   r$   rI      rG   z*TestMySQLSearchBackend.test_annotate_scorec                    r?   r@   )rA   test_annotate_score_with_slicerC   rD   r   r$   rJ      rG   z5TestMySQLSearchBackend.test_annotate_score_with_slicez?The MySQL backend doesn't guarantee correct ranking of results.c                    r?   r@   )rA   test_rankingrC   rD   r   r$   rK      rG   z#TestMySQLSearchBackend.test_ranking)__name__
__module____qualname__backend_pathr1   r9   r<   r=   r>   r   rB   rF   rH   rI   rJ   rK   __classcell__r   r   rD   r$   r      s*    	.	r   )unittestr   	django.dbr   django.test.testcasesr   django.test.utilsr   wagtail.search.queryr   r   "wagtail.search.tests.test_backendsr   wagtail.test.searchr	   
skipUnlessvendorr   r   r   r   r$   <module>   s     