U
    {®Þh!# ã                   @   sø  d dl Z d dlZ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 d dlmZ d d	lmZmZmZ d d
lmZmZmZmZ d dlmZ d dlmZ d dlm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& ddl'm(Z( dd„ Z)G dd„ de(eƒZ*G dd„ de(eƒZ+G dd„ de(eƒZ,G dd„ de(e	ƒZ-G dd„ de(e	ƒZ.G dd„ de(e	ƒZ/G dd „ d e(e	ƒZ0G d!d"„ d"e(e	ƒZ1G d#d$„ d$e(e	ƒZ2G d%d&„ d&e(e	ƒZ3G d'd(„ d(e(e	ƒZ4G d)d*„ d*e(e	ƒZ5G d+d,„ d,e(e	ƒZ6G d-d.„ d.e(e	ƒZ7dZdZdS )/é    N)Úget_user_model)ÚGroupÚ
Permission)ÚTestCase)Úoverride_settings)Úreverse)Útimezone)Úhooks)ÚTestPageDetailÚTestPageListingÚTestPageListingSearch)ÚGroupPagePermissionÚLocaleÚPageÚPageLogEntry)Úmodels)ÚTestPage)Ú
EventIndexÚ	EventPageÚPageWithExcludedCopyFieldÚ
SimplePageÚ
StreamPage)ÚUserProfileé   )ÚAdminAPITestCasec                   C   s   t j ¡ d S )Nr   )r   ÚobjectsÚcount© r   r   új/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/tests/api/test_pages.pyÚget_total_page_count!   s    r   c                   @   s   e Zd ZdgZdd„ Zdd„ Zdd„ Zdd	„ Zd
Zd
Z	dd„ Z
dd„ Zdd„ Z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/d0„ Zd
Zd1d2„ Zd3d4„ Z d
Z!d5d6„ Z"d7d8„ Z#d9d:„ Z$d;d<„ Z%d=d>„ Z&d?d@„ Z'dAdB„ Z(dCdD„ Z)dEdF„ Z*dGdH„ Z+dIdJ„ Z,dKdL„ Z-dMdN„ Z.dOdP„ Z/d
Z0d
Z1dQdR„ Z2dSdT„ Z3dUdV„ Z4dWdX„ Z5dYdZ„ Z6e7d
d[d\d]„ ƒZ8d
S )^ÚTestAdminPageListingúdemosite.jsonc                 K   s   | j  tdƒ|¡S ©Núwagtailadmin_api:pages:listing©ÚclientÚgetr   ©ÚselfÚparamsr   r   r   Úget_response)   s    z!TestAdminPageListing.get_responsec                 C   s   dd„ |d D ƒS )Nc                 S   s   g | ]}|d  ‘qS ©Úidr   ©Ú.0Úpager   r   r   Ú
<listcomp>-   s     z9TestAdminPageListing.get_page_id_list.<locals>.<listcomp>Úitemsr   ©r(   Úcontentr   r   r   Úget_page_id_list,   s    z%TestAdminPageListing.get_page_id_listc                 C   s   t jjddS ©Nz	home-page©Úslug©r   r   r&   ©r(   r   r   r   Úget_homepage/   s    z!TestAdminPageListing.get_homepagec                 C   sŠ  |   ¡ }|  |jd¡ |  |d d¡ t |j d¡¡}|  d|¡ |  |d t	¡ |  d|d ¡ |  |d d t
¡ |  |d d tƒ ¡ |  d|¡ |  |d t¡ |d D ]H}|  d|¡ |  |d t	¡ |  t|d  ¡ ƒdd	d
dddddh¡ q²|  |d t	¡ |  t|d  ¡ ƒdddddddddh	¡ |  t|d d  ¡ ƒddh¡ |  |d d d d¡ |  |d d d d¡ d S )NéÈ   úContent-typeúapplication/jsonúUTF-8ÚmetaÚtotal_countr1   ÚtypeÚ
detail_urlÚhtml_urlÚstatusÚchildrenr7   Úfirst_published_atÚlatest_revision_created_atÚ__typesúdemosite.EventPagezdemosite.StandardIndexPagezdemosite.PersonPageúdemosite.HomePagezdemosite.StandardPagezdemosite.EventIndexPagezdemosite.ContactPageúdemosite.BlogEntryPageúdemosite.BlogIndexPageÚverbose_nameÚverbose_name_pluralz
event pagezevent pages)r*   ÚassertEqualÚstatus_codeÚjsonÚloadsr3   ÚdecodeÚassertInÚassertIsInstanceÚdictÚintr   ÚlistÚsetÚkeys©r(   Úresponser3   r/   r   r   r   Ú
test_basic4   sh    øþ÷þþ ÿþzTestAdminPageListing.test_basicNc                 C   sP   t ƒ }tjjjdd}| ¡  |  ¡ }t |j	 
d¡¡}|  |d d |¡ d S )Né   r+   r>   r?   r@   )r   r   ZBlogEntryPager   r&   Ú	unpublishr*   rQ   rR   r3   rS   rO   )r(   r@   r/   r\   r3   r   r   r   Ú%test_unpublished_pages_appear_in_list|   s    z:TestAdminPageListing.test_unpublished_pages_appear_in_listc                 C   sh   t ƒ }tjjjdd}|jjdd t ƒ }|  ||¡ |  ¡ }t	 
|j d¡¡}|  |d d |¡ d S )Né   r+   Útest)Úpasswordr>   r?   r@   )r   r   ZBlogIndexPager   r&   Zview_restrictionsÚcreaterO   r*   rQ   rR   r3   rS   )r(   r@   r/   Znew_total_countr\   r3   r   r   r   Ú!test_private_pages_appear_in_list†   s    z6TestAdminPageListing.test_private_pages_appear_in_listc                 C   sl   t ƒ jjdd}tjj|ddid |  ¡ }|  |jd¡ |  |d d¡ t 	|j
 d	¡¡}|  d
|¡ d S )Nztest@email.com)ÚemailZpreferred_languageÚse)ÚuserÚdefaultsr;   r<   r=   r>   r?   )r   r   r&   r   Zupdate_or_creater*   rO   rP   rQ   rR   r3   rS   rT   )r(   rh   r\   r3   r   r   r   Ú test_get_in_non_content_language“   s     ÿz5TestAdminPageListing.test_get_in_non_content_languagec              
   C   sR   | j ddd}t |j d¡¡}|d D ]$}|  t| ¡ ƒdddd	d
dh¡ q(d S )NrK   útitle,date,feed_image©rA   Úfieldsr>   r1   r,   r?   ÚtitleÚadmin_display_titleÚdateÚ
feed_image©r*   rQ   rR   r3   rS   rO   rY   rZ   r[   r   r   r   Útest_fields¨   s     ÿ
þz TestAdminPageListing.test_fieldsc                 C   st   | j dd}t |j d¡¡}|d D ]H}|  t| ¡ ƒddddh¡ |  t|d  ¡ ƒd	d
ddddddh¡ q&d S )NrK   ©rA   r>   r1   r,   r?   rn   ro   rA   rB   rC   rE   rD   r7   rF   rG   rr   r[   r   r   r   Útest_fields_default´   s&    
 
ÿøþz(TestAdminPageListing.test_fields_defaultc                 C   sr   | j dd}t |j d¡¡}|d D ]F}|  t| ¡ ƒddddh¡ |  t|d  ¡ ƒd	d
dddddh¡ q&d S )Nz	-html_url©rm   r>   r1   r,   r?   rn   ro   rA   rB   r7   rF   rG   rD   rE   rr   r[   r   r   r   Útest_remove_meta_fieldsÊ   s$    
 
ÿùþz,TestAdminPageListing.test_remove_meta_fieldsc                 C   sJ   | j dd}t |j d¡¡}|d D ]}|  t| ¡ ƒdddh¡ q&d S )Nzc-type,-detail_url,-slug,-first_published_at,-html_url,-latest_revision_created_at,-status,-childrenrv   r>   r1   r,   rn   ro   rr   r[   r   r   r   Útest_remove_all_meta_fieldsß   s    ÿz0TestAdminPageListing.test_remove_all_meta_fieldsc                 C   sH   | j dd}t |j d¡¡}|d D ]}|  t| ¡ ƒddh¡ q&d S )Nz-title,-admin_display_titlerv   r>   r1   r,   r?   rr   r[   r   r   r   Útest_remove_fieldsè   s    z'TestAdminPageListing.test_remove_fieldsc                 C   sJ   | j dd}t |j d¡¡}|d D ]}|  t| ¡ ƒdddh¡ q&d S )Nz-idrv   r>   r1   r?   rn   ro   rr   r[   r   r   r   Útest_remove_id_fieldï   s    z)TestAdminPageListing.test_remove_id_fieldc                 C   s–   | j ddd}t |j d¡¡}|d D ]h}|  t| ¡ ƒdddd	d
ddddddh¡ |  t|d  ¡ ƒdddddddddddddddd d!h¡ q(d S )"NrK   Ú*rl   r>   r1   r,   r?   rn   ro   rp   Úrelated_linksÚtagsÚcarousel_itemsÚbodyrq   Úfeed_image_thumbnailrA   rB   Úshow_in_menusrF   Z	seo_titler7   ÚparentrC   Úsearch_descriptionÚlocaleÚalias_ofrE   ÚdescendantsÚ	ancestorsÚtranslationsrD   rG   rr   r[   r   r   r   Útest_all_fieldsö   sN    
õþïþz$TestAdminPageListing.test_all_fieldsc                 C   sŒ   | j ddd}t |j d¡¡}|d D ]^}|  t| ¡ ƒdddd	d
dddh¡ |  t|d  ¡ ƒdddddddddddddddh¡ q(d S )NrK   z6*,-title,-admin_display_title,-date,-seo_title,-statusrl   r>   r1   r,   r?   r|   r}   r~   r   rq   r€   rA   rB   r   rF   r7   r‚   rC   rƒ   r„   r…   rE   r†   r‡   rˆ   rG   rr   r[   r   r   r   Ú%test_all_fields_then_remove_something"  sJ    þ
øþñþz:TestAdminPageListing.test_all_fields_then_remove_somethingc              
   C   sV   | j ddd}t |j d¡¡}|d D ](}|  t|d  ¡ ƒddd	d
ddh¡ q(d S )NrK   úfeed_image(*)rl   r>   r1   rq   r,   r?   rn   ÚwidthÚheightÚ	thumbnailrr   r[   r   r   r   Útest_all_nested_fieldsL  s     ÿþz+TestAdminPageListing.test_all_nested_fieldsc                 C   sÖ   | j ddd}t |j d¡¡}|d D ]¨}|d }|d k	r(|  |t¡ |  t| 	¡ ƒddd	h¡ |  |d t
¡ |  |d t¡ |  t|d  	¡ ƒd
ddh¡ |  |d d
 d¡ |  |d d d|d  ¡ q(d S )NrK   rk   rl   r>   r1   rq   r,   r?   rn   rA   rB   Údownload_urlúwagtailimages.Imageú*http://localhost/admin/api/main/images/%d/©r*   rQ   rR   r3   rS   rU   rV   rO   rY   rZ   rW   )r(   r\   r3   r/   rq   r   r   r   Útest_fields_foreign_keyX  s*     ÿþ

þz,TestAdminPageListing.test_fields_foreign_keyc              	   C   sZ   | j ddd}t |j d¡¡}|d D ],}|d d }|  |ddd	d
dœddœ¡ q(d S )NrK   r‚   rl   r>   r1   r?   ra   rL   ú(http://localhost/admin/api/main/pages/5/úhttp://localhost/blog-index/)rA   rB   rC   ú
Blog index)r,   r?   rn   )r*   rQ   rR   r3   rS   ZassertDictEqual)r(   r\   r3   r/   r‚   r   r   r   Útest_fields_parentq  s    ýùþz'TestAdminPageListing.test_fields_parentc                 C   s|   | j dd}t |j d¡¡}|d D ]P}|d d }|  t| ¡ ƒddh¡ |  |d t	¡ |  |d d|d	  ¡ q&d S )
Nr†   rv   r>   r1   r?   r   Úlisting_urlz7http://localhost/admin/api/main/pages/?descendant_of=%dr,   )
r*   rQ   rR   r3   rS   rO   rY   rZ   rU   rW   )r(   r\   r3   r/   r†   r   r   r   Útest_fields_descendants†  s    
þz,TestAdminPageListing.test_fields_descendantsc              	   C   s`   | j ddd}t |j d¡¡}|d D ]2}|  t| ¡ ƒdddd	d
h¡ |  |d
 t	¡ q(d S )NrK   ztitle,related_linksrl   r>   r1   r,   r?   rn   ro   r|   ©
r*   rQ   rR   r3   rS   rO   rY   rZ   rU   rX   r[   r   r   r   Útest_fields_child_relation“  s     ÿ
þz/TestAdminPageListing.test_fields_child_relationc                 C   sn   | j ddd}t |j d¡¡}tjtjd |j d¡¡}dddd	d
ddg}|  t	|d d  
¡ ƒ|¡ d S )NrK   z#date,title,feed_image,related_linksrl   r>   ©Úobject_pairs_hookr,   r?   rn   ro   rp   rq   r|   r1   r   ©r*   rQ   rR   r3   rS   ÚJSONDecoderÚcollectionsÚOrderedDictrO   rX   rZ   ©r(   r\   r3   Zfield_orderr   r   r   Útest_fields_ordering   s"     ÿ
ÿù	z)TestAdminPageListing.test_fields_orderingc              	   C   s`   | j ddd}t |j d¡¡}|d D ]2}|  t| ¡ ƒddddd	h¡ |  |d t	¡ q(d S )
NrK   r}   rl   r>   r1   r,   r?   rn   ro   r›   r[   r   r   r   Útest_fields_tags·  s    
 ÿz%TestAdminPageListing.test_fields_tagsc                 C   s  t jjdd}|  ¡ }| |¡}| jdd}t |j 	d¡¡}|d D ]¸}|d d }|d |j
kr¤|  t|ƒd	¡ |  |d
 d |j
¡ |  |d
 d d d¡ qF|d |j
krò|  t|ƒd	¡ |  |d
 d |j
¡ |  |d
 d d d¡ qF|  |g ¡ qFd S )NÚfr©Úlanguage_coderˆ   rv   r>   r1   r?   r,   r   r   r„   Úen)r   r   rd   r:   Úcopy_for_translationr*   rQ   rR   r3   rS   r,   rO   Úlen)r(   ÚfrenchÚhomepageZfrench_homepager\   r3   r/   rˆ   r   r   r   Útest_fields_translationsÁ  s     
z-TestAdminPageListing.test_fields_translationsc                 C   s<   | j dd}t |j d¡¡}|  |¡}|  |ddg¡ d S )NÚroot©Úchild_ofr>   é   é   ©r*   rQ   rR   r3   rS   r4   rO   ©r(   r\   r3   Úpage_id_listr   r   r   Útest_child_of_rootß  s    
z'TestAdminPageListing.test_child_of_rootc                 C   s0   | j dd}t |j d¡¡ |  |jd¡ d S )Nr   r°   r>   r;   ©r*   rQ   rR   r3   rS   rO   rP   ©r(   r\   r   r   r   Útest_child_of_page_1é  s    z)TestAdminPageListing.test_child_of_page_1c                 C   s`   | j dd}t |j d¡¡}|  |¡}|  |dddddd	d
dddddddddddddg¡ d S )Nr¯   ©Zdescendant_ofr>   r²   é   é   é	   ra   r^   é   é   é   é
   é   é   é   é   é   é   é   é   é   r³   r´   rµ   r   r   r   Útest_descendant_of_rootõ  s    
*þz,TestAdminPageListing.test_descendant_of_rootc                 C   s0   | j dd}t |j d¡¡ |  |jd¡ d S )Nr   r»   r>   r;   r¸   r¹   r   r   r   Ú)test_descendant_of_root_doesnt_give_errorÿ  s    z>TestAdminPageListing.test_descendant_of_root_doesnt_give_errorc                 C   s   |j t|dddS )NzSimple page)rn   r3   ©Úinstance)Ú	add_childr   )r(   r‚   rn   r   r   r   Úmake_simple_page  s    z%TestAdminPageListing.make_simple_pagec                 C   sä   |   tjjddd¡}|   |d¡|   |d¡|   |d¡g}|   |d¡|   |d¡|   |d	¡g}| j|jdd
}t |j 	d¡¡}|  
|¡}|  |dd„ |D ƒ¡ | j|jd}t |j 	d¡¡}|  
|¡}|  |dd„ || D ƒ¡ d S )Nr   ©ÚpkZMovieszThe Way of the DragonzEnter the DragonzDragons ForeverzThe Hidden FortresszCrouching Tiger, Hidden Dragonz0Crouching Tiger, Hidden Dragon: Sword of Destiny)r±   Úfor_explorerr>   c                 S   s   g | ]
}|j ‘qS r   rÒ   r-   r   r   r   r0     s     zATestAdminPageListing.test_for_explorer_filter.<locals>.<listcomp>r°   c                 S   s   g | ]
}|j ‘qS r   rÒ   r-   r   r   r   r0   #  s     )rÑ   r   r   r&   r*   rÓ   rQ   rR   r3   rS   r4   rO   )r(   ZmoviesZvisible_moviesZhidden_moviesr\   r3   r¶   r   r   r   Útest_for_explorer_filter  s.    


ý

 ÿý

 ÿz-TestAdminPageListing.test_for_explorer_filterc                 C   s@   | j dd}|  |jd¡ t |j d¡¡}|  |ddi¡ d S )Nr   )rÔ   é  r>   Úmessagez;filtering by for_explorer without child_of is not supported©r*   rO   rP   rQ   rR   r3   rS   ©r(   r\   r3   r   r   r   Útest_for_explorer_no_child_of&  s     ÿþz2TestAdminPageListing.test_for_explorer_no_child_ofc              	   C   sd   dd„ }t  d|¡ | jddd}W 5 Q R X t |j d¡¡}|  |¡}|  |dd	d
ddg¡ d S )Nc                 S   s
   |  d¡S )Nú-title)Zorder_by)Zparent_pageZpagesÚrequestr   r   r   Úset_custom_ordering2  s    zmTestAdminPageListing.test_for_explorer_construct_explorer_page_queryset_ordering.<locals>.set_custom_orderingZ construct_explorer_page_querysetTr²   )rÔ   r±   r>   rÁ   rÈ   r¼   rË   ra   )	r	   Zregister_temporarilyr*   rQ   rR   r3   rS   r4   rO   )r(   rÝ   r\   r3   r¶   r   r   r   Ú;test_for_explorer_construct_explorer_page_queryset_ordering1  s     ÿ
zPTestAdminPageListing.test_for_explorer_construct_explorer_page_queryset_orderingc              
   C   sF   | j dd}t |j d¡¡}|  |¡}|  |dddddd	d
g¡ d S )NÚtrue©Zhas_childrenr>   r²   r¼   ra   rÁ   rÅ   rÈ   r³   r´   rµ   r   r   r   Útest_has_children_filterA  s    
z-TestAdminPageListing.test_has_children_filterc                 C   sT   | j dd}t |j d¡¡}|  |¡}|  |dddddd	d
dddddddg¡ d S )NÚfalserà   r>   r½   r¾   r^   r¿   rÀ   rÂ   rÃ   rÄ   rÆ   rÇ   rÉ   rÊ   rË   é   r´   rµ   r   r   r   Útest_has_children_filter_offH  s    
 ÿz1TestAdminPageListing.test_has_children_filter_offc              
   C   sF   | j dd}t |j d¡¡}|  |¡}|  |dddddd	d
g¡ d S )Nr   rà   r>   r²   r¼   ra   rÁ   rÅ   rÈ   r³   r´   rµ   r   r   r   Útest_has_children_filter_intQ  s    
z1TestAdminPageListing.test_has_children_filter_intc                 C   sT   | j dd}t |j d¡¡}|  |¡}|  |dddddd	d
dddddddg¡ d S )Nr   rà   r>   r½   r¾   r^   r¿   rÀ   rÂ   rÃ   rÄ   rÆ   rÇ   rÉ   rÊ   rË   rã   r´   rµ   r   r   r   Ú test_has_children_filter_int_offX  s    
 ÿz5TestAdminPageListing.test_has_children_filter_int_offc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Né   rà   r>   rÖ   r×   ú&has_children must be 'true' or 'false'r¸   rÙ   r   r   r   Ú(test_has_children_filter_invalid_integera  s    z=TestAdminPageListing.test_has_children_filter_invalid_integerc                 C   s@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )NÚyesrà   r>   rÖ   r×   rè   r¸   rÙ   r   r   r   Ú&test_has_children_filter_invalid_valueh  s    z;TestAdminPageListing.test_has_children_filter_invalid_valuec                 C   s`   | j dd}t |j d¡¡}|d D ]4}|  |d d d¡ |  t| ¡ ƒdddd	h¡ q&d S )
NrK   rt   r>   r1   r?   rA   r,   rn   ro   rr   r[   r   r   r   Ú+test_type_filter_items_are_all_blog_entriesq  s    
 
ÿz@TestAdminPageListing.test_type_filter_items_are_all_blog_entriesc                 C   s²   | j dd}t |j d¡¡}d}d}|d D ]b}|  |d d dd	g¡ |d d dkr`d
}n|d d d	krtd
}|  t| ¡ ƒddddh¡ q.| j	|dd | j	|dd d S )Nz)demosite.BlogEntryPage,demosite.EventPagert   r>   Fr1   r?   rA   rK   rI   Tr,   rn   ro   z%No blog pages were found in the items)Úmsgz&No event pages were found in the items)
r*   rQ   rR   r3   rS   rT   rO   rY   rZ   Ú
assertTrue)r(   r\   r3   Zblog_page_seenZevent_page_seenr/   r   r   r   Útest_type_filter_multiple}  s&    
 ÿ
 
ÿz.TestAdminPageListing.test_type_filter_multiplec                 C   s\   |   ¡ }t |j d¡¡}|  |¡}|  |dddddddd	d
dddddddddddg¡ d S )Nr>   r²   r¼   r½   r¾   ra   r^   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   rË   r³   r´   rµ   r   r   r   Útest_ordering_defaultš  s    
*þz*TestAdminPageListing.test_ordering_defaultc                 C   s`   | j dd}t |j 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   ©Úorderr>   rÅ   rÆ   rÀ   rÇ   ra   r^   r¿   rË   rÊ   r½   r¾   r¼   rã   r²   r³   rÉ   rÈ   rÄ   rÁ   rÂ   r´   rµ   r   r   r   Útest_ordering_by_title¦  s    
*þz+TestAdminPageListing.test_ordering_by_titlec                 C   s`   | j dd}t |j d¡¡}|  |¡}|  |dddddd	d
dddddddddddddg¡ d S )NrÛ   rñ   r>   rÃ   rÂ   rÁ   rÄ   rÈ   rÉ   r³   r²   rã   r¼   r¾   r½   rÊ   rË   r¿   r^   ra   rÇ   rÀ   rÆ   r´   rµ   r   r   r   Ú test_ordering_by_title_backwards²  s    
*þz5TestAdminPageListing.test_ordering_by_title_backwardsc                 C   s8   | j dd}t |j d¡¡}|  |d d tƒ ¡ d S )Nr²   ©Úlimitr>   r?   r@   ©r*   rQ   rR   r3   rS   rO   r   rÙ   r   r   r   Útest_limit_total_count¾  s    z+TestAdminPageListing.test_limit_total_countc                 C   s8   | j dd}t |j d¡¡}|  |d d tƒ ¡ d S )NrÂ   )Úoffsetr>   r?   r@   r÷   rÙ   r   r   r   Útest_offset_total_countÈ  s    z,TestAdminPageListing.test_offset_total_count)ZWAGTAILAPI_LIMIT_MAXc                 C   sF   | j dd}t |j d¡¡}|  |jd¡ |  t|d ƒtƒ ¡ d S )Ni@B rõ   r>   r;   r1   )	r*   rQ   rR   r3   rS   rO   rP   r«   r   rÙ   r   r   r   Ú#test_limit_max_none_gives_no_errorsÒ  s    z8TestAdminPageListing.test_limit_max_none_gives_no_errors)9Ú__name__Ú
__module__Ú__qualname__Úfixturesr*   r4   r:   r]   Z*test_unpublished_pages_dont_appear_in_listZ&test_private_pages_dont_appear_in_listr`   re   rj   Ztest_parent_field_gives_errorrs   ru   rw   rx   ry   rz   r‰   rŠ   r   r”   r˜   rš   rœ   r¤   r¥   r®   Z5test_child_of_page_thats_not_in_same_site_gives_errorr·   rº   Z:test_descendant_of_page_thats_not_in_same_site_gives_errorrÌ   rÍ   rÑ   rÕ   rÚ   rÞ   rá   rä   rå   ræ   ré   rë   rì   rï   Z,test_site_filter_same_hostname_returns_errorZtest_site_filterrð   ró   rô   rø   rú   r   rû   r   r   r   r   r    &   sl   E
	,*



				

r    c                   @   s’   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"S )#ÚTestAdminPageDetailr!   c                 K   s   | j  td|fd|¡S )Núwagtailadmin_api:pages:detail©Úargsr$   )r(   Úpage_idr)   r   r   r   r*   á  s     ÿz TestAdminPageDetail.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dœ¡ |  d|d ¡ |  |d d dddœ¡ |  d|d ¡ |  |d d t	¡ |  t
|d d  ¡ ƒdddh¡ |  |d d d d¡ |  |d d d t	¡ |  t
|d d d  ¡ ƒdd
dh¡ |  |d d d d d¡ |  |d d d d
 d¡ |  |d d d d d¡ |  d|d ¡ |  |d d ¡ |  d|¡ |  d|¡ |  d |¡ |  d!|¡ |  d"|¡ |  d#|¡ |  |d d$¡ |  |d  d%d&g¡ |  |d! t	¡ |  t
|d!  ¡ ƒdddh¡ |  |d! d d'¡ |  |d! d t	¡ |  t
|d! d  ¡ ƒdd
d(h¡ |  |d! d d d)¡ |  |d! d d
 d*¡ |  |d" g ¡ |d# D ]@}|  t
| ¡ ƒddd+d,d-d.h¡ |  t
|d  ¡ ƒdh¡ qr|  |d/ t	¡ |  t
|d/  ¡ ƒd0d1dd2d	d)h¡ |  t
|d/ d  ¡ ƒd3d4h¡ |  |d/ d d3 d5¡ |  |d/ d d4 d6¡ d S )7Nr^   r;   r<   r=   r>   r,   r?   rA   rK   rB   ú)http://localhost/admin/api/main/pages/16/rC   ú&http://localhost/blog-index/blog-post/rD   ÚliveTF©rD   r  Úhas_unpublished_changesrE   r   z2http://localhost/admin/api/main/pages/?child_of=16©r   r™   r‚   rn   ra   rL   r•   r–   r…   rp   r   r}   rq   r|   r~   z
2013-12-02ÚbirdÚwagtailé   r   r‘   z)http://localhost/admin/api/main/images/7/Z	embed_urlÚlinkÚcaptionÚimagerH   zwagtailcore.PagerJ   z"demosite.BlogEntryPageCarouselItemrM   rN   zblog index pagezblog index pages)r*   rO   rP   rQ   rR   r3   rS   rT   rU   rV   rY   rZ   ÚassertIsNone)r(   r\   r3   Zcarousel_itemr   r   r   r]   æ  sÔ    

 ÿ
 ÿ

þ
þþ	"þ ÿþþþþ
þúþþþþzTestAdminPageDetail.test_basicc                 C   s2   |   d¡}t |j d¡¡}|  |d d ¡ d S )Nr²   r>   r?   r‚   )r*   rQ   rR   r3   rS   ÚassertIsNotNonerÙ   r   r   r   Ú)test_meta_parent_id_doesnt_show_root_pagev  s    
z=TestAdminPageDetail.test_meta_parent_id_doesnt_show_root_pagec                 C   sl   |   d¡}t |j d¡¡}tjtjd |j d¡¡}dddddd	d
dddddg}|  t	| 
¡ ƒ|¡ d S )Nr^   r>   r   r,   r?   rn   ro   r   r}   rp   rq   r€   r~   r|   rH   rŸ   r£   r   r   r   Útest_field_ordering}  s&    

ÿôz'TestAdminPageDetail.test_field_orderingc                 C   s^   t jjdd ¡  |  d¡}t |j d¡¡}|  	d|d ¡ |  
|d d dddd	œ¡ d S )
Nr^   r+   r>   rD   r?   ZdraftFTr  )r   r   r&   r_   r*   rQ   rR   r3   rS   rT   rO   rÙ   r   r   r   Útest_meta_status_draft™  s    


þz*TestAdminPageDetail.test_meta_status_draftc                 C   s`   t jjddj ¡  |  d¡}t |j 	d¡¡}|  
d|d ¡ |  |d d ddddœ¡ d S )	Nr^   r+   r>   rD   r?   zlive + draftTr  )r   r   r&   ÚspecificÚsave_revisionr*   rQ   rR   r3   rS   rT   rO   rÙ   r   r   r   Útest_meta_status_live_draft¦  s    


þz/TestAdminPageDetail.test_meta_status_live_draftc                 C   sŠ   t jjdd ¡  t ¡ tjdd }t jjddjj	|d |  
d¡}t |j d¡¡}|  d|d ¡ |  |d d d	d
ddœ¡ d S )Nr^   r+   r   )Údays)Zapproved_go_live_atr>   rD   r?   Z	scheduledFTr  )r   r   r&   r_   r   ÚnowÚdatetimeÚ	timedeltar  r  r*   rQ   rR   r3   rS   rT   rO   )r(   Ztomorrowr\   r3   r   r   r   Útest_meta_status_scheduled³  s    


þz.TestAdminPageDetail.test_meta_status_scheduledc                 C   st   t jjdd ¡  t jjddjdd |  d¡}t |j	 
d¡¡}|  d|d ¡ |  |d d dd	dd
œ¡ d S )Nr^   r+   T)Úexpiredr>   rD   r?   r  Fr  )r   r   r&   r_   ÚfilterÚupdater*   rQ   rR   r3   rS   rT   rO   rÙ   r   r   r   Útest_meta_status_expiredÂ  s    


þz,TestAdminPageDetail.test_meta_status_expiredc                 C   sJ   |   d¡}t |j d¡¡}|  d|d ¡ |  |d d dddœ¡ d S )Nr²   r>   rE   r?   ra   z1http://localhost/admin/api/main/pages/?child_of=2r
  ©r*   rQ   rR   r3   rS   rT   rO   rÙ   r   r   r   Útest_meta_children_for_parentÐ  s    

þþz1TestAdminPageDetail.test_meta_children_for_parentc                 C   sJ   |   d¡}t |j d¡¡}|  d|d ¡ |  |d d dddœ¡ d S )Nr²   r>   r†   r?   r¿   z6http://localhost/admin/api/main/pages/?descendant_of=2r
  r"  rÙ   r   r   r   Útest_meta_descendantsÞ  s    

þþz)TestAdminPageDetail.test_meta_descendantsc                 C   sÔ   |   d¡}t |j d¡¡}|  d|d ¡ |  |d d t¡ |  t	|d d ƒd¡ |  |d d d  
¡ dddd	h¡ |  |d d d d d
¡ |  |d d d d d¡ |  |d d d d d¡ d S )Nr^   r>   r‡   r?   rç   r   r,   rn   ro   ZRootr   z	Home pager²   r—   )r*   rQ   rR   r3   rS   rT   rU   rX   rO   r«   rZ   rÙ   r   r   r   Útest_meta_ancestorsì  s    

þz'TestAdminPageDetail.test_meta_ancestorsc                 C   st  t jjddj}|jdd}|  |j¡}|  |jd¡ |  |d d¡ t	 
|j d¡¡}|  |d	 d
 d¡ |  |d	 d d¡ |  d|d	 ¡ |  |d	 d t¡ |  t|d	 d  ¡ ƒdd	dh¡ |  |d	 d d d¡ |  |d	 d d	 t¡ |  t|d	 d d	  ¡ ƒd
ddh¡ |  |d	 d d	 d
 d¡ |  |d	 d d	 d d¡ |  |d	 d d	 d d¡ d S )Nr^   r+   únew-slug©Úupdate_slugr;   r<   r=   r>   r?   rA   rK   rC   z%http://localhost/blog-index/new-slug/r…   r,   rn   rB   r  r  )r   r   r&   r  Úcreate_aliasr*   r,   rO   rP   rQ   rR   r3   rS   rT   rU   rV   rY   rZ   )r(   ÚoriginalÚaliasr\   r3   r   r   r   Útest_alias_pageü  sF    
 ÿ ÿþ ÿþþz#TestAdminPageDetail.test_alias_pagec                 C   sL   | j ddd}t |j d¡¡}|  dt| ¡ ƒ¡ |  dt| ¡ ƒ¡ d S )Nr^   z»-type,-detail_url,-slug,-first_published_at,-html_url,-descendants,-latest_revision_created_at,-alias_of,-children,-ancestors,-show_in_menus,-seo_title,-parent,-status,-search_descriptionrv   r>   r?   r,   )	r*   rQ   rR   r3   rS   ZassertNotInrY   rZ   rT   rÙ   r   r   r   rx   '  s    þz/TestAdminPageDetail.test_remove_all_meta_fieldsc                 C   sX   | j ddd}t |j d¡¡}|  t| ¡ ƒdddh¡ |  t|d  ¡ ƒdh¡ d S )	Nr^   z	_,id,typerv   r>   r,   r?   rH   rA   rr   rÙ   r   r   r   Útest_remove_all_fields1  s    z*TestAdminPageDetail.test_remove_all_fieldsc              	   C   sH   | j ddd}t |j d¡¡}|  t|d  ¡ ƒdddd	d
dh¡ d S )Nr^   r‹   rv   r>   rq   r,   r?   rn   rŒ   r   rŽ   rr   rÙ   r   r   r   r   8  s    þz*TestAdminPageDetail.test_all_nested_fieldsc                 C   s¼   |   d¡}t |j d¡¡}|d }|  |t¡ |  t| 	¡ ƒdddh¡ |  |d t
¡ |  |d t¡ |  t|d  	¡ ƒddd	h¡ |  |d d d
¡ |  |d d d|d  ¡ d S )Nr^   r>   rq   r,   r?   rn   rA   rB   r   r‘   r’   r“   )r(   r\   r3   rq   r   r   r   r”   A  s     
 ÿ

þz+TestAdminPageDetail.test_fields_foreign_keyN)rü   rý   rþ   rÿ   r*   r]   r  r  r  r  r  r!  r#  r$  r%  r,  rx   r-  r   r”   r   r   r   r   r   Þ  s$    +
	r   c                   @   s*   e Zd ZdgZdd„ Zdd„ Zdd„ ZdS )	ÚTestAdminPageListingSearchr!   c                 K   s   | j  tdƒ|¡S r"   r$   r'   r   r   r   r*   X  s    z'TestAdminPageListingSearch.get_responsec                 C   s   dd„ |d D ƒS )Nc                 S   s   g | ]}|d  ‘qS r+   r   r-   r   r   r   r0   \  s     z?TestAdminPageListingSearch.get_page_id_list.<locals>.<listcomp>r1   r   r2   r   r   r   r4   [  s    z+TestAdminPageListingSearch.get_page_id_listc                 C   s   t jjddS r5   r8   r9   r   r   r   r:   ^  s    z'TestAdminPageListingSearch.get_homepageN)rü   rý   rþ   rÿ   r*   r4   r:   r   r   r   r   r.  U  s   r.  c                       s:   e Zd ZdgZ‡ fdd„Zdd„ Zdd„ Zdd	„ Z‡  ZS )
Ú"TestAdminPageDetailWithStreamFieldú	test.jsonc                    s   t ƒ  ¡  tjjdd| _d S )Nú/home/©Úurl_path)ÚsuperÚsetUpr   r   r&   r­   r9   ©Ú	__class__r   r   r5  e  s    
z(TestAdminPageDetailWithStreamField.setUpc                 C   s   t dd|d}| jj|dS )Nzstream pagezstream-page)rn   r7   r   rÎ   )r   r­   rÐ   )r(   r   Ústream_pager   r   r   Úmake_stream_pagej  s    z3TestAdminPageDetailWithStreamField.make_stream_pagec                 C   sÞ   |   d¡}td|jfd}| j |¡}|  |jd¡ |  |d d¡ t |j	 
d¡¡}|  d|¡ |  |d |j¡ |  d	|¡ |  t|d	 ƒd
¡ |  |d	 d d d¡ |  |d	 d d d¡ |  |d	 d d ¡ d S )Nz"[{"type": "text", "value": "foo"}]r  r  r;   zcontent-typer=   úutf-8r,   r   r   r   rA   ÚtextÚvalueZfoo)r9  r   r,   r%   r&   rO   rP   rQ   rR   r3   rS   rT   r«   rî   ©r(   r8  Zresponse_urlr\   r3   r   r   r   Ú"test_can_fetch_streamfield_contentn  s    
zETestAdminPageDetailWithStreamField.test_can_fetch_streamfield_contentc                 C   sl   |   d¡}td|jfd}| j |¡}t |j d¡¡}|  	|d d d d¡ |  	|d d d	 d
¡ d S )Nz[{"type": "image", "value": 1}]r  r  r:  r   r   rA   r  r<  r   )
r9  r   r,   r%   r&   rQ   rR   r3   rS   rO   r=  r   r   r   Útest_image_block  s    
z3TestAdminPageDetailWithStreamField.test_image_block)	rü   rý   rþ   rÿ   r5  r9  r>  r?  Ú__classcell__r   r   r6  r   r/  b  s
   r/  c                       s2   e Zd ZdgZ‡ fdd„Zdd„ Zdd„ Z‡  ZS )ÚTestCustomAdminDisplayTitler0  c                    s   t ƒ  ¡  tjjdd| _d S )Nz/home/events/saint-patrick/r2  )r4  r5  r   r   r&   Ú
event_pager9   r6  r   r   r5    s    
z!TestCustomAdminDisplayTitle.setUpc                 C   sT   t d| jjfd}| j |¡}t |j d¡¡}|  	|d d¡ |  	|d d¡ d S )Nr  r  r:  rn   úSaint Patrickro   úSaint Patrick (single event))
r   rB  r,   r%   r&   rQ   rR   r3   rS   rO   )r(   Úapi_urlr\   r3   r   r   r   Ú4test_custom_admin_display_title_shown_on_detail_page•  s
    zPTestCustomAdminDisplayTitle.test_custom_admin_display_title_shown_on_detail_pagec                    sx   t dƒ}ˆ j |¡}t |j d¡¡}‡ fdd„|d D ƒ}ˆ  dt|ƒ¡ ˆ  |d d d	¡ ˆ  |d d
 d¡ d S )Nr#   r:  c                    s    g | ]}|d  ˆ j jkr|‘qS r+   )rB  r,   )r.   Úitemr9   r   r   r0   ¢  s     z`TestCustomAdminDisplayTitle.test_custom_admin_display_title_shown_on_listing.<locals>.<listcomp>r1   r   r   rn   rC  ro   rD  )	r   r%   r&   rQ   rR   r3   rS   rO   r«   )r(   rE  r\   r3   Zmatching_itemsr   r9   r   Ú0test_custom_admin_display_title_shown_on_listing  s    
ÿ
 ÿzLTestCustomAdminDisplayTitle.test_custom_admin_display_title_shown_on_listing)rü   rý   rþ   rÿ   r5  rF  rH  r@  r   r   r6  r   rA    s   rA  c                   @   s‚   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S )ÚTestCopyPageActionr0  c                 C   s   | j  td|dgd|¡S )Núwagtailadmin_api:pages:actionÚcopyr  ©r%   Úpostr   ©r(   r  Údatar   r   r   r*   ¯  s     ÿzTestCopyPageAction.get_responsec                 C   s|   |   di ¡}|  |jd¡ t |j d¡¡}tjj	|d d}|  |j
d¡ |  |jd¡ |  |j¡ |  | ¡  ¡ ¡ d S )Nrç   éÉ   r:  r,   r+   ÚEventsúevents-1)r*   rO   rP   rQ   rR   r3   rS   r   r   r&   rn   r7   rî   r  ÚassertFalseÚget_childrenÚexists©r(   r\   r3   Únew_pager   r   r   Útest_copy_page´  s    z!TestCopyPageAction.test_copy_pagec                 C   sb   |   dddi¡}|  |jd¡ t |j d¡¡}tjj	|d d}|  |j
d¡ |  |jd¡ d S )	Nrç   rn   z	New titlerP  r:  r,   r+   rR  )r*   rO   rP   rQ   rR   r3   rS   r   r   r&   rn   r7   rV  r   r   r   Útest_copy_page_change_titleÀ  s    z.TestCopyPageAction.test_copy_page_change_titlec                 C   sT   |   dddi¡}|  |jd¡ t |j d¡¡}tjj	|d d}|  |j
d¡ d S )Nrç   r7   r&  rP  r:  r,   r+   )r*   rO   rP   rQ   rR   r3   rS   r   r   r&   r7   rV  r   r   r   Útest_copy_page_change_slugÊ  s
    z-TestCopyPageAction.test_copy_page_change_slugc                 C   sˆ   |   di ¡}|  |jd¡ t |j d¡¡}tjj	dd}tjj	|d d}|  |j|j¡ |  
|j|j¡ |  |j|j d¡j¡ d S )NrÅ   rP  r:  rÒ   r,   r+   Úspecial_field)r*   rO   rP   rQ   rR   r3   rS   r   r   r&   ÚassertNotEqualr[  Ú_metaÚ	get_fieldÚdefault)r(   r\   r3   Zoriginal_pagerW  r   r   r   Ú*test_copy_page_with_exclude_fields_in_copyÓ  s     ÿz=TestCopyPageAction.test_copy_page_with_exclude_fields_in_copyc                 C   sr   |   dddi¡}|  |jd¡ t |j d¡¡}tjj	|d d}|  |j
d¡ |  |j¡ |  | ¡  ¡ ¡ d S )Nrç   Údestination_page_idrP  r:  r,   r+   rQ  )r*   rO   rP   rQ   rR   r3   rS   r   r   r&   rn   rî   r  rS  rT  rU  rV  r   r   r   Útest_copy_page_destinationá  s    z-TestCopyPageAction.test_copy_page_destinationc                 C   sf   |   dddi¡}|  |jd¡ t |j d¡¡}tjj	|d d}|  |j
d¡ |  | ¡  ¡ ¡ d S )	Nrç   Ú	recursiveTrP  r:  r,   r+   rQ  )r*   rO   rP   rQ   rR   r3   rS   r   r   r&   rn   rî   rT  rU  rV  r   r   r   Útest_copy_page_recursiveì  s     ÿþz+TestCopyPageAction.test_copy_page_recursivec                 C   s`   |   dddi¡}|  |jd¡ t |j d¡¡}tjj	|d d}|  |j
d¡ |  |j¡ d S )	Nrç   Ú	keep_liveFrP  r:  r,   r+   rQ  )r*   rO   rP   rQ   rR   r3   rS   r   r   r&   rn   rS  r  rV  r   r   r   Útest_copy_page_in_draftû  s     ÿþz*TestCopyPageAction.test_copy_page_in_draftc                 C   sŠ   d| j _| j j tjjddd¡ | j j tjjdd¡ | j  	¡  |  
dddd	œ¡}|  |jd
¡ t |j d¡¡}|  |ddi¡ d S )NFÚwagtailadminÚaccess_admin©Zcontent_type__app_labelÚcodenameÚEditors©Únamerç   r   )ra  re  é“  r:  Údetailú,You do not have permission to copy this page©rh   Úis_superuserÚuser_permissionsÚaddr   r   r&   Úgroupsr   Úsaver*   rO   rP   rQ   rR   r3   rS   rÙ   r   r   r   ÚDtest_without_publish_permissions_at_destination_with_keep_live_false  s*     ÿÿ
þþ ÿzWTestCopyPageAction.test_without_publish_permissions_at_destination_with_keep_live_falsec                 C   sF   |   ddddœ¡}|  |jd¡ t |j d¡¡}|  |ddi¡ d S )Nrç   T)ra  rc  rÖ   r:  r×   ú5You cannot copy a tree branch recursively into itselfrØ   rÙ   r   r   r   Útest_recursively_copy_into_self$  s    þþþz2TestCopyPageAction.test_recursively_copy_into_selfc                 C   sp   d| j _| j j tjjddd¡ | j  ¡  |  dddi¡}|  	|j
d¡ t |j d	¡¡}|  	|d
di¡ d S )NFrg  rh  ri  rç   ra  r²   rn  r:  ro  rp  ©rh   rr  rs  rt  r   r   r&   rv  r*   rO   rP   rQ   rR   r3   rS   rÙ   r   r   r   Ú.test_without_create_permissions_at_destination4  s(     ÿÿ
 ÿþ ÿzATestCopyPageAction.test_without_create_permissions_at_destinationc                 C   s¤   d| j _| j j tjjddd¡ | j j tjjdd¡ | j  	¡  t
jjtjjddddd	 |  d
ddi¡}|  |jd¡ t |j d¡¡}|  |ddi¡ d S )NFrg  rh  ri  rk  rl  r²   rt  )Úgroupr  Zpermission_typerç   ra  rn  r:  ro  ú?You do not have permission to publish a page at the destination)rh   rr  rs  rt  r   r   r&   ru  r   rv  r   rd   r*   rO   rP   rQ   rR   r3   rS   rÙ   r   r   r   Ú>test_without_publish_permissions_at_destination_with_keep_liveJ  s8     ÿÿ
  ÿ ÿþþþzQTestCopyPageAction.test_without_publish_permissions_at_destination_with_keep_livec                 C   s@   |   di ¡}|  |jd¡ t |j d¡¡}|  |ddi¡ d S )Nr²   rn  r:  ro  rp  rØ   rÙ   r   r   r   Ú!test_respects_page_creation_rulesj  s     ÿz4TestCopyPageAction.test_respects_page_creation_rulesc                 C   sF   |   dddi¡}|  |jd¡ t |j d¡¡}|  |ddgi¡ d S )Nrç   r7   ÚeventsrÖ   r:  zAThe slug 'events' is already in use within the parent page at '/'rØ   rÙ   r   r   r   Útest_copy_page_slug_in_uset  s     ÿþÿÿþz-TestCopyPageAction.test_copy_page_slug_in_useN)rü   rý   rþ   rÿ   r*   rX  rY  rZ  r`  rb  rd  rf  rw  ry  r{  r~  r  r  r   r   r   r   rI  ¬  s   
	 
rI  c                       sB   e Zd ZdgZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Z‡  Z	S )ÚTestConvertAliasPageActionr0  c                    sN   t ƒ  ¡  tjjdd| _tdddd| _| jj| jd | jj	dd	| _
d S )
Nr²   r+   zHello world!zhello-worldZhello)rn   r7   r3   rÎ   z
alias-pager'  )r4  r5  r   r   r&   Ú	root_pager   Ú
child_pagerÐ   r)  Ú
alias_pager9   r6  r   r   r5  ‹  s    
  ÿz TestConvertAliasPageAction.setUpc                 C   s   | j  td|dgd¡S )NrJ  Zconvert_aliasr  rL  ©r(   r  r   r   r   r*   š  s    ÿz'TestConvertAliasPageAction.get_responsec                 C   sÐ   |   | jj¡}|  |jd¡ | j ¡  |  | jj¡ | jj 	¡ }|  |j
| j
¡ |  | jj|¡ tjj	dd}|  |j¡ |  |jd| jj| j ¡ dœi¡ |  |j| jj¡ |  |j|¡ |  |j
| j
¡ d S )Nr;   zwagtail.convert_alias)Úactionr/   )r,   rn   )r*   r…  r,   rO   rP   Úrefresh_from_dbr  r…   Z	revisionsr&   rh   Zlive_revisionr   r   rS  Zcontent_changedrO  Zget_admin_display_titler/   Zpage_ptrÚrevision)r(   r\   r‰  Úlogr   r   r   Útest_convert_aliasŸ  s(    
þÿþ	z-TestConvertAliasPageAction.test_convert_aliasc                 C   sB   |   | jj¡}|  |jd¡ t |j d¡¡}|  |ddi¡ d S )NrÖ   r:  r×   z&Page must be an alias to be converted.)	r*   r„  r,   rO   rP   rQ   rR   r3   rS   rÙ   r   r   r   Útest_convert_alias_not_alias¼  s    z7TestConvertAliasPageAction.test_convert_alias_not_aliasc                 C   sL   d| j _| j j tjjddd¡ | j  ¡  |  | j	j
¡}|  |jd¡ d S )NFrg  rh  ri  rn  )rh   rr  rs  rt  r   r   r&   rv  r*   r…  r,   rO   rP   r¹   r   r   r   Ú!test_convert_alias_bad_permissionÃ  s     ÿÿ
z<TestConvertAliasPageAction.test_convert_alias_bad_permission)
rü   rý   rþ   rÿ   r5  r*   r‹  rŒ  r  r@  r   r   r6  r   r‚  ˆ  s   r‚  c                   @   s*   e Zd ZdgZdd„ Zdd„ Zdd„ ZdS )	ÚTestDeletePageActionr0  c                 C   s   | j  td|dgd¡S )NrJ  Údeleter  rL  r†  r   r   r   r*   Ô  s    ÿz!TestDeletePageAction.get_responsec                 C   s4   |   d¡}|  |jd¡ |  tjjdd ¡ ¡ d S )Nr¼   éÌ   r+   )r*   rO   rP   rS  r   r   r  rU  r¹   r   r   r   Útest_delete_pageÙ  s    
z%TestDeletePageAction.test_delete_pagec                 C   s‚   d| j _| j j tjjddd¡ | j  ¡  |  d¡}|  	|j
d¡ t |j d¡¡}|  	|dd	i¡ |  tjjdd
 ¡ ¡ d S )NFrg  rh  ri  r¼   rn  r:  ro  z.You do not have permission to delete this pager+   )rh   rr  rs  rt  r   r   r&   rv  r*   rO   rP   rQ   rR   r3   rS   rî   r   r  rU  rÙ   r   r   r   Ú test_delete_page_bad_permissionsà  s      ÿÿ

 ÿz5TestDeletePageAction.test_delete_page_bad_permissionsN)rü   rý   rþ   rÿ   r*   r‘  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 )ÚTestPublishPageActionr0  c                 C   s   | j  td|dgd¡S )NrJ  Úpublishr  rL  r†  r   r   r   r*   ú  s    ÿz"TestPublishPageAction.get_responsec                 C   sˆ   t jjdd}|  |j¡ |  |j|j¡ |  |jd¡ |  	|j
¡}|  |jd¡ | ¡  |  |j¡ |  |j|j¡ |  |jd¡ d S )Nztentative-unpublished-eventr6   Fr;   T)r   r   r&   r  rF   rO   Zlast_published_atZassertIsr  r*   r,   rP   rˆ  r  )r(   Zunpublished_pager\   r   r   r   Útest_publish_pageÿ  s      ÿ ÿz'TestPublishPageAction.test_publish_pagec                 C   s‚   d| j _| j j tjjddd¡ | j j tjjdd¡ | j  	¡  |  
d¡}|  |jd¡ t |j d	¡¡}|  |d
di¡ d S )NFrg  rh  ri  rk  rl  r¼   rn  r:  ro  z/You do not have permission to publish this pagerq  rÙ   r   r   r   Ú%test_publish_insufficient_permissions  s      ÿÿ

 ÿz;TestPublishPageAction.test_publish_insufficient_permissionsc                 C   sZ   t jjdd}|jdd}|  |j¡}|  |jd¡ t 	|j
 d¡¡}|  |ddi¡ d S )	NÚhomer6   znew-home-pager'  rÖ   r:  r×   z‡page.save_revision() was called on an alias page. Revisions are not required for alias pages as they are an exact copy of another page.)r   r   r&   r)  r*   r,   rO   rP   rQ   rR   r3   rS   )r(   r—  r…  r\   r3   r   r   r   Útest_publish_alias_page#  s    þþz-TestPublishPageAction.test_publish_alias_pageN)rü   rý   rþ   rÿ   r*   r•  r–  r˜  r   r   r   r   r“  ÷  s
   r“  c                   @   sB   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S )ÚTestUnpublishPageActionr0  c                 C   s   | j  td|dgd|¡S )NrJ  r_   r  rL  rN  r   r   r   r*   9  s     ÿz$TestUnpublishPageAction.get_responsec                 C   sJ   |   tjjddj¡ |  di ¡}|  |jd¡ |  tjjddj¡ d S )Nrç   r+   r;   )	rî   r   r   r&   r  r*   rO   rP   rS  r¹   r   r   r   Útest_unpublish_page>  s    z+TestUnpublishPageAction.test_unpublish_pagec                 C   s˜   t jjdd}|  | ¡  ¡ jdd ¡ ¡ |  |j	ddi¡}|  
|jd¡ | ¡  |  |j¡ | ¡ jdd}|  | ¡ ¡ |D ]}|  |j¡ q‚d S )Nr—  r6   F©Úlockedrc  Tr;   ©r   r   r&   rî   Zget_descendantsr  r  rU  r*   r,   rO   rP   rˆ  rS  )r(   r/   r\   Zdescendant_pagesZdescendant_pager   r   r   Ú'test_unpublish_page_include_descendantsG  s    z?TestUnpublishPageAction.test_unpublish_page_include_descendantsc                 C   s‚   t jjdd}|  | ¡  ¡ jdd ¡ ¡ |  |j	ddi¡}|  
|jd¡ | ¡  |  |j¡ |  | ¡  ¡ jdd ¡ ¡ d S )Nzsecret-plansr6   Fr›  rc  r;   r  )r(   r/   r\   r   r   r   Ú1test_unpublish_page_without_including_descendantsY  s    zITestUnpublishPageAction.test_unpublish_page_without_including_descendantsc                 C   s   |   di ¡}|  |jd¡ d S )Ni90  é”  ©r*   rO   rP   r¹   r   r   r   Útest_unpublish_invalid_page_idh  s    z6TestUnpublishPageAction.test_unpublish_invalid_page_idc                 C   sl   d| j _| j j tjjddd¡ | j  ¡  |  di ¡}|  	|j
d¡ t |j d¡¡}|  	|dd	i¡ d S )
NFrg  rh  ri  rç   rn  r:  ro  z1You do not have permission to unpublish this pagerz  rÙ   r   r   r   Ú+test_unpublish_page_insufficient_permissionl  s     ÿÿ
 ÿzCTestUnpublishPageAction.test_unpublish_page_insufficient_permissionN)
rü   rý   rþ   rÿ   r*   rš  rž  rŸ  r¢  r£  r   r   r   r   r™  6  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 )ÚTestMovePageActionr0  c                 C   s   | j  td|dgd|¡S )NrJ  Úmover  rL  rN  r   r   r   r*     s     ÿzTestMovePageAction.get_responsec                 C   s"   |   dddi¡}|  |jd¡ d S )Nr¼   ra  rç   r;   r¡  r¹   r   r   r   Útest_move_page†  s    z!TestMovePageAction.test_move_pagec                 C   sp   d| j _| j j tjjddd¡ | j  ¡  |  dddi¡}|  	|j
d¡ t |j d	¡¡}|  	|d
di¡ d S )NFrg  rh  ri  r¼   ra  rç   rn  r:  ro  zDYou do not have permission to move the page to the target specified.rz  rÙ   r   r   r   Útest_move_page_bad_permissionsŠ  s"     ÿÿ
þþz1TestMovePageAction.test_move_page_bad_permissionsc                 C   sB   |   di ¡}|  |jd¡ t |j d¡¡}|  |ddgi¡ d S )Nr¼   rÖ   r:  ra  úThis field is required.rØ   rÙ   r   r   r   Ú*test_move_page_without_destination_page_id£  s    z=TestMovePageAction.test_move_page_without_destination_page_idN)rü   rý   rþ   rÿ   r*   r¦  r§  r©  r   r   r   r   r¤  ~  s
   r¤  c                       sb   e Zd ZdgZdd„ 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 )ÚTestCopyForTranslationActionr0  c                 C   s   | j  td|dgd|¡S )NrJ  rª   r  rL  rN  r   r   r   r*   ®  s     ÿüz)TestCopyForTranslationAction.get_responsec                    s\   t ƒ  ¡  tjjddj| _tjjdd| _t	jjdd| _
| j ¡ | _tjjdd| _d S )Nr1  r2  ú/home/events/z/home/events/christmas/r¦   r§   )r4  r5  r   r   r&   r  Úen_homepager   Úen_eventindexr   Úen_eventpageÚ
get_parentrƒ  r   rd   Ú	fr_localer9   r6  r   r   r5  ¶  s    
z"TestCopyForTranslationAction.setUpc                 C   s¤   |   | jjddi¡}|  |jd¡ t |j d¡¡}t	j
j|d d}|  | jj|j¡ |  |j| j¡ |  |j| jj¡ |  |jd¡ |  |j¡ |  |j¡ d S )Nr„   r¦   rP  r:  r,   r+   úhome-fr)r*   r¬  r,   rO   rP   rQ   rR   r3   rS   r   r   r&   r\  r„   r°  Útranslation_keyr7   rS  r  rî   r	  )r(   r\   r3   Úfr_homepager   r   r   Ú"test_copy_homepage_for_translation¾  s    z?TestCopyForTranslationAction.test_copy_homepage_for_translationc                 C   sH   |   | jjddi¡}|  |jd¡ t |j d¡¡}|  |ddi¡ d S )Nr„   r¦   rÖ   r:  r×   zParent page is not translated.)	r*   r­  r,   rO   rP   rQ   rR   r3   rS   rÙ   r   r   r   Ú"test_copy_childpage_without_parentÑ  s    z?TestCopyForTranslationAction.test_copy_childpage_without_parentc                 C   sÜ   |   | jjdddœ¡}|  |jd¡ t |j d¡¡}t	j
j|d d}|  | jj|j¡ |  |j| j¡ |  |j| jj¡ |  | jj|j¡ | ¡ }|  | jj|j¡ |  |j| j¡ |  |j| jj¡ |  |jd¡ d S )	Nr¦   T)r„   Úcopy_parentsrP  r:  r,   r+   r±  )r*   r­  r,   rO   rP   rQ   rR   r3   rS   r   r   r&   r\  r„   r°  r²  r7   r¯  r¬  )r(   r\   r3   Zfr_eventindexr³  r   r   r   Ú%test_copy_childpage_with_copy_parentsØ  s&     ÿ ÿzBTestCopyForTranslationAction.test_copy_childpage_with_copy_parentsc                 C   sF   |   | jji ¡}|  |jd¡ t |j d¡¡}|  |ddgi¡ d S )NrÖ   r:  r„   r¨  ©	r*   r¬  r,   rO   rP   rQ   rR   r3   rS   rÙ   r   r   r   Ú#test_copy_for_translation_no_localeð  s    z@TestCopyForTranslationAction.test_copy_for_translation_no_localec                 C   sH   |   | jjddi¡}|  |jd¡ t |j d¡¡}|  |ddi¡ d S )Nr„   Úder   r:  r×   z"No Locale matches the given query.r¸  rÙ   r   r   r   Ú(test_copy_for_translation_unknown_locale÷  s    zETestCopyForTranslationAction.test_copy_for_translation_unknown_localec                 C   sÂ   | j j}| jj}|d }|d }|| j _| j jdd || j_| jjdd |  | j jddddœ¡}|jdksrt‚dd„ | j  ¡ D ƒd	 }|j|ks˜t‚d
d„ | j ¡ D ƒd	 }|j|ks¾t‚d S )Nú-77777T©Z
log_actionr¦   ©r„   r¶  rc  rP  c                 S   s   g | ]}|j jd kr|‘qS ©r¦   ©r„   r¨   ©r.   Z
trans_pager   r   r   r0     s   þz`TestCopyForTranslationAction.test_translating_latest_non_draft_page_revision.<locals>.<listcomp>r   c                 S   s   g | ]}|j jd kr|‘qS r¿  rÀ  rÁ  r   r   r   r0     s   þ)	r­  rn   r®  r  r*   r,   rP   ÚAssertionErrorÚget_translations)r(   Úold_index_titleZold_post_titleÚnew_index_titleZnew_post_titler\   Únew_index_pageÚnew_post_pager   r   r   Ú/test_translating_latest_non_draft_page_revisionþ  s2    
þþüþüzLTestCopyForTranslationAction.test_translating_latest_non_draft_page_revisionc           
      C   sæ   t dddd}| jj|d t dddd}|j|d |j}|d }||_|jd	d
 |j}|d }||_|jd	d
 |  |jdd	d	dœ¡}|jdksšt‚dd„ | 	¡ D ƒd }|j|ks¾t‚dd„ | 	¡ D ƒd }	|	j|ksât‚dS )z+In case when Page have only draft revisionsz
Draft BlogZ
draft_blogF)rn   r7   r  rÎ   zDraft Blog postzdraft_blog-postr¼  Tr½  r¦   r¾  rP  c                 S   s   g | ]}|j jd kr|‘qS r¿  rÀ  rÁ  r   r   r   r0   7  s   þz\TestCopyForTranslationAction.test_translating_latest_draft_page_revision.<locals>.<listcomp>r   c                 S   s   g | ]}|j jd kr|‘qS r¿  rÀ  rÁ  r   r   r   r0   =  s   þN)
r   r¬  rÐ   rn   r  r*   r,   rP   rÂ  rÃ  )
r(   Zdraft_index_pageZdraft_blog_postrÄ  rÅ  Zold_page_titleZnew_page_titler\   rÆ  rÇ  r   r   r   Ú+test_translating_latest_draft_page_revision  sB      ÿ
þþüþüzHTestCopyForTranslationAction.test_translating_latest_draft_page_revision)rü   rý   rþ   rÿ   r*   r5  r´  rµ  r·  r¹  r»  rÈ  rÉ  r@  r   r   r6  r   rª  «  s   rª  c                       sJ   e Zd ZdgZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	‡  Z
S )ÚTestCreatePageAliasActionr0  c                    s.   t ƒ  ¡  tjjdd| _tjjdd| _d S )Nr«  r2  z/home/about-us/)r4  r5  r   r   r&   Úevents_indexr   Úabout_usr9   r6  r   r   r5  H  s    
zTestCreatePageAliasAction.setUpc                 C   s   | j  td|dgd|¡S )NrJ  r)  r  rL  rN  r   r   r   r*   M  s    þz&TestCreatePageAliasAction.get_responsec                 C   sÀ   d| j _| j jdgd | j| j jddid}|  |jd¡ t |j	 
d¡¡}tjj|d	 d
}|  |jt¡ |  |jd¡ |  |jd¡ |  | j j|j¡ |  |jd¡ |  |jj| j ¡ d S )NzDraft titleÚdraft_title)Zupdate_fieldsr(  znew-about-us©rO  rP  r:  r,   r+   zAbout usz/home/new-about-us/)rÌ  rÍ  rv  r*   r,   rO   rP   rQ   rR   r3   rS   r   r   r&   rU   r  r   r7   r\  r3  r…   )r(   r\   r3   Znew_about_usr   r   r   Útest_create_aliasS  s     ÿz+TestCreatePageAliasAction.test_create_aliasc                 C   s¬   | j | jjdddœd}|  |jd¡ t |j d¡¡}t	j
j|d d}| j ¡ jd	d
 ¡ }| ¡ jd	d
 ¡ }|  |d¡ |  |d¡ |  |jd¡ |  |j|¡ d S )NTúnew-events-index©rc  r(  rÎ  rP  r:  r,   r+   Ú	christmasr6   zChild pages weren't copiedz+Child pages were removed from original pagez!/home/new-events-index/christmas/)r*   rË  r,   rO   rP   rQ   rR   r3   rS   r   r   r&   rT  r  Úfirstr  r3  r…   )r(   r\   r3   Znew_events_indexZold_christmas_eventZnew_christmas_eventr   r   r   Útest_create_alias_recursiver  s*    þÿÿ ÿ ÿz5TestCreatePageAliasAction.test_create_alias_recursivec                 C   sP   | j | jjd| jjdœd}|  |jd¡ t |j d¡¡}|  |ddi¡ d S )NT)rc  ra  rÎ  rÖ   r:  r×   rx  )	r*   rË  r,   rO   rP   rQ   rR   r3   rS   rÙ   r   r   r   Ú:test_create_alias_doesnt_copy_recursively_to_the_same_tree“  s    þþzTTestCreatePageAliasAction.test_create_alias_doesnt_copy_recursively_to_the_same_treec                 C   sx   d| j _| j j tjjddd¡ | j  ¡  | j| j	j
dddœd}|  |jd	¡ t |j d
¡¡}|  |ddi¡ d S )NFrg  rh  ri  TrÐ  rÑ  rÎ  rn  r:  ro  r}  )rh   rr  rs  rt  r   r   r&   rv  r*   rË  r,   rO   rP   rQ   rR   r3   rS   rÙ   r   r   r   Ú-test_create_alias_without_publish_permissions   s(     ÿÿ
þþþzGTestCreatePageAliasAction.test_create_alias_without_publish_permissions)rü   rý   rþ   rÿ   r5  r*   rÏ  rÔ  rÕ  rÖ  r@  r   r   r6  r   rÊ  E  s   !rÊ  c                       sJ   e Zd ZdgZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	‡  Z
S )ÚTestRevertToPageRevisionActionr0  c                    sD   t ƒ  ¡  tjjdd| _| jj ¡ | _d| j_	| jj ¡  
¡  d S )Nrç   r+   Ú
Evenements)r4  r5  r   r   r&   Úevents_pager  r  Úfirst_revisionrn   r”  r9   r6  r   r   r5  ½  s
    
z$TestRevertToPageRevisionAction.setUpc                 C   s   | j  td|dgd|¡S )NrJ  Zrevert_to_page_revisionr  rL  rN  r   r   r   r*   É  s    þûz+TestRevertToPageRevisionAction.get_responsec                 C   sd   |   | jjd¡ |  | jjd| jji¡}|   |jd¡ | jj ¡  	¡  | j 
¡  |   | jjd¡ d S )NrØ  Úrevision_idr;   rQ  )rO   rÙ  rn   r*   r,   rÚ  rP   r  Zget_latest_revisionr”  rˆ  r¹   r   r   r   Útest_revert_to_page_revisionÒ  s     
ÿ
z;TestRevertToPageRevisionAction.test_revert_to_page_revisionc                 C   sx   d| j _| j j tjjddd¡ | j  ¡  |  | j	j
d| jj
i¡}|  |jd¡ t |j d¡¡}|  |dd	i¡ d S )
NFrg  rh  ri  rÛ  rn  r:  ro  z,You do not have permission to edit this page)rh   rr  rs  rt  r   r   r&   rv  r*   rÙ  r,   rÚ  rO   rP   rQ   rR   r3   rS   rÙ   r   r   r   Ú,test_revert_to_page_revision_bad_permissionsÞ  s$     ÿÿ
 
ÿ ÿzKTestRevertToPageRevisionAction.test_revert_to_page_revision_bad_permissionsc                 C   sF   |   | jji ¡}|  |jd¡ t |j d¡¡}|  |ddgi¡ d S )NrÖ   r:  rÛ  r¨  )	r*   rÙ  r,   rO   rP   rQ   rR   r3   rS   rÙ   r   r   r   Ú0test_revert_to_page_revision_without_revision_idò  s    zOTestRevertToPageRevisionAction.test_revert_to_page_revision_without_revision_idc                 C   sX   |   | jjd¡ |  | jjddi¡}|   |jd¡ t |j 	d¡¡}|   |ddi¡ d S )NrØ  rÛ  iç  r   r:  r×   z$No Revision matches the given query.)
rO   rÙ  rn   r*   r,   rP   rQ   rR   r3   rS   rÙ   r   r   r   Ú,test_revert_to_page_revision_bad_revision_idù  s
    zKTestRevertToPageRevisionAction.test_revert_to_page_revision_bad_revision_id)rü   rý   rþ   rÿ   r5  r*   rÜ  rÝ  rÞ  rß  r@  r   r   r6  r   r×  º  s   	r×  )8r¡   r  rQ   Zdjango.contrib.authr   Zdjango.contrib.auth.modelsr   r   Zdjango.testr   Zdjango.test.utilsr   Zdjango.urlsr   Zdjango.utilsr   r  r	   Zwagtail.api.v2.tests.test_pagesr
   r   r   Zwagtail.modelsr   r   r   r   Zwagtail.test.demositer   Zwagtail.test.i18n.modelsr   Zwagtail.test.testapp.modelsr   r   r   r   r   Zwagtail.users.modelsr   Úutilsr   r   r    r   r.  r/  rA  rI  r‚  rŽ  r“  r™  r¤  rª  rÊ  r×  r   r   r   r   Ú<module>   sT        =  y+ ]I&?H- uJ