U
    {®ÞhgY  ã                   @   sÈ   d dl 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 G dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZeddddœidde d¡G dd„ deƒƒƒZdS )é    N)Úmock)ÚTestCaseÚTransactionTestCase)Úoverride_settings)Úreverse)Úsignal_handlers)Úget_document_modelc                   @   sX  e Zd Zdg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"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Z d<d=„ Z!e"d>d?d@dA„ ƒZ#e"dBd?dCdD„ ƒZ$e"dEd?dFdG„ ƒZ%dHdI„ Z&dJdK„ Z'dLdM„ Z(dNdO„ Z)d>S )PÚTestDocumentListingúdemosite.jsonc                 K   s   | j  tdƒ|¡S ©Nzwagtailapi_v2:documents:listing©ÚclientÚgetr   ©ÚselfÚparams© r   úk/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/api/v2/tests/test_documents.pyÚget_response   s    z TestDocumentListing.get_responsec                 C   s   dd„ |d D ƒS )Nc                 S   s   g | ]}|d  ‘qS ©Úidr   ©Ú.0Údocumentr   r   r   Ú
<listcomp>   s     z<TestDocumentListing.get_document_id_list.<locals>.<listcomp>Úitemsr   ©r   Úcontentr   r   r   Úget_document_id_list   s    z(TestDocumentListing.get_document_id_listc                 C   sN  |   ¡ }|  |jd¡ |  |d d¡ t |j d¡¡}|  d|¡ |  |d t	¡ |  d|d ¡ |  |d d t
¡ |  |d d tƒ j ¡ ¡ |  d|¡ |  |d t¡ |d D ]}|  d|¡ |  |d t	¡ |  t|d  ¡ ƒdd	d
dh¡ |  |d d d¡ |  |d d	 d|d  ¡ |  |d d
  d|d  ¡¡ q¸d S )NéÈ   úContent-typeúapplication/jsonúUTF-8ÚmetaÚtotal_countr   ÚtypeÚ
detail_urlÚdownload_urlÚtagsúwagtaildocs.Documentz'http://localhost/api/main/documents/%d/r   zhttp://localhost/documents/%d/)r   ÚassertEqualÚstatus_codeÚjsonÚloadsr   ÚdecodeÚassertInÚassertIsInstanceÚdictÚintr   ÚobjectsÚcountÚlistÚsetÚkeysZ
assertTrueÚ
startswith©r   Úresponser   r   r   r   r   Ú
test_basic   s>    
 
ÿ
þ

þ
ÿÿzTestDocumentListing.test_basicc                 C   sf   |   ¡ }t |j d¡¡}|d D ]>}|  t| ¡ ƒdddh¡ |  t|d  ¡ ƒdddd	h¡ q"d S )
Nr"   r   r   r#   Útitler%   r&   r'   r(   ©r   r,   r-   r   r.   r*   r6   r7   r9   r   r   r   Útest_fields_defaultJ   s    
þz'TestDocumentListing.test_fields_defaultc                 C   sj   | j dd}t |j d¡¡}|d D ]>}|  t| ¡ ƒdddh¡ |  t|d  ¡ ƒddd	d
h¡ q&d S )Nr<   ©Úfieldsr"   r   r   r#   r%   r&   r'   r(   r=   r9   r   r   r   Útest_fieldsU   s    
þzTestDocumentListing.test_fieldsc                 C   sH   | j dd}t |j d¡¡}|d D ]}|  t| ¡ ƒddh¡ q&d S )Nú-titler?   r"   r   r   r#   r=   r9   r   r   r   Útest_remove_fields`   s    z&TestDocumentListing.test_remove_fieldsc                 C   sh   | j dd}t |j d¡¡}|d D ]<}|  t| ¡ ƒdddh¡ |  t|d  ¡ ƒdd	d
h¡ q&d S )Nú-download_urlr?   r"   r   r   r#   r<   r%   r&   r(   r=   r9   r   r   r   Útest_remove_meta_fieldsg   s     ÿz+TestDocumentListing.test_remove_meta_fieldsc                 C   sH   | j dd}t |j d¡¡}|d D ]}|  t| ¡ ƒddh¡ q&d S )Nz%-type,-detail_url,-tags,-download_urlr?   r"   r   r   r<   r=   r9   r   r   r   Útest_remove_all_meta_fieldsq   s    z/TestDocumentListing.test_remove_all_meta_fieldsc                 C   sH   | j dd}t |j d¡¡}|d D ]}|  t| ¡ ƒddh¡ q&d S )Nú-idr?   r"   r   r#   r<   r=   r9   r   r   r   Útest_remove_id_fieldx   s    z(TestDocumentListing.test_remove_id_fieldc                 C   sj   | j dd}t |j d¡¡}|d D ]>}|  t| ¡ ƒdddh¡ |  t|d  ¡ ƒdd	d
dh¡ q&d S )NÚ*r?   r"   r   r   r#   r<   r%   r&   r(   r'   r=   r9   r   r   r   Útest_all_fields   s    
þz#TestDocumentListing.test_all_fieldsc                 C   sf   | j dd}t |j d¡¡}|d D ]:}|  t| ¡ ƒddh¡ |  t|d  ¡ ƒddd	h¡ q&d S )
Nz*,-title,-download_urlr?   r"   r   r   r#   r%   r&   r(   r=   r9   r   r   r   Ú%test_all_fields_then_remove_somethingŠ   s     ÿz9TestDocumentListing.test_all_fields_then_remove_somethingc                 C   sD   | j dd}t |j d¡¡}|d D ]}|  |d d t¡ q&d S )Nr(   r?   r"   r   r#   )r   r,   r-   r   r.   r0   r5   r9   r   r   r   Útest_fields_tags”   s    z$TestDocumentListing.test_fields_tagsc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Nútitle,*r?   r"   é  Úmessageú/fields error: '*' must be in the first position©r   r,   r-   r   r.   r*   r+   ©r   r:   r   r   r   r   Ú'test_star_in_wrong_position_gives_error›   s     ÿz;TestDocumentListing.test_star_in_wrong_position_gives_errorc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )NZuploaded_by_userr?   r"   rN   rO   z unknown fields: uploaded_by_userrQ   rR   r   r   r   Ú3test_fields_which_are_not_in_api_fields_gives_error¤   s    zGTestDocumentListing.test_fields_which_are_not_in_api_fields_gives_errorc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Nú123,title,abcr?   r"   rN   rO   úunknown fields: 123, abcrQ   rR   r   r   r   Ú%test_fields_unknown_field_gives_error«   s    z9TestDocumentListing.test_fields_unknown_field_gives_errorc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Nú-123,-title,-abcr?   r"   rN   rO   rV   rQ   rR   r   r   r   Ú,test_fields_remove_unknown_field_gives_error²   s    z@TestDocumentListing.test_fields_remove_unknown_field_gives_errorc                 C   s:   | j dd}t |j d¡¡}|  |¡}|  |dg¡ d S )NzJames Joyce)r<   r"   é   ©r   r,   r-   r   r.   r   r*   ©r   r:   r   Zdocument_id_listr   r   r   Útest_filtering_exact_filter»   s    
z/TestDocumentListing.test_filtering_exact_filterc                 C   s:   | j dd}t |j d¡¡}|  |¡}|  |dg¡ d S )Né
   r   r"   r[   r\   r   r   r   Útest_filtering_on_idÂ   s    
z(TestDocumentListing.test_filtering_on_idc                 C   sR   t ƒ jjddj d¡ | jdd}t |j 	d¡¡}|  
|¡}|  |dg¡ d S )Né   r   Útest)r(   r"   )r   r3   r   r(   Úaddr   r,   r-   r   r.   r   r*   r\   r   r   r   Útest_filtering_tagsÉ   s
    
z'TestDocumentListing.test_filtering_tagsc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )NÚabc)Únot_a_fieldr"   rN   rO   zFquery parameter is not an operation or a recognised field: not_a_fieldrQ   rR   r   r   r   Ú(test_filtering_unknown_field_gives_errorÒ   s     ÿþz<TestDocumentListing.test_filtering_unknown_field_gives_errorc                 C   sP   | j dd}t |j d¡¡}|  |¡}|  |dddddd	d
dddddg¡ d S )Nr<   ©Úorderr"   r`   é   r^   rZ   é   é   é   é   é   é   é	   é   r[   r\   r   r   r   Útest_ordering_by_titleà   s    
z*TestDocumentListing.test_ordering_by_titlec                 C   sP   | j dd}t |j d¡¡}|  |¡}|  |dddddd	d
dddddg¡ d S )NrB   rg   r"   rq   rp   ro   rn   rm   rl   rk   rj   rZ   r^   ri   r`   r[   r\   r   r   r   Ú test_ordering_by_title_backwardsç   s    
z4TestDocumentListing.test_ordering_by_title_backwardsc                 C   s`   | j dd}t |j d¡¡}|  |¡}| j dd}t |j d¡¡}|  |¡}|  ||¡ d S )NÚrandomrg   r"   )r   r,   r-   r   r.   r   ZassertNotEqual)r   Z
response_1Z	content_1Zdocument_id_list_1Z
response_2Z	content_2Zdocument_id_list_2r   r   r   Útest_ordering_by_randomî   s    

z+TestDocumentListing.test_ordering_by_randomc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Nz-randomrg   r"   rN   rO   z(cannot order by 'random' (unknown field)rQ   rR   r   r   r   Ú-test_ordering_by_random_backwards_gives_errorù   s     ÿzATestDocumentListing.test_ordering_by_random_backwards_gives_errorc                 C   sB   | j ddd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Nrt   r^   )rh   Úoffsetr"   rN   rO   z,random ordering with offset is not supportedrQ   rR   r   r   r   Ú/test_ordering_by_random_with_offset_gives_error  s     ÿzCTestDocumentListing.test_ordering_by_random_with_offset_gives_errorc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Nre   rg   r"   rN   rO   z-cannot order by 'not_a_field' (unknown field)rQ   rR   r   r   r   Ú*test_ordering_by_unknown_field_gives_error  s     ÿz>TestDocumentListing.test_ordering_by_unknown_field_gives_errorc                 C   s6   | j dd}t |j d¡¡}|  t|d ƒd¡ d S )NrZ   ©Úlimitr"   r   ©r   r,   r-   r   r.   r*   ÚlenrR   r   r   r   Ú"test_limit_only_two_items_returned  s    z6TestDocumentListing.test_limit_only_two_items_returnedc                 C   s>   | j dd}t |j d¡¡}|  |d d tƒ j ¡ ¡ d S )NrZ   rz   r"   r#   r$   ©	r   r,   r-   r   r.   r*   r   r3   r4   rR   r   r   r   Útest_limit_total_count  s    
 
ÿz*TestDocumentListing.test_limit_total_countc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Nrd   rz   r"   rN   rO   z limit must be a positive integerrQ   rR   r   r   r   Ú"test_limit_not_integer_gives_error%  s    z6TestDocumentListing.test_limit_not_integer_gives_errorc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Niè  rz   r"   rN   rO   zlimit cannot be higher than 20rQ   rR   r   r   r   Útest_limit_too_high_gives_error,  s    z3TestDocumentListing.test_limit_too_high_gives_errorN)ZWAGTAILAPI_LIMIT_MAXc                 C   sL   | j dd}t |j d¡¡}|  |jd¡ |  t|d ƒtƒ j	 
¡ ¡ d S )Ni@B rz   r"   r   r   )r   r,   r-   r   r.   r*   r+   r}   r   r3   r4   rR   r   r   r   Ú#test_limit_max_none_gives_no_errors3  s    z7TestDocumentListing.test_limit_max_none_gives_no_errorsr^   c                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Né   rz   r"   rN   rO   zlimit cannot be higher than 10rQ   rR   r   r   r   Ú!test_limit_maximum_can_be_changed;  s    z5TestDocumentListing.test_limit_maximum_can_be_changedrZ   c                 C   s2   |   ¡ }t |j d¡¡}|  t|d ƒd¡ d S )Nr"   r   rZ   r|   rR   r   r   r   Ú#test_limit_default_changes_with_maxC  s    z7TestDocumentListing.test_limit_default_changes_with_maxc                 C   s:   |   ¡ }t |j d¡¡}|  |¡}|  | d¡d¡ d S )Nr"   rl   rm   ©r   r,   r-   r   r.   r   r*   Úindexr\   r   r   r   Ú)test_offset_5_usually_appears_5th_in_listN  s    
z=TestDocumentListing.test_offset_5_usually_appears_5th_in_listc                 C   s>   | j dd}t |j d¡¡}|  |¡}|  | d¡d¡ d S )Nrm   ©rw   r"   rl   r   r‡   r\   r   r   r   Ú test_offset_5_moves_after_offsetT  s    
z4TestDocumentListing.test_offset_5_moves_after_offsetc                 C   s>   | j dd}t |j d¡¡}|  |d d tƒ j ¡ ¡ d S )Nr^   rŠ   r"   r#   r$   r   rR   r   r   r   Útest_offset_total_countZ  s    
 
ÿz+TestDocumentListing.test_offset_total_countc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Nrd   rŠ   r"   rN   rO   z!offset must be a positive integerrQ   rR   r   r   r   Ú#test_offset_not_integer_gives_errorc  s    z7TestDocumentListing.test_offset_not_integer_gives_error)*Ú__name__Ú
__module__Ú__qualname__Úfixturesr   r   r;   r>   rA   rC   rE   rF   rH   rJ   rK   rL   rS   rT   rW   rY   r]   r_   rc   rf   rr   rs   ru   rv   rx   ry   r~   r€   r   r‚   r   rƒ   r…   r†   r‰   r‹   rŒ   r   r   r   r   r   r	      sR   3

						



	r	   c                   @   sL   e Zd ZdgZdd„ Zdd„ Zdd„ Zdd	„ Zed
ddd„ ƒZ	dd„ Z
dS )ÚTestDocumentListingSearchr
   c                 K   s   | j  tdƒ|¡S r   r   r   r   r   r   r   n  s    z&TestDocumentListingSearch.get_responsec                 C   s   dd„ |d D ƒS )Nc                 S   s   g | ]}|d  ‘qS r   r   r   r   r   r   r   r  s     zBTestDocumentListingSearch.get_document_id_list.<locals>.<listcomp>r   r   r   r   r   r   r   q  s    z.TestDocumentListingSearch.get_document_id_listc                 C   s>   | j dd}t |j d¡¡}|  |¡}|  t|ƒdh¡ d S )NÚjames©Úsearchr"   rZ   )r   r,   r-   r   r.   r   r*   r6   r\   r   r   r   Útest_search_for_james_joycet  s    
z5TestDocumentListingSearch.test_search_for_james_joycec                 C   s<   | j ddd}t |j d¡¡}|  |¡}|  |dg¡ d S )Nr“   r<   )r•   rh   r"   rZ   r[   r\   r   r   r   Útest_search_with_order|  s    
z0TestDocumentListingSearch.test_search_with_orderF)ZWAGTAILAPI_SEARCH_ENABLEDc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Nr“   r”   r"   rN   rO   zsearch is disabledrQ   rR   r   r   r   Ú%test_search_when_disabled_gives_error„  s    z?TestDocumentListingSearch.test_search_when_disabled_gives_errorc                 C   sB   | j ddd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Nr“   Zwagtail)r•   r(   r"   rN   rO   z5filtering by tag with a search query is not supportedrQ   rR   r   r   r   Ú-test_search_when_filtering_by_tag_gives_errorŒ  s    þzGTestDocumentListingSearch.test_search_when_filtering_by_tag_gives_errorN)rŽ   r   r   r‘   r   r   r–   r—   r   r˜   r™   r   r   r   r   r’   k  s   
r’   c                   @   s„   e Zd ZdgZdd„ Zdd„ Zdd„ Zedd	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 )ÚTestDocumentDetailr
   c                 K   s   | j  td|fd|¡S )Núwagtailapi_v2:documents:detail©Úargsr   )r   Zimage_idr   r   r   r   r   š  s     ÿzTestDocumentDetail.get_responsec                 C   s"  |   d¡}|  |jd¡ |  |d d¡ t |j d¡¡}|  d|¡ |  |d d¡ |  d|¡ |  |d t	¡ |  d|d ¡ |  |d d d	¡ |  d
|d ¡ |  |d d
 d¡ |  d|d ¡ |  |d d d¡ |  d|¡ |  |d d¡ |  d|d ¡ |  |d d g ¡ d S )Nrn   r   r    r!   r"   r   r#   r%   r)   r&   z&http://localhost/api/main/documents/1/r'   z6http://localhost/documents/1/wagtail_by_markyharky.jpgr<   zWagtail by mark Harkinr(   )
r   r*   r+   r,   r-   r   r.   r/   r0   r1   rR   r   r   r   r;   Ÿ  s0    

 ÿ
þzTestDocumentDetail.test_basicc                 C   sx   t ƒ jjddj d¡ t ƒ jjddj d¡ |  d¡}t |j 	d¡¡}|  
d|d ¡ |  |d d ddg¡ d S )Nrn   r   ZhelloZworldr"   r(   r#   )r   r3   r   r(   rb   r   r,   r-   r   r.   r/   r*   rR   r   r   r   Ú	test_tagsÉ  s    
zTestDocumentDetail.test_tagszhttp://api.example.com/)ÚWAGTAILAPI_BASE_URLc                 C   sD   |   d¡}t |j d¡¡}|  d|d ¡ |  |d d d¡ d S )Nrn   r"   r'   r#   z<http://api.example.com/documents/1/wagtail_by_markyharky.jpg)r   r,   r-   r   r.   r/   r*   rR   r   r   r   Ú&test_download_url_with_custom_base_urlÓ  s    

þz9TestDocumentDetail.test_download_url_with_custom_base_urlc                 C   sL   | j ddd}t |j d¡¡}|  dt| ¡ ƒ¡ |  dt| ¡ ƒ¡ d S )NrZ   rB   r?   r"   r   r<   ©	r   r,   r-   r   r.   r/   r6   r7   ZassertNotInrR   r   r   r   rC   à  s    z%TestDocumentDetail.test_remove_fieldsc                 C   sT   | j ddd}t |j d¡¡}|  dt|d  ¡ ƒ¡ |  dt|d  ¡ ƒ¡ d S )NrZ   rD   r?   r"   r&   r#   r'   r¡   rR   r   r   r   rE   ç  s    z*TestDocumentDetail.test_remove_meta_fieldsc                 C   sL   | j ddd}t |j d¡¡}|  dt| ¡ ƒ¡ |  dt| ¡ ƒ¡ d S )NrZ   rG   r?   r"   r<   r   r¡   rR   r   r   r   rH   î  s    z'TestDocumentDetail.test_remove_id_fieldc                 C   sV   | j ddd}t |j d¡¡}|  t| ¡ ƒddh¡ |  t|d  ¡ ƒdh¡ d S )NrZ   z	_,id,typer?   r"   r   r#   r%   r=   rR   r   r   r   Útest_remove_all_fieldsõ  s    z)TestDocumentDetail.test_remove_all_fieldsc                 C   sB   | j ddd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )NrZ   rM   r?   r"   rN   rO   rP   rQ   rR   r   r   r   rS   ü  s     ÿz:TestDocumentDetail.test_star_in_wrong_position_gives_errorc                 C   sB   | j ddd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )NrZ   Úpathr?   r"   rN   rO   zunknown fields: pathrQ   rR   r   r   r   rT     s    zFTestDocumentDetail.test_fields_which_are_not_in_api_fields_gives_errorc                 C   sB   | j ddd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )NrZ   rU   r?   r"   rN   rO   rV   rQ   rR   r   r   r   rW     s    z8TestDocumentDetail.test_fields_unknown_field_gives_errorc                 C   sB   | j ddd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )NrZ   rX   r?   r"   rN   rO   rV   rQ   rR   r   r   r   rY     s    z?TestDocumentDetail.test_fields_remove_unknown_field_gives_errorc                 C   sB   | j ddd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )NrZ   ztitle(foo,bar)r?   r"   rN   rO   z&'title' does not support nested fieldsrQ   rR   r   r   r   Ú6test_nested_fields_on_non_relational_field_gives_error  s    zITestDocumentDetail.test_nested_fields_on_non_relational_field_gives_errorN)rŽ   r   r   r‘   r   r;   rž   r   r    rC   rE   rH   r¢   rS   rT   rW   rY   r¤   r   r   r   r   rš   —  s   *

	rš   c                   @   s2   e Zd ZdgZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTestDocumentFindr
   c                 K   s   | j  tdƒ|¡S )Nzwagtailapi_v2:documents:findr   r   r   r   r   r   %  s    zTestDocumentFind.get_responsec                 C   sL   |   ¡ }|  |jd¡ |  |d d¡ t |j d¡¡}|  |ddi¡ d S )Né”  r    r!   r"   rO   ú	not found©r   r*   r+   r,   r-   r   r.   rR   r   r   r   Útest_without_parameters(  s
    z(TestDocumentFind.test_without_parametersc                 C   s.   | j dd}| j|dtddgd dd d S )Nrl   r   zhttp://localhostr›   rœ   F)Zfetch_redirect_response)r   ZassertRedirectsr   )r   r:   r   r   r   Útest_find_by_id3  s    ýz TestDocumentFind.test_find_by_idc                 C   sP   | j dd}|  |jd¡ |  |d d¡ t |j d¡¡}|  |ddi¡ d S )	NiÒ  r   r¦   r    r!   r"   rO   r§   r¨   rR   r   r   r   Útest_find_by_id_nonexistent<  s
    z,TestDocumentFind.test_find_by_id_nonexistentN)rŽ   r   r   r‘   r   r©   rª   r«   r   r   r   r   r¥   "  s
   	r¥   Zvarnishz3wagtail.contrib.frontend_cache.backends.HTTPBackendzhttp://localhost:8000)ZBACKENDZLOCATIONzhttp://api.example.com)ZWAGTAILFRONTENDCACHErŸ   z>wagtail.contrib.frontend_cache.backends.http.HTTPBackend.purgec                       sF   e Zd ZdgZe‡ fdd„ƒZe‡ fdd„ƒZdd„ Zdd	„ Z‡  Z	S )
ÚTestDocumentCacheInvalidationr
   c                    s   t ƒ  ¡  t ¡  d S ©N)ÚsuperÚ
setUpClassr   Zregister_signal_handlers©Úcls©Ú	__class__r   r   r¯   U  s    
z(TestDocumentCacheInvalidation.setUpClassc                    s   t ƒ  ¡  t ¡  d S r­   )r®   ÚtearDownClassr   Zunregister_signal_handlersr°   r²   r   r   r´   Z  s    
z+TestDocumentCacheInvalidation.tearDownClassc                 C   s"   t ƒ jjdd ¡  | d¡ d S ©Nrl   r   z,http://api.example.com/api/main/documents/5/)r   r3   r   ÚsaveÚassert_any_call©r   Úpurger   r   r   Útest_resave_document_purges_  s    z9TestDocumentCacheInvalidation.test_resave_document_purgesc                 C   s"   t ƒ jjdd ¡  | d¡ d S rµ   )r   r3   r   Údeleter·   r¸   r   r   r   Útest_delete_document_purgesd  s    z9TestDocumentCacheInvalidation.test_delete_document_purges)
rŽ   r   r   r‘   Úclassmethodr¯   r´   rº   r¼   Ú__classcell__r   r   r²   r   r¬   H  s   r¬   )r,   Zunittestr   Zdjango.testr   r   Zdjango.test.utilsr   Zdjango.urlsr   Zwagtail.api.v2r   Zwagtail.documentsr   r	   r’   rš   r¥   Úpatchr¬   r   r   r   r   Ú<module>   s.     a, &þÿù	