U
    |h                     @   s@  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
 d dlmZ d dlmZ d dlmZ G d	d
 d
eZejdddedddiidG dd deeZejdddedddiidG dd deeZejdddedddiidG dd deeZejdddedddiidG dd deeZdS )    )date)mock)TestCaseoverride_settings)Page)index)models)
SimplePage)WagtailTestUtilsc                   @   s*   e Zd ZdgZdd Zdd Zdd ZdS )	TestGetIndexedInstancesearchc                 C   s*   t jjjdd}t|}| || d S N   id)r   Authorobjectsgetr   get_indexed_instanceassertEqualselfobjZindexed_instance r   q/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/search/tests/test_index_functions.pytest_gets_instance   s    
z)TestGetIndexedInstance.test_gets_instancec                 C   s,   t jjjdd}t|j}| || d S r   )r   Novelr   r   r   r   book_ptrr   r   r   r   r   test_gets_specific_class   s    z/TestGetIndexedInstance.test_gets_specific_classc                 C   s:   t jdtddddd}|  t|j}| | d S )NzDon't index me!  
      d   titlepublication_dateZnumber_of_pages)r   r   r   saver   r   r   assertIsNoner   r   r   r   "test_blocks_not_in_indexed_objects   s    
z9TestGetIndexedInstance.test_blocks_not_in_indexed_objectsN)__name__
__module____qualname__Zfixturesr   r   r(   r   r   r   r   r      s   r   z'wagtail.search.tests.DummySearchBackendT)createdefaultZBACKEND)ZWAGTAILSEARCH_BACKENDSc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestInsertOrUpdateObjectc                 C   sB   t jjjdtddddd}|   t| | j	| d S NTestr   r    r!   r"   r#   )
r   Bookr   r,   r   
reset_mockr   insert_or_update_objectaddassert_called_withr   backendr   r   r   r   test_inserts_object3   s     
 

z,TestInsertOrUpdateObject.test_inserts_objectc                 C   s@   t jdtddddd}|   t| | | jj d S r/   )	r   r1   r   r2   r   r3   ZassertFalser4   Z
mock_callsr6   r   r   r   !test_doesnt_insert_unsaved_object=   s     
 

z:TestInsertOrUpdateObject.test_doesnt_insert_unsaved_objectc                 C   sP   t jjdd}|jtddddd}|j}|   t| | j	
| d S )Nr   r   test)r$   Zslugcontent)instance)r   r   r   Z	add_childr	   Zpage_ptrr2   r   r3   r4   r5   )r   r7   Z	root_pagepageZunspecific_pager   r   r   test_converts_to_specific_pageG   s    

z7TestInsertOrUpdateObject.test_converts_to_specific_pagec              	   C   s   t jjjdtddddd}td| j_|   | j	ddd	}t
| W 5 Q R X | t|jd
 | d|jd  | d|jd  | d|jd  d S )Nr0   r   r    r!   r"   r#   wagtail.search.indexERRORlevelr   zLException raised while adding <Book: Test> into the 'default' search backendr   "Traceback (most recent call last):ValueError: Test)r   r1   r   r,   r   
ValueErrorr4   side_effectr2   
assertLogsr   r3   r   lenoutputassertInr   r7   r   cmr   r   r   test_catches_index_errorW   s      
 
z1TestInsertOrUpdateObject.test_catches_index_errorN)r)   r*   r+   r8   r9   r>   rM   r   r   r   r   r.   ,   s   

r.   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestRemoveObjectc                 C   sB   t jjjdtddddd}|   t| | j	| d S r/   )
r   r1   r   r,   r   r2   r   remove_objectdeleter5   r6   r   r   r   test_removes_objectr   s     
 

z$TestRemoveObject.test_removes_objectc                 C   s>   t jdtddddd}|   t| | j| d S r/   )r   r1   r   r2   r   rO   rP   r5   r6   r   r   r   test_removes_unsaved_object|   s     
 

z,TestRemoveObject.test_removes_unsaved_objectc              	   C   s   t jjjdtddddd}|   td| j_| j	ddd	}t
| W 5 Q R X | t|jd
 | d|jd  | d|jd  | d|jd  d S )Nr0   r   r    r!   r"   r#   r?   r@   rA   r   zNException raised while deleting <Book: Test> from the 'default' search backendr   rC   rD   )r   r1   r   r,   r   r2   rE   rP   rF   rG   r   rO   r   rH   rI   rJ   rK   r   r   r   rM      s      
 
z)TestRemoveObject.test_catches_index_errorN)r)   r*   r+   rQ   rR   rM   r   r   r   r   rN   k   s   

rN   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestSignalHandlersc                 C   s8   |    tjjjdtddddd}| j| d S r/   )r2   r   r1   r   r,   r   r4   r5   r6   r   r   r   test_index_on_create   s    
 
 z'TestSignalHandlers.test_index_on_createc                 C   sj   t jjjdtddddd}|   d|_|  | | j	j
d | j	jd	 d	 }| |jd d S )
Nr0   r   r    r!   r"   r#   Updated testr   r   )r   r1   r   r,   r   r2   r$   r&   r   r4   
call_count	call_argsr   r7   r   Zindexed_objectr   r   r   test_index_on_update   s     
 
z'TestSignalHandlers.test_index_on_updatec                 C   s@   t jjjdtddddd}|   |  | j| d S r/   )r   r1   r   r,   r   r2   rP   r5   r6   r   r   r   test_index_on_delete   s     
 
z'TestSignalHandlers.test_index_on_deletec                 C   s   t jjjdtddddd}|   d|_tddd	|_|jd
gd | 	| j
jd | j
jd d }| 	|jd | 	|jtddd d S )Nr0   r   r    r!   r"   r#   rU   i     r$   )Zupdate_fieldsr   r   )r   r1   r   r,   r   r2   r$   r%   r&   r   r4   rV   rW   rX   r   r   r   3test_do_not_index_fields_omitted_from_update_fields   s     
 
zFTestSignalHandlers.test_do_not_index_fields_omitted_from_update_fieldsN)r)   r*   r+   rT   rY   rZ   r\   r   r   r   r   rS      s   	rS   c                   @   s   e Zd Zdd ZdS ) TestSignalHandlersSearchDisabledc                 C   s|   t jjjdtddddd}| | jjd | | jj	 | 
  d|_|  | | jjd | | jj	 d S )	Nr0   r   r    r!   r"   r#   r   rU   )r   ZUnindexedBookr   r,   r   r   r4   rV   r'   rW   r2   r$   r&   r6   r   r   r   test_index_on_create_and_update   s     
 
z@TestSignalHandlersSearchDisabled.test_index_on_create_and_updateN)r)   r*   r+   r^   r   r   r   r   r]      s   r]   N)datetimer   Zunittestr   Zdjango.testr   r   Zwagtail.modelsr   Zwagtail.searchr   Zwagtail.test.searchr   Zwagtail.test.testapp.modelsr	   Zwagtail.test.utilsr
   r   patchr.   rN   rS   r]   r   r   r   r   <module>   sH    9 ) . 