U
    |h                     @   s^  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
 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mZmZ d dlmZmZ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( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK d d lLmMZM d d!lNmOZO d d"lPmQZQ G d#d$ d$eZRG d%d& d&eMeZSG d'd( d(eSZTG d)d* d*eZUG d+d, d,eSZVG d-d. d.eSZWG d/d0 d0eSZXG d1d2 d2eSZYG d3d4 d4eMeZZG d5d6 d6eSZ[G d7d8 d8e[Z\G d9d: d:eSZ]G d;d< d<eSZ^G d=d> d>eSZ_G d?d@ d@eSZ`G dAdB dBeSZaG dCdD dDeSZbG dEdF dFeSZcG dGdH dHeSZdG dIdJ dJeSZeG dKdL dLeSZfG dMdN dNeOeSZgG dOdP dPeSZhG dQdR dReSZidSS )T    )datetime)BytesIO)mock)settings)quote)get_permission_codename)
Permission)ContentType)ImproperlyConfigured)date)SimpleTestCaseTestCaseTransactionTestCaseoverride_settings)NoReverseMatchresolvereverse)now)load_workbook)AdminURLFinder)
admin_menusettings_menu)get_edit_handler)versioned_static)ExcelDateFormatter)FieldBlockAdapter)get_dummy_request)get_document_model)get_test_document_file)get_image_model)get_test_image_file)LocaleWorkflowWorkflowContentType)SnippetChooserBlock)register_snippet)SnippetViewSet)AdminSnippetChooser)AdvertDraftStateModelFullFeaturedSnippetModeratedModelRevisableChildModelRevisableModelSnippetChooserModelVariousOnDeleteModel)WagtailTestUtils)AdminTemplateTestUtils)render_timestampc                   @   s   e Zd Zdd ZdS )TestIncorrectRegistrationc              	   C   sD   |  t}tt W 5 Q R X t|j}| d| | d| d S )NZModelViewSetz:must define a `model` attribute or pass a `model` argument)assertRaisesr
   r%   r&   str	exceptionassertIn)selfcmmessage r;   k/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/snippets/tests/test_viewset.pytest_no_model_set_or_passed1   s    
z5TestIncorrectRegistration.test_no_model_set_or_passedN)__name__
__module____qualname__r=   r;   r;   r;   r<   r3   0   s   r3   c                   @   s"   e Zd ZdZdd ZdddZdS )BaseSnippetViewSetTestsNc                 C   s   |   | _d S N)loginuserr8   r;   r;   r<   setUpA   s    zBaseSnippetViewSetTests.setUpr;   c                 C   s   t | jj||dS Nargs)r   modelsnippet_viewsetget_url_namer8   url_namerI   r;   r;   r<   get_urlD   s    zBaseSnippetViewSetTests.get_url)r;   )r>   r?   r@   rJ   rF   rO   r;   r;   r;   r<   rA   >   s   rA   c                       s8   e Zd ZeZ fddZdd Zdd Zdd Z  Z	S )	TestCustomIconc                    sJ   t    | jjjdd| _| j | _| j  d| j_	| j | _
d S )Nztest snippet with custom icontextz'test snippet with custom icon (updated))superrF   rJ   objectscreateobjectsave_revision
revision_1publishrR   
revision_2rE   	__class__r;   r<   rF   K   s    

zTestCustomIcon.setUpc                 C   s
  t | jj}dg dfdg dfd|gdfd|gdfd|gdfd|gdfd	|gdfd
|| jjgdfd|| jj| jjgdfd|| jjgdfg
}|D ]x\}}}| j|d\ | j| 	||}| 
|jd | 
|jd d | j|ddd | |d|  W 5 Q R X qd S )Nlistzheaders/slim_header.htmladdeditdeletezheader.htmlusage	unpublishZworkflow_historyZrevisions_revertZrevisions_compareZrevisions_unschedule)	view_name   header_iconcogicon icon-cog   countzwagtailadmin/shared/)r   rV   pkrX   idrZ   subTestclientgetrO   assertEqualstatus_codecontextassertContainsassertTemplateUsed)r8   rk   Zviewsrc   rI   headerresponser;   r;   r<   test_get_viewsS   s,    




zTestCustomIcon.test_get_viewsc                 C   sr   | j | dt| jjg}| |jd | |d | |j	d d | 
|d | |d | |d d S )Nhistoryrd   z,wagtailadmin/shared/headers/slim_header.htmlre   zicon icon-historyrg   wagtailadmin/shared/header.html)rn   ro   rO   r   rV   rk   rp   rq   rt   rr   rs   assertNotContainsZassertTemplateNotUsedr8   rv   r;   r;   r<   test_get_historym   s    zTestCustomIcon.test_get_historyc                 C   s   t jt| j| _tj | _t	jj
| j| jd d| j_| j  | j| j| j}| j| dt| jj|jg}| |jd | |d | |jd d | |d | |d	 d S )
N)content_typeworkflowzEdited!Zworkflow_history_detailrd   ry   re   zlist-ulzicon icon-list-ulrg   )r	   rT   Zget_for_modeltyperV   r}   r"   firstr~   r#   rU   rR   rW   startrD   rn   ro   rO   r   rk   rl   rp   rq   rt   rr   rs   )r8   Zworkflow_staterv   r;   r;   r<    test_get_workflow_history_detailz   s(    
 z/TestCustomIcon.test_get_workflow_history_detail)
r>   r?   r@   r*   rJ   rF   rw   r|   r   __classcell__r;   r;   r[   r<   rP   H   s
   rP   c                   @   s   e Zd Zdd Zdd ZdS )TestSnippetChooserBlockWithIconc                 C   sh   t t}|d t |}| |d d | |d t | |d jt | |d d d d S )NZtest_snippetchooserblockr   rh      iconrf   )	r$   r*   set_namer   js_argsrp   ZassertIsInstancer'   rJ   )r8   blockr   r;   r;   r<   
test_adapt   s    
z*TestSnippetChooserBlockWithIcon.test_adaptc                 C   sH   t tdd}| \}}}| |d | |tf | |ddi d S )NF)requiredz+wagtail.snippets.blocks.SnippetChooserBlockr   )r$   r*   Zdeconstructrp   )r8   r   pathrI   kwargsr;   r;   r<   test_deconstruct   s
    z0TestSnippetChooserBlockWithIcon.test_deconstructN)r>   r?   r@   r   r   r;   r;   r;   r<   r      s   r   c                       sD   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Z  Z	S )TestSnippetChooserPanelWithIconc                    s   t    t | _| j| j_d| _tjj| jd| _	t
jjtjjdd| j	d}tt
| _| j | _| j|d}| jj||| jd}dd |jD d	 | _d S )
Nz)Test full-featured snippet with icon textrQ   fooadvertfull_featuredinstancer   formrequestc                 S   s    g | ]}t |d ddkr|qS 
field_nameNr   getattr.0panelr;   r;   r<   
<listcomp>   s   z9TestSnippetChooserPanelWithIcon.setUp.<locals>.<listcomp>r   )rS   rF   r   r   rD   rR   r*   rT   rU   full_featured_snippetr.   r(   r   edit_handlerZget_form_class
form_classget_bound_panelchildrenobject_chooser_panel)r8   test_snippetr   r   r[   r;   r<   rF      s,    


  z%TestSnippetChooserPanelWithIcon.setUpc                 C   sL   | j  }| | j| | d| | d| | d| | d| d S )NChoose full-featured snippet$Choose another full-featured snippeticon icon-cog iconicon-snippet)r   render_htmlr7   rR   assertNotIn)r8   
field_htmlr;   r;   r<   test_render_html   s    
z0TestSnippetChooserPanelWithIcon.test_render_htmlc                 C   sv   t  }| j|d}| jj||| jd}dd |jD d }| }| d| | d| | d| | d	| d S )
Nr   r   c                 S   s    g | ]}t |d ddkr|qS r   r   r   r;   r;   r<   r      s   zNTestSnippetChooserPanelWithIcon.test_render_as_empty_field.<locals>.<listcomp>r   r   r   r   r   )	r.   r   r   r   r   r   r   r7   r   )r8   r   r   r   Zsnippet_chooser_panelr   r;   r;   r<   test_render_as_empty_field   s"      z:TestSnippetChooserPanelWithIcon.test_render_as_empty_fieldc                 C   s   t jj}| jt|d}| |jd | |j	d d | j
|ddd | |j	d d |j	 D ]}d|krj| d	|j	|  qj| }| |d
 }| |d d S )Nchooserd   re   rf   rg   rh   ri   r   snippethtmlz&form[data-chooser-modal-creation-form])r*   rK   chooser_viewsetrn   ro   r   rL   rp   rq   rr   rs   keysr   jsonget_soup
assertTrue
select_one)r8   r   rv   keyresponse_jsonsoupr;   r;   r<   test_chooser_popup   s    z2TestSnippetChooserPanelWithIcon.test_chooser_popupc                 C   sv   t jj}| jt|d| jjgd}|	 }| 
|d d | 
|d d t| jj | 
|d d | j d S )NchosenrH   stepresultrl   string)r*   rK   r   rn   ro   r   rL   r   rk   r   rp   r5   rR   r8   r   rv   r   r;   r;   r<   test_chosen   s    
 
z+TestSnippetChooserPanelWithIcon.test_chosenc                 C   sT   t jj}| jt|dddi}| }| |d d | |d d d d S )NrU   rR   zNew snippetr   r   r   r   )	r*   rK   r   rn   postr   rL   r   rp   r   r;   r;   r<   test_create_from_chooser  s     z8TestSnippetChooserPanelWithIcon.test_create_from_chooser)
r>   r?   r@   rF   r   r   r   r   r   r   r;   r;   r[   r<   r      s   
r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestAdminURLsc                 C   s^   t jjdd}|j}| | d | |dd | | d | |jdd d S )	Nr   rQ   Zwagtailsnippets_tests_advertr_   z!wagtailsnippets_tests_advert:editZ#wagtailsnippetchoosers_tests_advertr   z*wagtailsnippetchoosers_tests_advert:choose)	r(   rT   rU   rK   rp   get_admin_url_namespacerL   get_chooser_admin_url_namespacer   r8   r   viewsetr;   r;   r<   test_default_url_namespace  s$    
z(TestAdminURLs.test_default_url_namespacec                 C   s   t jjdd}|j}t|j}d| d}d}| | d | t|	d|gd| t
| j}| ||| | | d	 | t|j	d
| d S )Nr   rQ   z"/admin/snippets/tests/advert/edit//z$/admin/snippets/choose/tests/advert/zsnippets/tests/advertr_   rH   zsnippets/choose/tests/advertr   )r(   rT   rU   rK   r   rk   rp   get_admin_base_pathr   rL   r   rD   get_edit_urlget_chooser_admin_base_pathr   r8   r   r   rk   Zexpected_urlZexpected_choose_urlZ
url_finderr;   r;   r<   test_default_admin_base_path(  s"    

z*TestAdminURLs.test_default_admin_base_pathc                 C   s^   t jjdd}|j}| | d | |dd | | d | |jdd d S )	N
customisedrQ   Zsome_namespacer_   zsome_namespace:editZmy_chooser_namespacer   zmy_chooser_namespace:choose)	r*   rT   rU   rK   rp   r   rL   r   r   r   r;   r;   r<   test_custom_url_namespaceA  s    
z'TestAdminURLs.test_custom_url_namespacec                 C   s   t jjdd}|j}t|j}d| d}d}| | d | t|	d|gd| t
| j}| ||| | | d	 | t|j	d
| d S )Nr   rQ   z"/admin/deep/within/the/admin/edit/r   z/admin/choose/wisely/zdeep/within/the/adminr_   rH   zchoose/wiselyr   )r*   rT   rU   rK   r   rk   rp   r   r   rL   r   rD   r   r   r   r   r;   r;   r<   test_custom_admin_base_pathS  s"    

z)TestAdminURLs.test_custom_admin_base_pathN)r>   r?   r@   r   r   r   r   r;   r;   r;   r<   r     s   r   c                   @   s8   e Zd Zedd Zdd Zdd Zdd Zd	d
 ZdS )TestPaginationc                    sL   t    fddtdD }tj| dd tdD }tj| d S )Nc                    s   g | ]}t d |  dqS )Snippet rR   locale)r*   r   idefault_localer;   r<   r   p  s   z0TestPagination.setUpTestData.<locals>.<listcomp>    c                 S   s   g | ]}t d | dqS )r   rQ   )r(   r   r;   r;   r<   r   u  s     )r!   get_defaultranger*   rT   bulk_creater(   )clsrT   r;   r   r<   setUpTestDatam  s    
zTestPagination.setUpTestDatac                 C   s^   t tjd}| j|}| tj 	 d | 
|d | 
|d | 
||d  d S )Nr]   r   zPage 1 of 2Next?p=2)r   r(   rK   rL   rn   ro   rp   rT   allrj   rs   r8   list_urlrv   r;   r;   r<   test_default_list_paginationx  s    z+TestPagination.test_default_list_paginationc                 C   s^   t tjd}| j|}| tj 	 d | 
|d | 
|d | 
||d  d S )Nr]   r   zPage 1 of 7r   r   )r   r*   rK   rL   rn   ro   rp   rT   r   rj   rs   r   r;   r;   r<   test_custom_list_pagination  s    z*TestPagination.test_custom_list_paginationc                 C   sr   t jj}t|d}t|d}| j|}| t j	 
 d | |d | |d | ||d  d S )Nr   choose_resultsr   zPage 1 of 4r   r   )r(   rK   r   r   rL   rn   ro   rp   rT   r   rj   rs   r8   r   Z
choose_urlZchoose_results_urlrv   r;   r;   r<   test_default_chooser_pagination  s    z.TestPagination.test_default_chooser_paginationc                 C   sr   t jj}t|d}t|d}| j|}| t j	 
 d | |d | |d | ||d  d S )Nr   r   r   zPage 1 of 3r   r   )r*   rK   r   r   rL   rn   ro   rp   rT   r   rj   rs   r   r;   r;   r<   test_custom_chooser_pagination  s    z-TestPagination.test_custom_chooser_paginationN)	r>   r?   r@   classmethodr   r   r   r   r   r;   r;   r;   r<   r   l  s   



r   c                   @   sT   e Zd ZeZi f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 )TestFilterSetClassc                 C   s   | j | d|S Nr]   rn   ro   rO   r8   paramsr;   r;   r<   ro     s    zTestFilterSetClass.getc                 C   s$   t jjddd t jjddd d S NNasi goreng from IndonesiaIDrR   country_codeFish and chips from the UKUKr*   rT   rU   rE   r;   r;   r<   create_test_snippets  s      z'TestFilterSetClass.create_test_snippetsc                 C   s2   |   }|j }td}| d| d| d S Nz$wagtailadmin/js/date-time-chooser.jsz<script src="z"></script>ro   contentdecoder   ZassertTagInHTMLr8   rv   r   Zdatetime_jsr;   r;   r<   #test_get_include_filters_form_media  s    
z6TestFilterSetClass.test_get_include_filters_form_mediac                 C   s(   |   }| |d | j|ddd d S )Nz/There are no full-featured snippets to display.z<label for="id_country_code_0"><input type="radio" name="country_code" value="" id="id_country_code_0" checked>All</label>Tr   ro   rs   r{   r;   r;   r<   test_unfiltered_no_results  s    z-TestFilterSetClass.test_unfiltered_no_resultsc                 C   sH   |    |  }| |d | |d | |d | j|ddd d S )Nr   r   There are 2 matchesr  Tr  r   ro   rs   rz   r{   r;   r;   r<   test_unfiltered_with_results  s    z/TestFilterSetClass.test_unfiltered_with_resultsc                 C   sN   |    | ddi}| |d | |d | |d | j|ddd d S )	Nr    r   r   r  r  Tr  r  r{   r;   r;   r<   test_empty_filter_with_results  s    z1TestFilterSetClass.test_empty_filter_with_resultsc                 C   s   |    | ddi}| |d | j|ddd | |j}|d}| | |d}| | |jd	d
d\}}| 	|| 
d | d| d S )Nr   ZPH*No full-featured snippets match your queryz<label for="id_country_code_2"><input type="radio" name="country_code" value="PH" id="id_country_code_2" checked>Philippines</label>Tr  .w-active-filters.w-pill__removedata-w-swap-src-value?rh   list_resultszcountry_code=PHr   ro   rs   r   r   r   assertIsNotNoneattrssplitrp   rO   r   r8   rv   r   Zactive_filtersclearurlr   r;   r;   r<   test_filtered_no_results  s     



z+TestFilterSetClass.test_filtered_no_resultsc                 C   s   |    | ddi}| |d | |d | j|ddd | |j}|d}| | |d	}| | |jd
dd\}}| 	|| 
d | d| d S )Nr   r   r   There is 1 match<label for="id_country_code_1"><input type="radio" name="country_code" value="ID" id="id_country_code_1" checked>Indonesia</label>Tr  r  r  r  r  rh   r  zcountry_code=IDr  r  r;   r;   r<   test_filtered_with_results  s"    



z-TestFilterSetClass.test_filtered_with_resultsN)r>   r?   r@   r*   rJ   ro   r   r  r  r	  r  r  r  r;   r;   r;   r<   r     s   	r   c                   @   sH   e Zd ZdgZdd ZdddZi fddZd	d
 Zdd Zdd Z	dS )TestFilterSetClassSearchztest_empty.jsonc                 C   s   |    d S rB   )rC   rE   r;   r;   r<   rF     s    zTestFilterSetClassSearch.setUpr;   c                 C   s   t tj||dS rG   )r   r*   rK   rL   rM   r;   r;   r<   rO   
  s    
 z TestFilterSetClassSearch.get_urlc                 C   s   | j | d|S r   r   r   r;   r;   r<   ro     s    zTestFilterSetClassSearch.getc                 C   s$   t jjddd t jjddd d S r   r   rE   r;   r;   r<   r     s      z-TestFilterSetClassSearch.create_test_snippetsc                 C   s8   |    | ddd}| |d | j|ddd d S )Nr   chipsr   qr  r  Tr  r   ro   rs   r{   r;   r;   r<   !test_filtered_searched_no_results  s    z:TestFilterSetClassSearch.test_filtered_searched_no_resultsc                 C   sD   |    | ddd}| |d | |d | j|ddd d S )	Nr   r  r  r   r  z<label for="id_country_code_3"><input type="radio" name="country_code" value="UK" id="id_country_code_3" checked>United Kingdom</label>Tr  r!  r{   r;   r;   r<   #test_filtered_searched_with_results$  s    z<TestFilterSetClassSearch.test_filtered_searched_with_resultsN)r;   )
r>   r?   r@   ZfixturesrF   rO   ro   r   r"  r#  r;   r;   r;   r<   r    s   

r  c                       sd   e Zd ZeZ fddZi fddZdd Zdd Zd	d
 Z	dd Z
dd Zdd Zdd Z  ZS )TestListFilterWithListc                    s"   t    t | _| j | _d S rB   )rS   rF   r   r   	isoformatdate_strrE   r[   r;   r<   rF   3  s    
zTestListFilterWithList.setUpc                 C   s   | j | d|S r   r   r   r;   r;   r<   ro   8  s    zTestListFilterWithList.getc                 C   s(   | j jjdd | j jjd| jd d S )NThe first created objectrQ   A second one after that)rR   first_published_at)rJ   rT   rU   r   rE   r;   r;   r<   r   ;  s
    z+TestListFilterWithList.create_test_snippetsc                 C   s2   |   }|j }td}| d| d| d S r   r   r  r;   r;   r<   r  B  s    
z:TestListFilterWithList.test_get_include_filters_form_mediac                 C   sZ   |   }| d}| j|d| jjj d| ddd | j|ddd | j|ddd d S )	Nr^   z<p>There are no z* to display.
            Why not <a href="z">add one</a>?</p>Tr  u<label class="w-field__label" for="id_first_published_at" id="id_first_published_at-label">First published at</label>[<input type="text" name="first_published_at" autocomplete="off" id="id_first_published_at">)ro   rO   rs   rJ   _metaverbose_name_plural)r8   rv   add_urlr;   r;   r<   r  J  s&    
z1TestListFilterWithList.test_unfiltered_no_resultsc                 C   sX   |    |  }| |d | |d | |d | j|ddd | j|ddd d S )Nr'  r(  r  r*  Tr  r+  r  r{   r;   r;   r<   r	  ^  s    z3TestListFilterWithList.test_unfiltered_with_resultsc                 C   s^   |    | ddi}| |d | |d | |d | j|ddd | j|d	dd d S )
Nr)  r
  r'  r(  r  r*  Tr  zd<input type="text" name="first_published_at" value="" autocomplete="off" id="id_first_published_at">r  r{   r;   r;   r<   r  o  s    z5TestListFilterWithList.test_empty_filter_with_resultsc                 C   sT   |    | ddi}| |d| jjj d | j|ddd | j|ddd d S )	Nr)  z
1970-01-01zNo z match your queryr*  Tr  zn<input type="text" name="first_published_at" value="1970-01-01" autocomplete="off" id="id_first_published_at">)r   ro   rs   rJ   r,  r-  r{   r;   r;   r<   r    s     z/TestListFilterWithList.test_filtered_no_resultsc                 C   s^   |    | d| ji}| |d | |d | j|ddd | j|d| j ddd d S )	Nr)  r(  r  r*  Tr  z4<input type="text" name="first_published_at" value="z0" autocomplete="off" id="id_first_published_at">)r   ro   r&  rs   r{   r;   r;   r<   r    s    z1TestListFilterWithList.test_filtered_with_results)r>   r?   r@   r)   rJ   rF   ro   r   r  r  r	  r  r  r  r   r;   r;   r[   r<   r$  0  s   r$  c                   @   s   e Zd ZeZdd ZdS )TestListFilterWithDictc                 C   sR   |    | ddi}| |d | |d | j|ddd | j|ddd d S )	NZtext__containsz
second oner(  r  zh<label class="w-field__label" for="id_text__contains" id="id_text__contains-label">Text contains</label>Tr  zS<input type="text" name="text__contains" value="second one" id="id_text__contains">r!  r{   r;   r;   r<   #test_filtered_contains_with_results  s    z:TestListFilterWithDict.test_filtered_contains_with_resultsN)r>   r?   r@   r+   rJ   r0  r;   r;   r;   r<   r/    s   r/  c                   @   s@   e Zd ZeZedd Zi fddZdd Zdd Z	d	d
 Z
dS )TestListViewWithCustomColumnsc                 C   s(   | j jjddd | j jjddd d S )NzFrom Indonesiar   r   zFrom the UKr   )rJ   rT   rU   r   r;   r;   r<   r     s    z+TestListViewWithCustomColumns.setUpTestDatac                 C   s   | j | d|S r   r   r   r;   r;   r<   ro     s    z!TestListViewWithCustomColumns.getc                 C   s   |   }| |d | |d | |d | |d | |d | |d | |d | d}|d	 }| j||d
d | |j}|d}| t|d d S )NTextCountry codeCustom FOO columnZUpdatedz
Modulo twoZTristateFoo UKr]   z?ordering=country_coder   ri   #listing-results table th   )ro   rs   rO   r   r   selectrp   len)r8   rv   r   Zsort_country_code_urlr   Zheadingsr;   r;   r<   test_custom_columns  s    

z1TestListViewWithCustomColumns.test_custom_columnsc                 C   s   |   }| j|dddd d S )Nz
<td>0</td>Trh   r   rj   r  r{   r;   r;   r<   test_falsy_value  s    z.TestListViewWithCustomColumns.test_falsy_valuec                 C   sR   | j jjdd |  }| j|dddd | j|dddd | j|dddd d S )	NzAnother onerQ   a  
            <td>
                <svg class="icon icon-success default w-text-positive-100" aria-hidden="true">
                    <use href="#icon-success"></use>
                </svg>
                <span class="w-sr-only">True</span>
            </td>
            Trh   r<  a  
            <td>
                <svg class="icon icon-error default w-text-critical-100" aria-hidden="true">
                    <use href="#icon-error"></use>
                </svg>
                <span class="w-sr-only">False</span>
            </td>
            z
            <td>
                <svg class="icon icon-help default" aria-hidden="true">
                    <use href="#icon-help"></use>
                </svg>
                <span class="w-sr-only">None</span>
            </td>
            )rJ   rT   rU   ro   rs   r{   r;   r;   r<   test_boolean_column  s(    z1TestListViewWithCustomColumns.test_boolean_columnN)r>   r?   r@   r*   rJ   r   r   ro   r;  r=  r>  r;   r;   r;   r<   r1    s   
r1  c                       s8   e Zd ZeZ fddZdd Zdd Zdd Z  Z	S )	TestRelatedFieldListDisplayc                    s4   t    d}tjj|dd| _tjjdd| _d S )Nz!https://example.com/free_exampleszFree Examples)r  rR   zroyale with cheeserQ   )rS   rF   r(   rT   rU   r   r*   ffs)r8   r  r[   r;   r<   rF     s    
z!TestRelatedFieldListDisplay.setUpc                 C   sT   | j jj| jd| _| j| d}| |j	d | 
|d | j
|ddd d S )N)r   r]   rd   Chosen snippet textz	<td></td>Tr  )rJ   rT   rU   r   Zno_ffs_chooserrn   ro   rO   rp   rq   rs   r{   r;   r;   r<   test_empty_foreignkey  s
    z1TestRelatedFieldListDisplay.test_empty_foreignkeyc                 C   sx   | j jj| j| jd| _| j| d}| 	|j
d | |j}dd |dD }| d| | j|dd	d
 d S )Nr   r]   rd   c                 S   s   g | ]}|j d dqS )T)strip)Zget_text)r   ru   r;   r;   r<   r      s   zJTestRelatedFieldListDisplay.test_single_level_relation.<locals>.<listcomp>r7  rA  z<td>royale with cheese</td>Tr  )rJ   rT   rU   r   r@  scmrn   ro   rO   rp   rq   r   r   r9  r7   rs   )r8   rv   r   headersr;   r;   r<   test_single_level_relation  s    z6TestRelatedFieldListDisplay.test_single_level_relationc                 C   st   | j jj| j| jd| _| j }t|j}| j	
| d}| |jd | |d | j|d| ddd d S )	Nr   r]   rd   zLatest revision created atz<td>z</td>Tr  )rJ   rT   rU   r   r@  rD  rW   r2   Z
created_atrn   ro   rO   rp   rq   rs   )r8   Zdummy_revision	timestamprv   r;   r;   r<   test_multi_level_relation'  s    

z5TestRelatedFieldListDisplay.test_multi_level_relation)
r>   r?   r@   r.   rJ   rF   rB  rF  rH  r   r;   r;   r[   r<   r?    s
   r?  c                   @   s4   e Zd ZeZedd Zdd Zdd Zdd Z	d	S )
TestListExportc                 C   sX   | j jjddd d| _tjr$d| _| j jjdd| jdd	}|  |j| _|j| _d S )
N
Pot Noodler   r   z2023-07-01T13:12:11.100z2023-07-01T13:12:11.100ZIndomier   rh   )rR   r   r)  Zsome_number)rJ   rT   rU   r)  r   ZUSE_TZZrefresh_from_db	some_date)r   objr;   r;   r<   r   4  s    zTestListExport.setUpTestDatac                 C   sZ   | j | d}| |d | || dd  | |d | || dd  d S )Nr]   zDownload CSVz?export=csvzDownload XLSXz?export=xlsx)rn   ro   rO   rs   r{   r;   r;   r<   (test_get_not_export_shows_export_buttonsG  s
    z7TestListExport.test_get_not_export_shows_export_buttonsc              	   C   s   | j | dddi}| |jd | |dd |  d}| |d d	 | |d
 d| j	  d| j
j	dd d | |d d| j	  d d S )Nr]   exportcsvrd   Content-Dispositionz4attachment; filename="all-fullfeatured-snippets.csv"
r   zMText,Country code,Custom FOO column,Some date,Some number,First published atrh   zIndomie,ID,Foo ID,z,1, )sepr   zPot Noodle,UK,Foo UK,z,0,)rn   ro   rO   rp   rq   getvaluer   r  rL  r%  r)  )r8   rv   Z
data_linesr;   r;   r<   test_csv_exportN  s&     zTestListExport.test_csv_exportc                 C   s   | j | dddi}| |jd | |dd | }tt|dj}dd	 |j	D }| |d
 ddddddg | |d ddd| j
dtdddddddg | |d ddd| j
d
d g | t|d | |d  jt   d S )!Nr]   rO  Zxlsxrd   rQ  z5attachment; filename="all-fullfeatured-snippets.xlsx")filenamec                 S   s   g | ]}d d |D qS )c                 S   s   g | ]
}|j qS r;   )value)r   cellr;   r;   r<   r   p  s     z>TestListExport.test_xlsx_export.<locals>.<listcomp>.<listcomp>r;   )r   rowr;   r;   r<   r   p  s     z3TestListExport.test_xlsx_export.<locals>.<listcomp>r   r3  r4  r5  z	Some datezSome numberzFirst published atrh   rK  r   zFoo IDi  r8           i r   rJ  r   r6     ZF2)rn   ro   rO   rp   rq   rV  r   r   ZactiverowsrL  r   r:  Znumber_formatr   )r8   rv   Zworkbook_dataZ	worksheetZ
cell_arrayr;   r;   r<   test_xlsx_exporte  sF    zTestListExport.test_xlsx_exportN)
r>   r?   r@   r*   rJ   r   r   rN  rW  ra  r;   r;   r;   r<   rI  1  s   
rI  c                   @   s$   e Zd ZeZedd Zdd ZdS )TestCustomTemplatesc                 C   s   | j jjdd| _d S )NzSome snippetrQ   rJ   rT   rU   rV   r2  r;   r;   r<   r     s    z!TestCustomTemplates.setUpTestDatac           	   
   C   s   t | jj}dg dgfd|gdgfd|gdgfd|gdgfd	g d
dgfdg dgfd|gdgfd}| D ]b\}\}}}| j|dB | j| j||d}|D ]}| || q| j	|ddd W 5 Q R X qjd S )Nr^   z>wagtailsnippets/snippets/tests/fullfeaturedsnippet/create.htmlr_   z(wagtailsnippets/snippets/tests/edit.htmlr`   z$wagtailsnippets/snippets/delete.htmlrb   zAwagtailsnippets/snippets/tests/fullfeaturedsnippet/unpublish.htmlr]   z$tests/fullfeaturedsnippet_index.htmlzEwagtailsnippets/snippets/tests/fullfeaturedsnippet/index_results.htmlr  rx   ztests/snippet_history.html)zwith app label and model namezwith app labelz without app label and model namez,override a view that uses a generic templatezUoverride with index_template_name and index results template with namespaced templatez8override index results template with namespaced templatez"override with get_history_template)caserH   z<p>An added paragraph</p>Tr  )
r   rV   rk   itemsrm   rn   ro   rO   rt   rs   )	r8   rk   Zcasesrd  rc   rI   Ztemplate_namesrv   Ztemplate_namer;   r;   r<   test_template_lookups  sX    
6z)TestCustomTemplates.test_template_lookupsN)r>   r?   r@   r*   rJ   r   r   rf  r;   r;   r;   r<   rb    s   
rb  c                   @   s$   e Zd ZeZedd Zdd ZdS )TestCustomQuerySetc                 C   sH   t  }| jdd|d| jdd|d| jdd|dg}| jj| d S )N
FooSnippetr   )rR   r   r   
BarSnippetr   [HIDDEN]Snippetr!   r   rJ   rT   r   r   r   rT   r;   r;   r<   r     s    z TestCustomQuerySet.setUpTestDatac                 C   s@   | j | dddi}| |d | |d | |d d S )Nr]   r   r   rh  ri  rj  )rn   ro   rO   rs   rz   r{   r;   r;   r<   test_index_view  s    z"TestCustomQuerySet.test_index_viewN)r>   r?   r@   r*   rJ   r   r   rm  r;   r;   r;   r<   rg    s   
	rg  c                   @   s$   e Zd ZeZedd Zdd ZdS )TestCustomOrderingc                 C   sN   t  }| jd|d| jd|d| jd|d| jd|dg}| jj| d S )N
CCCCCCCCCCr   
AAAAAAAAAA
DDDDDDDDDD
BBBBBBBBBBrk  rl  r;   r;   r<   r     s    z TestCustomOrdering.setUpTestDatac                 C   sJ   | j | d}| | jjj | dd |jd D ddddg d S )	Nr]   c                 S   s   g | ]
}|j qS r;   rQ   )r   rM  r;   r;   r<   r     s     z<TestCustomOrdering.test_index_view_order.<locals>.<listcomp>page_objrp  rr  ro  rq  )	rn   ro   rO   ZassertFalserJ   r,  Zorderingrp   rr   r{   r;   r;   r<   test_index_view_order  s    z(TestCustomOrdering.test_index_view_orderN)r>   r?   r@   r*   rJ   r   r   rt  r;   r;   r;   r<   rn    s   

rn  c                   @   sR   e Zd ZeZedd Zi dfddZdd Zdd	 Z	d
d Z
dd Zdd ZdS )TestDjangoORMSearchBackendc                 C   s:   | j jjdd| _| j jjdd| _| j jjdd| _d S )NzWagtail is a Django-based CMSrQ   z&Django is a Python-based web frameworkz)Python is a programming-bas, uh, language)rJ   rT   rU   r   secondthirdr2  r;   r;   r<   r     s    z(TestDjangoORMSearchBackend.setUpTestDatar]   c                 C   s   | j | ||S rB   r   )r8   r   rN   r;   r;   r<   ro     s    zTestDjangoORMSearchBackend.getc                 C   sV   |   }| |jd | |d | t|jd j| j| j	| j
g | |d d S )Nrd   #wagtailsnippets/snippets/index.htmlrs  This field is required.ro   rp   rq   rt   assertCountEqualr]   rr   object_listr   rv  rw  rz   r{   r;   r;   r<   test_simple  s    z&TestDjangoORMSearchBackend.test_simplec                 C   s\   |  ddi}| |jd | |d | t|jd j| j| j	| j
g | |d d S )Nr   r
  rd   rx  rs  ry  rz  r{   r;   r;   r<   test_empty_q)  s    z'TestDjangoORMSearchBackend.test_empty_qc                 C   s   |  |  jd  d S )NZis_searchable)r   ro   rr   rE   r;   r;   r<   test_is_searchable7  s    z-TestDjangoORMSearchBackend.test_is_searchablec                 C   s@   |  ddi}| |jd | t|jd j| j| jg d S )Nr   ZDjangord   rs  )	ro   rp   rq   r{  r]   rr   r|  r   rv  r{   r;   r;   r<   test_search_index_view:  s    
z1TestDjangoORMSearchBackend.test_search_index_viewc                 C   sB   | j ddidd}| |jd | t|jd | j| jg d S )Nr   Pythonr  )rN   rd   r|  )ro   rp   rq   r{  r]   rr   rv  rw  r{   r;   r;   r<   test_search_index_results_viewD  s    
z9TestDjangoORMSearchBackend.test_search_index_results_viewN)r>   r?   r@   r)   rJ   r   r   ro   r}  r~  r  r  r  r;   r;   r;   r<   ru  	  s   

ru  c                       sL   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	  Z
S )TestMenuItemRegistrationc                    s    t    t | _| j| j_d S rB   )rS   rF   r   r   rD   rE   r[   r;   r<   rF   P  s    
zTestMenuItemRegistration.setUpc                 C   s\   t | _t| j}|d }| |jd | |jd | |jd | |j	| 
d d S )NfullfeaturedzFull-Featured MenuItemrf   r]   )r*   rJ   r   render_componentr   rp   namelabel	icon_namer  rO   r8   
menu_itemsitemr;   r;   r<   test_add_to_admin_menuU  s    z/TestMenuItemRegistration.test_add_to_admin_menuc                 C   s\   t | _t| j}|d }| |jd | |jd | |jd | |j	| 
d d S )Nr   publishablesPublishablesr   r]   )r)   rJ   r   r  r   rp   r  r  r  r  rO   r  r;   r;   r<   test_add_to_settings_menu^  s    z2TestMenuItemRegistration.test_add_to_settings_menuc                 C   s   t | j}dd |D }| t|d |d }| |jd | |jd | t|jd t| _	|jd }| |j
d | |jd	 | |jd
 | |j| d t| _	|jd }| |j
d | |jd | |jd
 | |j| d d S )Nc                 S   s   g | ]}|j d kr|qS )
revisablesr  r   r  r;   r;   r<   r   i  s     
 zDTestMenuItemRegistration.test_group_registration.<locals>.<listcomp>rh   r   Z
Revisablestasksr   zrevisable-modelszRevisable Modelsr   r]   zrevisable-child-modelszRevisable Child Models)r   r  r   rp   r:  r  r  r  r-   rJ   r  r  rO   r,   )r8   r  r  Z
group_itemZrevisable_itemZrevisable_child_itemr;   r;   r<   test_group_registrationg  s&    

z0TestMenuItemRegistration.test_group_registrationc                 C   sZ   d| j _| j jtjjddd | j   t	| j
}dd |D }| t|d d S )NFwagtailadminaccess_adminZcontent_type__app_labelcodenamec                 S   s   g | ]}|j d kr|qS )>   r  r  r  r  r  r;   r;   r<   r     s   
zETestMenuItemRegistration.test_limited_permissions.<locals>.<listcomp>r   )rD   is_superuseruser_permissionsr^   r   rT   ro   saver   r  r   rp   r:  r  r;   r;   r<   test_limited_permissions  s     
z1TestMenuItemRegistration.test_limited_permissionsc              
   C   s   t | _d| j_| jjtjjddd | j	  dD ]}| j
|d tjj| jjjt|| jjd}| jj| t| j}|d }| |jd | |jd	 | |jd
 | |j| d | jj| W 5 Q R X q6d S )NFr  r  r  )r^   Zchanger`   )actionr   r  r  r   r]   )r)   rJ   rD   r  r  r^   r   rT   ro   r  rm   r,  	app_labelr   r   r  r   rp   r  r  r  r  rO   remove)r8   r  Z
permissionr  r  r;   r;   r<   test_basic_permissions  s.     
z/TestMenuItemRegistration.test_basic_permissionsc              	   C   s   t | j}dd |D }| t|d |d }| |jd | |jd | |jd | |jt	d |`
td	6}d
|_t | j}dd |D }| t|d W 5 Q R X d S )Nc                 S   s   g | ]}|j d kr|qS snippetsr  r  r;   r;   r<   r     s     
 zlTestMenuItemRegistration.test_snippets_menu_item_hidden_when_all_snippets_have_menu_item.<locals>.<listcomp>rh   r   r  Snippetsr   zwagtailsnippets:indexzJwagtail.snippets.views.snippets.SnippetViewSet.get_menu_item_is_registeredTc                 S   s   g | ]}|j d kr|qS r  r  r  r;   r;   r<   r     s     
 )r   Zmenu_items_for_requestr   rp   r:  r  r  r  r  r   Z_all_have_menu_itemsr   patchZreturn_valuer  )r8   r  r  r  Zmock_registeredr;   r;   r<   ?test_snippets_menu_item_hidden_when_all_snippets_have_menu_item  s"    zXTestMenuItemRegistration.test_snippets_menu_item_hidden_when_all_snippets_have_menu_item)r>   r?   r@   rF   r  r  r  r  r  r  r   r;   r;   r[   r<   r  O  s   		r  c                   @   s   e Zd ZeZdd ZdS )TestCustomFormClassc                 C   st   | j | d}| |d | |d | jjjdd}| j | jdt|j	fd}| |d | |d d S )Nr^   z<input type="text" name="text"z<textarea name="text"Hello WorldrQ   r_   rH   )
rn   ro   rO   rz   rs   rJ   rT   rU   r   rk   )r8   Zadd_viewrM  Z	edit_viewr;   r;   r<   test_get_form_class  s    z'TestCustomFormClass.test_get_form_classN)r>   r?   r@   r)   rJ   r  r;   r;   r;   r<   r    s   r  c                       sX   e Zd ZeZ fddZdd Zdd Zdd Zd	d
 Z	dd Z
dd Zdd Z  ZS )TestInspectViewConfigurationc                    s,   t    | jj| _| jjjddd| _d S )NZPerkedelr   r   )rS   rF   rJ   rK   r   rT   rU   rV   rE   r[   r;   r<   rF     s    

z"TestInspectViewConfiguration.setUpc                 C   s   t | _| jdt| jjfd}| j|}| j|ddd | j|ddd | j|dt	| jj
 ddd | j|d	dd | || jd
t| jjfd | || jdt| jjfd d S )NinspectrH   <dt>Text</dt> <dd>Perkedel</dd>Tr  (<dt>Country code</dt> <dd>Indonesia</dd><dt>Some date</dt> <dd></dd>+<dt>Some attribute</dt> <dd>some value</dd>r_   r`   )r*   rJ   rO   r   rV   rk   rn   ro   rs   r   rL  rz   r8   r  rv   r;   r;   r<   test_enabled  s>    z)TestInspectViewConfiguration.test_enabledc              	   C   sF   t | _| jjjdd}| t | jdt|jfd W 5 Q R X d S )NadrQ   r  rH   )	r(   rJ   rT   rU   r4   r   rO   r   rk   )r8   rV   r;   r;   r<   test_disabled  s    z*TestInspectViewConfiguration.test_disabledc                 C   s   t | _d| j_| jjtjjdddtjj| jj	j
td| jj	d | j  | jdt| jjfd}| j|}| j|dd	d
 | j|dd	d
 | j|dt| jj dd	d
 | || jdt| jjfd | || jdt| jjfd d S )NFr  r  r  r^   r  rH   r  Tr  r  r  r  r_   r`   )r*   rJ   rD   r  r  r^   r   rT   ro   r,  r  r   r  rO   r   rV   rk   rn   rs   r   rL  rz   r  r;   r;   r<   test_only_add_permission  sL     	
z5TestInspectViewConfiguration.test_only_add_permissionc           	      C   sJ  t | _| jdt| jjfd}t|j}dd tdD }t	j
j|d jd}tjj| jdt	j
d	d
}tjj| jd|d	d
}tj|jddddddgi}|2 |" | | j|}W 5 Q R X W 5 Q R X W 5 Q R X | j|dd	d | j|dd	d | j|dt| jj dd	d | j|dd	d | j|dd	d | j|dd	d d S )Nr  rH   c                 S   s    g | ]}t jjd | dqS )zadvertisement rQ   )r(   rT   rU   r   r;   r;   r<   r   2  s     zCTestInspectViewConfiguration.test_custom_fields.<locals>.<listcomp>r_  r   )rk   advertsT)rU   Zsome_querysetfieldsr   rL  Zsome_attributer  r  r  r  r  r  zq
            <dt>Adverts</dt>
            <dd>advertisement 0, advertisement 1, advertisement 2</dd>
            z/<dt>Some queryset</dt> <dd>advertisement 0</dd>)r*   rJ   rO   r   rV   rk   r   funcr   r(   rT   filterr   r  dictview_initkwargsrn   ro   rz   rs   r   rL  )	r8   r  	view_funcr  ZquerysetZmock_managerZmock_querysetZmock_fieldsrv   r;   r;   r<   test_custom_fields-  sx    
      *z/TestInspectViewConfiguration.test_custom_fieldsc              	   C   s   t | _| jdt| jjfd}t|j}tj	
|jddgi | j|}W 5 Q R X | j|ddd | j|ddd | j|d	t| jj d
dd | j|ddd d S )Nr  rH   Zfields_excluderL  r  Tr  r  r  r  r  )r*   rJ   rO   r   rV   rk   r   r  r   r  r  r  rn   ro   rs   rz   r   rL  )r8   r  r  rv   r;   r;   r<   test_exclude_fieldsr  s8    
z0TestInspectViewConfiguration.test_exclude_fieldsc                 C   s   t | _t jjdt d}t jjdt d}| jjj||d}| j	| j
dt|jfd}| |jd | j|d|d	  d
dd | j|ddd | |d|j d | |d | |d | ||jj d d S )Nz
Test image)titlefilezTest document)Zprotected_imageZprotected_documentr  rH   rd   z<dt>Protected image</dt> <dd>zmax-400x400r  Tr  z<dt>Protected document</dt>z	<a href="z">ZTXTu    bytes)r/   rJ   r   rT   rU   r    r   r   rn   ro   rO   r   rk   rp   rq   rs   Zget_renditionZimg_tagr  r  size)r8   imageZdocumentrV   rv   r;   r;   r<   test_image_and_document_fields  s2      z;TestInspectViewConfiguration.test_image_and_document_fieldsc                 C   sb   t | _| jj }| j| jdt|jfd}| 	|j
d | j|ddd | j|ddd d S )Nr  rH   rd   z&<dt>Protected image</dt> <dd>None</dd>Tr  z)<dt>Protected document</dt> <dd>None</dd>)r/   rJ   rT   rU   rn   ro   rO   r   rk   rp   rq   rs   )r8   rV   rv   r;   r;   r<   *test_image_and_document_fields_none_values  s    zGTestInspectViewConfiguration.test_image_and_document_fields_none_values)r>   r?   r@   r*   rJ   rF   r  r  r  r  r  r  r  r   r;   r;   r[   r<   r    s   !*E#r  c                   @   sf   e Zd ZeZejdddg Ze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 )TestBreadcrumbsr  z/admin/snippets/)r  r  c                 C   s   | j jjdd| _d S Nr  rQ   rc  r2  r;   r;   r<   r     s    zTestBreadcrumbs.setUpTestDatac                 C   s0   | j | d}dddg}| ||j d S )Nr]   r
  Full-featured snippetsr  r  rn   ro   rO   assertBreadcrumbsItemsRenderedr   r8   rv   re  r;   r;   r<   rm    s    zTestBreadcrumbs.test_index_viewc                 C   s>   | j | d}| ddddddg}| ||j d S )Nr^   r]   r  r  r
  zNew: Full-featured snippetr  r  r;   r;   r<   test_add_view  s    zTestBreadcrumbs.test_add_viewc                 C   sN   | j | jd| jjfd}| ddddt| jdg}| ||j d S )Nr_   rH   r]   r  r  r
  rn   ro   rO   rV   rk   r5   r  r   r  r;   r;   r<   test_edit_view  s    zTestBreadcrumbs.test_edit_viewc                 C   s,   | j | jd| jjfd}| |j d S )Nr`   rH   )rn   ro   rO   rV   rk   ZassertBreadcrumbsNotRenderedr   r{   r;   r;   r<   test_delete_view  s    z TestBreadcrumbs.test_delete_viewc                 C   sn   | j | jd| jjfd}| ddd| jd| jjfdt| jdddt| jd	g}| ||j d S )
Nrx   rH   r]   r  r  r_   r
  ZHistoryr  r  Zsublabelr  r  r;   r;   r<   test_history_view  s    z!TestBreadcrumbs.test_history_viewc                 C   sn   | j | jd| jjfd}| ddd| jd| jjfdt| jdddt| jd	g}| ||j d S )
Nra   rH   r]   r  r  r_   r
  Usager  r  r  r;   r;   r<   test_usage_view  s    zTestBreadcrumbs.test_usage_viewc                 C   sn   | j | jd| jjfd}| ddd| jd| jjfdt| jdddt| jd	g}| ||j d S )
Nr  rH   r]   r  r  r_   r
  Inspectr  r  r  r;   r;   r<   test_inspect_view  s    z!TestBreadcrumbs.test_inspect_viewN)r>   r?   r@   r*   rJ   r1   Zbase_breadcrumb_itemsr   r   rm  r  r  r  r  r  r  r;   r;   r;   r<   r    s   
r  c                   @   sD   e Zd ZeZdd Zedddd Zdd Zeddd	d
 Z	dS )TestCustomMethodsc                 C   sR   | j | d}| dd }| |j}|jdd|id}| t|d d S )Nr]   r^   ?customised=paramahrefr  r   )rn   ro   rO   r   r   find_allrp   r:  r8   rv   r.  r   linksr;   r;   r<   (test_index_view_get_add_url_is_respected  s
    z:TestCustomMethods.test_index_view_get_add_url_is_respectedT)ZWAGTAIL_I18N_ENABLEDc                 C   sd   t jjdd | j| dd }| dd }| |j}|jdd|id	}| 	t
|d
 d S )NfrZlanguage_coder]   
?locale=frr^   ?locale=fr&customised=paramr  r  r  rh   )r!   rT   rU   rn   ro   rO   r   r   r  rp   r:  r  r;   r;   r<   2test_index_view_get_add_url_is_respected_with_i18n"  s    zDTestCustomMethods.test_index_view_get_add_url_is_respected_with_i18nc                 C   sn   | j | d}| dd }| |j}|dddd}| | |jdd	|id
}| t	|d d S )Nr  r^   r  template
w-teleport#w-slim-header-buttonszdata-controllerzdata-w-teleport-target-valuer  r  r  rh   )
rn   ro   rO   r   r   findr  r  rp   r:  r8   rv   r.  r   r  r  r;   r;   r<   7test_index_results_view_get_add_url_teleports_to_header+  s    
zITestCustomMethods.test_index_results_view_get_add_url_teleports_to_headerc                 C   s   t jjdd | j| dd }| dd }| |j}|ddd	d
}| 	| |j
dd|id}| t|d d S )Nr  r  r  r  r^   r  r  r  r  r  r  r  r  rh   )r!   rT   rU   rn   ro   rO   r   r   r  r  r  rp   r:  r  r;   r;   r<   Atest_index_results_view_get_add_url_teleports_to_header_with_i18n:  s    
zSTestCustomMethods.test_index_results_view_get_add_url_teleports_to_header_with_i18nN)
r>   r?   r@   r*   rJ   r  r   r  r  r  r;   r;   r;   r<   r    s   
r  c                   @   s$   e Zd ZeZedd Zdd ZdS )TestCustomPermissionPolicyc                 C   s   | j jjdd| _d S r  rc  r2  r;   r;   r<   r   O  s    z(TestCustomPermissionPolicy.setUpTestDatac                 C   s   | j | jdt| jjfd}| |jd d| j_	d| j_
| j  | | jj | | j d | j | jdt| jjfd}| |td d S )Nr_   rH   rd   z[FORBIDDEN]ZJoez[FORBIDDEN] JoeZwagtailadmin_home)rn   ro   rO   r   rV   rk   rp   rq   rD   Z
first_name	last_namer  r   r  Zget_full_nameZassertRedirectsr   r{   r;   r;   r<   test_get_edit_view_not_allowedS  s     
 z9TestCustomPermissionPolicy.test_get_edit_view_not_allowedN)r>   r?   r@   r*   rJ   r   r   r  r;   r;   r;   r<   r  L  s   
r  N)jr   ior   Zunittestr   Zdjango.confr   Zdjango.contrib.admin.utilsr   Zdjango.contrib.authr   Zdjango.contrib.auth.modelsr   Z"django.contrib.contenttypes.modelsr	   Zdjango.core.exceptionsr
   Zdjango.template.defaultfiltersr   Zdjango.testr   r   r   r   Zdjango.urlsr   r   r   Zdjango.utils.timezoner   Zopenpyxlr   Zwagtail.admin.admin_url_finderr   Zwagtail.admin.menur   r   Zwagtail.admin.panelsr   Zwagtail.admin.staticfilesr   Zwagtail.admin.views.mixinsr   Zwagtail.blocks.field_blockr   Zwagtail.coreutilsr   Zwagtail.documentsr   Zwagtail.documents.tests.utilsr   Zwagtail.imagesr   Zwagtail.images.tests.utilsr    Zwagtail.modelsr!   r"   r#   Zwagtail.snippets.blocksr$   Zwagtail.snippets.modelsr%   Zwagtail.snippets.views.snippetsr&   Zwagtail.snippets.widgetsr'   Zwagtail.test.testapp.modelsr(   r)   r*   r+   r,   r-   r.   r/   Zwagtail.test.utilsr0   Z!wagtail.test.utils.template_testsr1   Zwagtail.utils.timestampsr2   r3   rA   rP   r   r   r   r   r   r  r$  r/  r1  r?  rI  rb  rg  rn  ru  r  r  r  r  r  r  r;   r;   r;   r<   <module>   st   (

Kf]9_,sT&_GFt nW4