o
    ËÉ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   úb/var/www/html/ndineBlogger/venv/lib/python3.10/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   ó   | j  tdƒ|¡S ©Núwagtailadmin_api:pages:listing©ÚclientÚgetr   ©ÚselfÚparamsr   r   r   Úget_response)   ó   z!TestAdminPageListing.get_responsec                 C   ó   dd„ |d D ƒS )Nc                 S   ó   g | ]}|d  ‘qS ©Úidr   ©Ú.0Úpager   r   r   Ú
<listcomp>-   ó    z9TestAdminPageListing.get_page_id_list.<locals>.<listcomp>Úitemsr   ©r)   Úcontentr   r   r   Úget_page_id_list,   r,   z%TestAdminPageListing.get_page_id_listc                 C   ó   t jjddS ©Nz	home-page©Úslug©r   r   r'   ©r)   r   r   r   Úget_homepage/   ó   z!TestAdminPageListing.get_homepagec                 C   sp  |   ¡ }|  |jd¡ |  |d d¡ t |j d¡¡}|  d|¡ |  |d t	¡ |  d|d ¡ |  |d d t
¡ |  |d d tƒ ¡ |  d|¡ |  |d t¡ |d D ]}|  d|¡ |  |d t	¡ |  t|d  ¡ ƒh d£¡ qY|  |d	 t	¡ |  t|d	  ¡ ƒh d
£¡ |  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_countr6   >   r=   ÚtypeÚstatusÚchildrenÚhtml_urlÚ
detail_urlÚfirst_published_atÚlatest_revision_created_atÚ__types>	   údemosite.PersonPageúdemosite.ContactPageúdemosite.StandardPageúdemosite.EventIndexPageúdemosite.StandardIndexPageúdemosite.HomePageúdemosite.EventPageúdemosite.BlogEntryPageúdemosite.BlogIndexPagerV   Úverbose_nameÚverbose_name_pluralz
event pagezevent pages)r+   ÚassertEqualÚstatus_codeÚjsonÚloadsr8   ÚdecodeÚassertInÚassertIsInstanceÚdictÚintr   ÚlistÚsetÚkeys©r)   Úresponser8   r3   r   r   r   Ú
test_basic4   sD   þþþÿþzTestAdminPageListing.test_basicNc                 C   sP   t ƒ }tjjjdd}| ¡  |  ¡ }t |j	 
d¡¡}|  |d d |¡ d S )Né   r/   rE   rF   rG   )r   r   ÚBlogEntryPager   r'   Ú	unpublishr+   r]   r^   r8   r_   r[   )r)   rG   r3   rh   r8   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)ÚpasswordrE   rF   rG   )r   r   ÚBlogIndexPager   r'   Úview_restrictionsÚcreater[   r+   r]   r^   r8   r_   )r)   rG   r3   Únew_total_countrh   r8   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)ÚemailÚpreferred_languageÚse)ÚuserÚdefaultsrB   rC   rD   rE   rF   )r   r   r'   r   Úupdate_or_creater+   r[   r\   r]   r^   r8   r_   r`   )r)   ry   rh   r8   r   r   r   Ú test_get_in_non_content_language“   s   ÿz5TestAdminPageListing.test_get_in_non_content_languagec                 C   sJ   | j ddd}t |j d¡¡}|d D ]}|  t| ¡ ƒh d£¡ qd S )NrW   útitle,date,feed_image©rH   ÚfieldsrE   r6   >   r0   ÚdaterF   ÚtitleÚ
feed_imageÚadmin_display_title©r+   r]   r^   r8   r_   r[   re   rf   rg   r   r   r   Útest_fields¨   s   ÿ
þÿz TestAdminPageListing.test_fieldsc                 C   ód   | j dd}t |j d¡¡}|d D ]}|  t| ¡ ƒh d£¡ |  t|d  ¡ ƒh d£¡ qd S )NrW   ©rH   rE   r6   >   r0   rF   r   rƒ   rF   >   r=   rH   rI   rJ   rK   rL   rM   rN   r„   rg   r   r   r   Útest_fields_default´   ó   ÿþüz(TestAdminPageListing.test_fields_defaultc                 C   r†   )Nz	-html_url©r   rE   r6   >   r0   rF   r   rƒ   rF   >   r=   rH   rI   rJ   rL   rM   rN   r„   rg   r   r   r   Útest_remove_meta_fieldsÊ   r‰   z,TestAdminPageListing.test_remove_meta_fieldsc                 C   óH   | j dd}t |j d¡¡}|d D ]}|  t| ¡ ƒh d£¡ qd S )Nzc-type,-detail_url,-slug,-first_published_at,-html_url,-latest_revision_created_at,-status,-childrenrŠ   rE   r6   >   r0   r   rƒ   r„   rg   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_titlerŠ   rE   r6   r0   rF   r„   rg   r   r   r   Útest_remove_fieldsè   ó
   ÿz'TestAdminPageListing.test_remove_fieldsc                 C   rŒ   )Nz-idrŠ   rE   r6   >   rF   r   rƒ   r„   rg   r   r   r   Útest_remove_id_fieldï   r   z)TestAdminPageListing.test_remove_id_fieldc                 C   óf   | j ddd}t |j d¡¡}|d D ]}|  t| ¡ ƒh d£¡ |  t|d  ¡ ƒh d£¡ qd S )	NrW   Ú*r~   rE   r6   >   r0   Úbodyr€   rF   Útagsr   r‚   Úrelated_linksÚcarousel_itemsrƒ   Úfeed_image_thumbnailrF   >   r=   rH   ÚlocaleÚparentrI   Úalias_ofrJ   rK   Ú	ancestorsÚ	seo_titlerL   ÚdescendantsÚtranslationsÚshow_in_menusrM   Úsearch_descriptionrN   r„   rg   r   r   r   Útest_all_fieldsö   s   
þþïz$TestAdminPageListing.test_all_fieldsc                 C   r‘   )	NrW   z6*,-title,-admin_display_title,-date,-seo_title,-statusr~   rE   r6   >   r0   r“   rF   r”   r‚   r•   r–   r—   rF   >   r=   rH   r˜   r™   rš   rJ   rK   r›   rL   r   rž   rŸ   rM   r    rN   r„   rg   r   r   r   Ú%test_all_fields_then_remove_something"  s   þ
þþòz:TestAdminPageListing.test_all_fields_then_remove_somethingc                 C   sN   | j ddd}t |j d¡¡}|d D ]}|  t|d  ¡ ƒh d£¡ qd S )NrW   úfeed_image(*)r~   rE   r6   r‚   >   r0   rF   r   ÚwidthÚheightÚ	thumbnailr„   rg   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 ]R}|d }|d urf|  |t¡ |  t| 	¡ ƒh d£¡ |  |d t
¡ |  |d	 t¡ |  t|d	  	¡ ƒh d
£¡ |  |d	 d d¡ |  |d	 d d|d  ¡ qd S )NrW   r}   r~   rE   r6   r‚   >   r0   rF   r   r0   rF   >   rH   rL   Údownload_urlrH   úwagtailimages.ImagerL   ú*http://localhost/admin/api/main/images/%d/©r+   r]   r^   r8   r_   ra   rb   r[   re   rf   rc   )r)   rh   r8   r3   r‚   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 )NrW   r™   r~   rE   r6   rF   rn   rX   ú(http://localhost/admin/api/main/pages/5/úhttp://localhost/blog-index/)rH   rL   rK   ú
Blog index)r0   rF   r   )r+   r]   r^   r8   r_   ÚassertDictEqual)r)   rh   r8   r3   r™   r   r   r   Útest_fields_parentq  s   ýùþüz'TestAdminPageListing.test_fields_parentc                 C   s|   | j dd}t |j d¡¡}|d D ](}|d d }|  t| ¡ ƒddh¡ |  |d t	¡ |  |d d|d	  ¡ qd S )
Nr   rŠ   rE   r6   rF   r   Úlisting_urlz7http://localhost/admin/api/main/pages/?descendant_of=%dr0   )
r+   r]   r^   r8   r_   r[   re   rf   ra   rc   )r)   rh   r8   r3   r   r   r   r   Útest_fields_descendants†  s   
þüz,TestAdminPageListing.test_fields_descendantsc                 C   sZ   | j ddd}t |j d¡¡}|d D ]}|  t| ¡ ƒh d£¡ |  |d t	¡ qd S )NrW   ztitle,related_linksr~   rE   r6   >   r0   rF   r   r•   rƒ   r•   ©
r+   r]   r^   r8   r_   r[   re   rf   ra   rd   rg   r   r   r   Útest_fields_child_relation“  s   ÿ
þûz/TestAdminPageListing.test_fields_child_relationc                 C   sd   | j ddd}t |j d¡¡}tjtjd |j d¡¡}g d¢}|  t	|d d  
¡ ƒ|¡ d S )	NrW   z#date,title,feed_image,related_linksr~   rE   ©Úobject_pairs_hook)r0   rF   r   rƒ   r€   r‚   r•   r6   r   ©r+   r]   r^   r8   r_   ÚJSONDecoderÚcollectionsÚOrderedDictr[   rd   rf   ©r)   rh   r8   Úfield_orderr   r   r   Útest_fields_ordering   s   ÿ
ÿ 	z)TestAdminPageListing.test_fields_orderingc                 C   sZ   | j ddd}t |j d¡¡}|d D ]}|  t| ¡ ƒh d£¡ |  |d t	¡ qd S )NrW   r”   r~   rE   r6   >   r0   rF   r”   r   rƒ   r´   rg   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rR|  t|ƒd	¡ |  |d
 d |j
¡ |  |d
 d d d¡ q#|d |j
kry|  t|ƒd	¡ |  |d
 d |j
¡ |  |d
 d d d¡ q#|  |g ¡ q#d S )NÚfr©Úlanguage_coderž   rŠ   rE   r6   rF   r0   r   r   r˜   Úen)r   r   rs   r@   Úcopy_for_translationr+   r]   r^   r8   r_   r0   r[   Úlen)r)   ÚfrenchÚhomepageÚfrench_homepagerh   r8   r3   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_ofrE   é   é   ©r+   r]   r^   r8   r_   r9   r[   ©r)   rh   r8   Úpage_id_listr   r   r   Útest_child_of_rootß  s   
z'TestAdminPageListing.test_child_of_rootc                 C   ó0   | j dd}t |j d¡¡ |  |jd¡ d S )Nr   rË   rE   rB   ©r+   r]   r^   r8   r_   r[   r\   ©r)   rh   r   r   r   Útest_child_of_page_1é  ó   z)TestAdminPageListing.test_child_of_page_1c                 C   ó<   | j dd}t |j d¡¡}|  |¡}|  |g d¢¡ d S )NrÊ   ©Údescendant_ofrE   ©rÍ   é   é   é	   rn   rj   é   é   é   é
   é   é   é   é   é   é   é   é   é   rÎ   rÏ   rÐ   r   r   r   Útest_descendant_of_rootõ  s   
þz,TestAdminPageListing.test_descendant_of_rootc                 C   rÓ   )Nr   rÙ   rE   rB   rÔ   rÕ   r   r   r   Ú)test_descendant_of_root_doesnt_give_errorÿ  r×   z>TestAdminPageListing.test_descendant_of_root_doesnt_give_errorc                 C   s   |j t|dddS )NzSimple page)r   r8   ©Úinstance)Ú	add_childr   )r)   r™   r   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   ©ÚpkÚ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_explorerrE   c                 S   ó   g | ]}|j ‘qS r   rò   r1   r   r   r   r4     ó    zATestAdminPageListing.test_for_explorer_filter.<locals>.<listcomp>rË   c                 S   rö   r   rò   r1   r   r   r   r4   #  r÷   )rñ   r   r   r'   r+   ró   r]   r^   r8   r_   r9   r[   )r)   ÚmoviesÚvisible_moviesÚhidden_moviesrh   r8   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õ   é  rE   Úmessagez;filtering by for_explorer without child_of is not supported©r+   r[   r\   r]   r^   r8   r_   ©r)   rh   r8   r   r   r   Útest_for_explorer_no_child_of&  s   ÿþz2TestAdminPageListing.test_for_explorer_no_child_ofc                 C   sr   dd„ }t  d|¡ | jddd}W d   ƒ n1 sw   Y  t |j d¡¡}|  |¡}|  |g d¢¡ d S )	Nc                 S   s
   |  d¡S )Nú-title)Úorder_by)Úparent_pageÚpagesÚrequestr   r   r   Úset_custom_ordering2  s   
zmTestAdminPageListing.test_for_explorer_construct_explorer_page_queryset_ordering.<locals>.set_custom_orderingÚ construct_explorer_page_querysetTrÍ   )rõ   rÌ   rE   )rá   rè   rÜ   rë   rn   )	r	   Úregister_temporarilyr+   r]   r^   r8   r_   r9   r[   )r)   r  rh   r8   rÑ   r   r   r   Ú;test_for_explorer_construct_explorer_page_queryset_ordering1  s   ÿý
zPTestAdminPageListing.test_for_explorer_construct_explorer_page_queryset_orderingc                 C   rØ   )NÚtrue©Úhas_childrenrE   ©rÍ   rÜ   rn   rá   rå   rè   rÎ   rÏ   rÐ   r   r   r   Útest_has_children_filterA  ó   
z-TestAdminPageListing.test_has_children_filterc                 C   rØ   )NÚfalser  rE   ©rÝ   rÞ   rj   rß   rà   râ   rã   rä   ræ   rç   ré   rê   rë   é   rÏ   rÐ   r   r   r   Útest_has_children_filter_offH  ó   
ÿz1TestAdminPageListing.test_has_children_filter_offc                 C   rØ   )Nr   r  rE   r  rÏ   rÐ   r   r   r   Útest_has_children_filter_intQ  r  z1TestAdminPageListing.test_has_children_filter_intc                 C   rØ   )Nr   r  rE   r  rÏ   rÐ   r   r   r   Ú test_has_children_filter_int_offX  r  z5TestAdminPageListing.test_has_children_filter_int_offc                 C   ó@   | j dd}t |j d¡¡}|  |jd¡ |  |ddi¡ d S )Né   r  rE   rü   rý   ú&has_children must be 'true' or 'false'rÔ   rÿ   r   r   r   Ú(test_has_children_filter_invalid_integera  ó   z=TestAdminPageListing.test_has_children_filter_invalid_integerc                 C   r  )NÚyesr  rE   rü   rý   r  rÔ   rÿ   r   r   r   Ú&test_has_children_filter_invalid_valueh  r  z;TestAdminPageListing.test_has_children_filter_invalid_valuec                 C   s\   | j dd}t |j d¡¡}|d D ]}|  |d d d¡ |  t| ¡ ƒh d£¡ qd S )NrW   r‡   rE   r6   rF   rH   >   r0   rF   r   rƒ   r„   rg   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 ]/}|  |d d dd	g¡ |d d dkr0d
}n
|d d d	kr:d
}|  t| ¡ ƒh d£¡ q| j	|dd | j	|dd d S )Nz)demosite.BlogEntryPage,demosite.EventPager‡   rE   Fr6   rF   rH   rW   rV   T>   r0   rF   r   rƒ   z%No blog pages were found in the items)Úmsgz&No event pages were found in the items)
r+   r]   r^   r8   r_   r`   r[   re   rf   Ú
assertTrue)r)   rh   r8   Úblog_page_seenÚevent_page_seenr3   r   r   r   Útest_type_filter_multiple}  s"   ÿÿz.TestAdminPageListing.test_type_filter_multiplec                 C   s8   |   ¡ }t |j d¡¡}|  |¡}|  |g d¢¡ d S )NrE   rÛ   rÏ   rÐ   r   r   r   Útest_ordering_defaultš  s   
þz*TestAdminPageListing.test_ordering_defaultc                 C   rØ   )Nr   ©ÚorderrE   )rå   ræ   rà   rç   rn   rj   rß   rë   rê   rÝ   rÞ   rÜ   r  rÍ   rÎ   ré   rè   rä   rá   râ   rÏ   rÐ   r   r   r   Útest_ordering_by_title¦  ó   
þz+TestAdminPageListing.test_ordering_by_titlec                 C   rØ   )Nr  r%  rE   )rã   râ   rá   rä   rè   ré   rÎ   rÍ   r  rÜ   rÞ   rÝ   rê   rë   rß   rj   rn   rç   rà   ræ   rÏ   rÐ   r   r   r   Ú test_ordering_by_title_backwards²  r(  z5TestAdminPageListing.test_ordering_by_title_backwardsc                 C   ó8   | j dd}t |j d¡¡}|  |d d tƒ ¡ d S )NrÍ   ©ÚlimitrE   rF   rG   ©r+   r]   r^   r8   r_   r[   r   rÿ   r   r   r   Útest_limit_total_count¾  ó   z+TestAdminPageListing.test_limit_total_countc                 C   r*  )Nrâ   )ÚoffsetrE   rF   rG   r-  rÿ   r   r   r   Útest_offset_total_countÈ  r/  z,TestAdminPageListing.test_offset_total_count)ÚWAGTAILAPI_LIMIT_MAXc                 C   sF   | j dd}t |j d¡¡}|  |jd¡ |  t|d ƒtƒ ¡ d S )Ni@B r+  rE   rB   r6   )	r+   r]   r^   r8   r_   r[   r\   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+   r9   r@   ri   Ú*test_unpublished_pages_dont_appear_in_listÚ&test_private_pages_dont_appear_in_listrm   ru   r|   Útest_parent_field_gives_errorr…   rˆ   r‹   r   rŽ   r   r¡   r¢   r§   r¬   r±   r³   rµ   r¾   r¿   rÉ   Ú5test_child_of_page_thats_not_in_same_site_gives_errorrÒ   rÖ   Ú:test_descendant_of_page_thats_not_in_same_site_gives_errorrì   rí   rñ   rû   r   r	  r  r  r  r  r  r  r  r#  Ú,test_site_filter_same_hostname_returns_errorÚtest_site_filterr$  r'  r)  r.  r1  r   r3  r   r   r   r   r    &   sn    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+   á  ó   ÿ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  ¡ ƒh d£¡ |  |d d d d¡ |  |d d d t	¡ |  t
|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&d'g¡ |  |d" t	¡ |  t
|d"  ¡ ƒh d£¡ |  |d" d d(¡ |  |d" d t	¡ |  t
|d" d  ¡ ƒh d)£¡ |  |d" d d d*¡ |  |d" d d
 d+¡ |  |d# g ¡ |d$ D ]}|  t
| ¡ ƒh d,£¡ |  t
|d  ¡ ƒdh¡ qµ|  |d- t	¡ |  t
|d-  ¡ ƒh d.£¡ |  t
|d- d  ¡ ƒd/d0h¡ |  |d- d d/ d1¡ |  |d- d d0 d2¡ d S )3Nrj   rB   rC   rD   rE   r0   rF   rH   rW   rL   ú)http://localhost/admin/api/main/pages/16/rK   ú&http://localhost/blog-index/blog-post/rI   ÚliveTF©rI   rG  Úhas_unpublished_changesrJ   r   z2http://localhost/admin/api/main/pages/?child_of=16©r   r²   r™   >   r0   rF   r   rn   >   rH   rK   rL   rX   r­   r®   rš   r€   r“   r”   r‚   r•   r–   z
2013-12-02ÚbirdÚwagtailé   >   rH   rL   r¨   r©   z)http://localhost/admin/api/main/images/7/>   r0   ÚlinkrF   ÚimageÚcaptionÚ	embed_urlrO   >   úwagtailcore.Pageú"demosite.BlogEntryPageCarouselItemrU   r©   rW   rX   rY   rZ   zblog index pagezblog index pages)r+   r[   r\   r]   r^   r8   r_   r`   ra   rb   re   rf   ÚassertIsNone)r)   rh   r8   Úcarousel_itemr   r   r   ri   æ  sÂ   
ÿÿ

þ
þþ	 þÿþþþþ
þþþþþzTestAdminPageDetail.test_basicc                 C   s2   |   d¡}t |j d¡¡}|  |d d ¡ d S )NrÍ   rE   rF   r™   )r+   r]   r^   r8   r_   ÚassertIsNotNonerÿ   r   r   r   Ú)test_meta_parent_id_doesnt_show_root_pagev  s   
z=TestAdminPageDetail.test_meta_parent_id_doesnt_show_root_pagec                 C   sX   |   d¡}t |j d¡¡}tjtjd |j d¡¡}g d¢}|  t	| 
¡ ƒ|¡ d S )Nrj   rE   r¶   )r0   rF   r   rƒ   r“   r”   r€   r‚   r—   r–   r•   rO   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 )
Nrj   r/   rE   rI   rF   ÚdraftFTrH  )r   r   r'   rl   r+   r]   r^   r8   r_   r`   r[   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 )	Nrj   r/   rE   rI   rF   zlive + draftTrH  )r   r   r'   ÚspecificÚsave_revisionr+   r]   r^   r8   r_   r`   r[   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 )Nrj   r/   r   )Údays)Úapproved_go_live_atrE   rI   rF   Ú	scheduledFTrH  )r   r   r'   rl   r   ÚnowÚdatetimeÚ	timedeltar[  r\  r+   r]   r^   r8   r_   r`   r[   )r)   Útomorrowrh   r8   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 )Nrj   r/   T)ÚexpiredrE   rI   rF   rf  FrH  )r   r   r'   rl   ÚfilterÚupdater+   r]   r^   r8   r_   r`   r[   rÿ   r   r   r   Útest_meta_status_expiredÂ  s   


þz,TestAdminPageDetail.test_meta_status_expiredc                 C   óJ   |   d¡}t |j d¡¡}|  d|d ¡ |  |d d dddœ¡ d S )NrÍ   rE   rJ   rF   rn   z1http://localhost/admin/api/main/pages/?child_of=2rJ  ©r+   r]   r^   r8   r_   r`   r[   rÿ   r   r   r   Útest_meta_children_for_parentÐ  ó   

þþz1TestAdminPageDetail.test_meta_children_for_parentc                 C   rj  )NrÍ   rE   r   rF   rß   z6http://localhost/admin/api/main/pages/?descendant_of=2rJ  rk  rÿ   r   r   r   Útest_meta_descendantsÞ  rm  z)TestAdminPageDetail.test_meta_descendantsc                 C   sÐ   |   d¡}t |j 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 S )Nrj   rE   r›   rF   r  r   >   r0   rF   r   rƒ   r   ÚRootr   z	Home pagerÍ   r¯   )r+   r]   r^   r8   r_   r`   ra   rd   r[   rÅ   rf   rÿ   r   r   r   Útest_meta_ancestorsì  s   
þ z'TestAdminPageDetail.test_meta_ancestorsc                 C   sp  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  ¡ ƒh d£¡ |  |d	 d d d¡ |  |d	 d d	 t¡ |  t|d	 d d	  ¡ ƒh d£¡ |  |d	 d d	 d
 d¡ |  |d	 d d	 d d¡ |  |d	 d d	 d d¡ d S )Nrj   r/   únew-slug©Úupdate_slugrB   rC   rD   rE   rF   rH   rW   rK   z%http://localhost/blog-index/new-slug/rš   >   r0   rF   r   r0   >   rH   rK   rL   rL   rE  rF  )r   r   r'   r[  Úcreate_aliasr+   r0   r[   r\   r]   r^   r8   r_   r`   ra   rb   re   rf   )r)   ÚoriginalÚaliasrh   r8   r   r   r   Útest_alias_pageü  s@   ÿÿþÿþþz#TestAdminPageDetail.test_alias_pagec                 C   sL   | j ddd}t |j d¡¡}|  dt| ¡ ƒ¡ |  dt| ¡ ƒ¡ d S )Nrj   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_descriptionrŠ   rE   rF   r0   )	r+   r]   r^   r8   r_   ÚassertNotInre   rf   r`   rÿ   r   r   r   r   '  s   þz/TestAdminPageDetail.test_remove_all_meta_fieldsc                 C   sV   | j ddd}t |j d¡¡}|  t| ¡ ƒh d£¡ |  t|d  ¡ ƒdh¡ d S )Nrj   z	_,id,typerŠ   rE   >   r0   rF   rO   rF   rH   r„   rÿ   r   r   r   Útest_remove_all_fields1  s   z*TestAdminPageDetail.test_remove_all_fieldsc                 C   s@   | j ddd}t |j d¡¡}|  t|d  ¡ ƒh d£¡ d S )Nrj   r£   rŠ   rE   r‚   >   r0   rF   r   r¤   r¥   r¦   r„   rÿ   r   r   r   r§   8  s   þz*TestAdminPageDetail.test_all_nested_fieldsc                 C   s¸   |   d¡}t |j d¡¡}|d }|  |t¡ |  t| 	¡ ƒh d£¡ |  |d t
¡ |  |d t¡ |  t|d  	¡ ƒh d£¡ |  |d d d	¡ |  |d d
 d|d  ¡ d S )Nrj   rE   r‚   >   r0   rF   r   r0   rF   >   rH   rL   r¨   rH   r©   rL   rª   r«   )r)   rh   r8   r‚   r   r   r   r¬   A  s   
ÿ

þz+TestAdminPageDetail.test_fields_foreign_keyN)r4  r5  r6  r7  r+   ri   rW  rX  rZ  r]  re  ri  rl  rn  rp  rw  r   ry  r§   r¬   r   r   r   r   r?  Þ  s&     +
	r?  c                   @   ó*   e Zd ZdgZdd„ Zdd„ Zdd„ ZdS )	ÚTestAdminPageListingSearchr!   c                 K   r"   r#   r%   r(   r   r   r   r+   X  r,   z'TestAdminPageListingSearch.get_responsec                 C   r-   )Nc                 S   r.   r/   r   r1   r   r   r   r4   \  r5   z?TestAdminPageListingSearch.get_page_id_list.<locals>.<listcomp>r6   r   r7   r   r   r   r9   [  r,   z+TestAdminPageListingSearch.get_page_id_listc                 C   r:   r;   r>   r?   r   r   r   r@   ^  rA   z'TestAdminPageListingSearch.get_homepageN)r4  r5  r6  r7  r+   r9   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                    ó   t ƒ  ¡  tjjdd| _d S )Nú/home/©Úurl_path)ÚsuperÚsetUpr   r   r'   rÇ   r?   ©Ú	__class__r   r   rƒ  e  ó   
z(TestAdminPageDetailWithStreamField.setUpc                 C   s   t dd|d}| jj|dS )Nzstream pagezstream-page)r   r=   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@  rA  rB   zcontent-typerD   úutf-8r0   r“   r   r   rH   ÚtextÚvalueÚfoo)rˆ  r   r0   r&   r'   r[   r\   r]   r^   r8   r_   r`   rÅ   r   ©r)   r‡  Úresponse_urlrh   r8   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@  rA  r‰  r“   r   rH   rO  r‹  r   )
rˆ  r   r0   r&   r'   r]   r^   r8   r_   r[   r  r   r   r   Útest_image_block  s   
z3TestAdminPageDetailWithStreamField.test_image_block)	r4  r5  r6  r7  rƒ  rˆ  r  r  Ú__classcell__r   r   r„  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 )ÚTestCustomAdminDisplayTitler}  c                    r~  )Nz/home/events/saint-patrick/r€  )r‚  rƒ  r   r   r'   Ú
event_pager?   r„  r   r   rƒ    r†  z!TestCustomAdminDisplayTitle.setUpc                 C   sT   t d| jjfd}| j |¡}t |j d¡¡}|  	|d d¡ |  	|d d¡ d S )Nr@  rA  r‰  r   úSaint Patrickrƒ   úSaint Patrick (single event))
r   r“  r0   r&   r'   r]   r^   r8   r_   r[   )r)   Úapi_urlrh   r8   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/   )r“  r0   )r2   Úitemr?   r   r   r4   ¢  s    z`TestCustomAdminDisplayTitle.test_custom_admin_display_title_shown_on_listing.<locals>.<listcomp>r6   r   r   r   r”  rƒ   r•  )	r   r&   r'   r]   r^   r8   r_   r[   rÅ   )r)   r–  rh   r8   Úmatching_itemsr   r?   r   Ú0test_custom_admin_display_title_shown_on_listing  s   
ÿÿzLTestCustomAdminDisplayTitle.test_custom_admin_display_title_shown_on_listing)r4  r5  r6  r7  rƒ  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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 )ÚTestCopyPageActionr}  c                 C   ó   | j  td|dgd|¡S )Núwagtailadmin_api:pages:actionÚcopyrA  ©r&   Úpostr   ©r)   rC  Údatar   r   r   r+   ¯  ó   ÿ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‰  r0   r/   ÚEventsúevents-1)r+   r[   r\   r]   r^   r8   r_   r   r   r'   r   r=   r   rG  ÚassertFalseÚget_childrenÚexists©r)   rh   r8   Ú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  r   z	New titler¤  r‰  r0   r/   r¦  )r+   r[   r\   r]   r^   r8   r_   r   r   r'   r   r=   rª  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  r=   rq  r¤  r‰  r0   r/   )r+   r[   r\   r]   r^   r8   r_   r   r   r'   r=   rª  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å   r¤  r‰  rò   r0   r/   Úspecial_field)r+   r[   r\   r]   r^   r8   r_   r   r   r'   ÚassertNotEqualr¯  Ú_metaÚ	get_fieldÚdefault)r)   rh   r8   Úoriginal_pager«  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_idr¤  r‰  r0   r/   r¥  )r+   r[   r\   r]   r^   r8   r_   r   r   r'   r   r   rG  r§  r¨  r©  rª  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  Ú	recursiveTr¤  r‰  r0   r/   r¥  )r+   r[   r\   r]   r^   r8   r_   r   r   r'   r   r   r¨  r©  rª  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_liveFr¤  r‰  r0   r/   r¥  )r+   r[   r\   r]   r^   r8   r_   r   r   r'   r   r§  rG  rª  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©Úcontent_type__app_labelÚcodenameÚEditors©Únamer  r   )r¶  rº  é“  r‰  Údetailú,You do not have permission to copy this page©ry   Úis_superuserÚuser_permissionsÚaddr   r   r'   Úgroupsr   Úsaver+   r[   r\   r]   r^   r8   r_   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)r¶  r¸  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   óp   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 )NFr¼  r½  r¾  r  r¶  rÍ   rÄ  r‰  rÅ  rÆ  ©ry   rÈ  rÉ  rÊ  r   r   r'   rÌ  r+   r[   r\   r]   r^   r8   r_   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 )NFr¼  r½  r¾  rÁ  rÂ  rÍ   rÊ  )ÚgrouprC  Úpermission_typer  r¶  rÄ  r‰  rÅ  ú?You do not have permission to publish a page at the destination)ry   rÈ  rÉ  rÊ  r   r   r'   rË  r   rÌ  r   rs   r+   r[   r\   r]   r^   r8   r_   rÿ   r   r   r   Ú>test_without_publish_permissions_at_destination_with_keep_liveJ  s0   ÿÿ
ÿÿþþþ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Í   rÄ  r‰  rÅ  rÆ  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  r=   Ú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)r4  r5  r6  r7  r+   r¬  r­  r®  rµ  r·  r¹  r»  rÍ  rÏ  rÒ  rÖ  r×  rÙ  r   r   r   r   r›  ¬  s     
	 
r›  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 )ÚTestConvertAliasPageActionr}  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-worldÚhello)r   r=   r8   rî   z
alias-pagerr  )r‚  rƒ  r   r   r'   Ú	root_pager   Ú
child_pagerð   rt  Ú
alias_pager?   r„  r   r   rƒ  ‹  s   
ÿz TestConvertAliasPageAction.setUpc                 C   ó   | j  td|dgd¡S )Nr  Úconvert_aliasrA  rŸ  ©r)   rC  r   r   r   r+   š  rD  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 )NrB   zwagtail.convert_alias)Úactionr3   )r0   r   )r+   rÞ  r0   r[   r\   Úrefresh_from_dbrT  rš   Ú	revisionsr'   ry   Úlive_revisionr   r   r§  Úcontent_changedr¢  Úget_admin_display_titler3   Úpage_ptrÚrevision)r)   rh   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Ý  r0   r[   r\   r]   r^   r8   r_   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 )NFr¼  r½  r¾  rÄ  )ry   rÈ  rÉ  rÊ  r   r   r'   rÌ  r+   rÞ  r0   r[   r\   rÕ   r   r   r   Ú!test_convert_alias_bad_permissionÃ  s   ÿÿ
z<TestConvertAliasPageAction.test_convert_alias_bad_permission)
r4  r5  r6  r7  rƒ  r+   rë  rì  rí  r‘  r   r   r„  r   rÚ  ˆ  s    rÚ  c                   @   rz  )	ÚTestDeletePageActionr}  c                 C   rß  )Nr  ÚdeleterA  rŸ  rá  r   r   r   r+   Ô  rD  z!TestDeletePageAction.get_responsec                 C   s4   |   d¡}|  |jd¡ |  tjjdd ¡ ¡ d S )NrÜ   éÌ   r/   )r+   r[   r\   r§  r   r   rg  r©  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 )NFr¼  r½  r¾  rÜ   rÄ  r‰  rÅ  z.You do not have permission to delete this pager/   )ry   rÈ  rÉ  rÊ  r   r   r'   rÌ  r+   r[   r\   r]   r^   r8   r_   r   r   rg  r©  rÿ   r   r   r   Ú test_delete_page_bad_permissionsà  s   ÿÿ

ÿz5TestDeletePageAction.test_delete_page_bad_permissionsN)r4  r5  r6  r7  r+   rñ  rò  r   r   r   r   rî  Ñ  s
    rî  c                   @   ó2   e Zd ZdgZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTestPublishPageActionr}  c                 C   rß  )Nr  ÚpublishrA  rŸ  rá  r   r   r   r+   ú  rD  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-eventr<   FrB   T)r   r   r'   rT  rM   r[   Úlast_published_atÚassertIsrG  r+   r0   r\   rã  rV  )r)   Úunpublished_pagerh   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 )NFr¼  r½  r¾  rÁ  rÂ  rÜ   rÄ  r‰  rÅ  z/You do not have permission to publish this pagerÇ  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Úhomer<   znew-home-pagerr  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'   rt  r+   r0   r[   r\   r]   r^   r8   r_   )r)   rû  rÞ  rh   r8   r   r   r   Útest_publish_alias_page#  s   þþz-TestPublishPageAction.test_publish_alias_pageN)r4  r5  r6  r7  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 )ÚTestUnpublishPageActionr}  c                 C   rœ  )Nr  rl   rA  rŸ  r¡  r   r   r   r+   9  r£  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/   rB   )	r   r   r   r'   rG  r+   r[   r\   r§  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¡ qAd S )Nrû  r<   F©Úlockedr¸  TrB   ©r   r   r'   r   Úget_descendantsrG  rg  r©  r+   r0   r[   r\   rã  r§  )r)   r3   rh   Údescendant_pagesÚ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-plansr<   Frÿ  r¸  rB   r  )r)   r3   rh   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+   r[   r\   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 )
NFr¼  r½  r¾  r  rÄ  r‰  rÅ  z1You do not have permission to unpublish this pagerÑ  rÿ   r   r   r   Ú+test_unpublish_page_insufficient_permissionl  s   ÿÿ
ÿzCTestUnpublishPageAction.test_unpublish_page_insufficient_permissionN)
r4  r5  r6  r7  r+   rþ  r  r  r	  r
  r   r   r   r   rý  6  s    	rý  c                   @   ró  )ÚTestMovePageActionr}  c                 C   rœ  )Nr  ÚmoverA  rŸ  r¡  r   r   r   r+     r£  zTestMovePageAction.get_responsec                 C   s"   |   dddi¡}|  |jd¡ d S )NrÜ   r¶  r  rB   r  rÕ   r   r   r   Útest_move_page†  s   z!TestMovePageAction.test_move_pagec                 C   rÐ  )NFr¼  r½  r¾  rÜ   r¶  r  rÄ  r‰  rÅ  zDYou do not have permission to move the page to the target specified.rÑ  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‰  r¶  ú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)r4  r5  r6  r7  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 )ÚTestCopyForTranslationActionr}  c                 C   rœ  )Nr  rÄ   rA  rŸ  r¡  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 )Nr  r€  ú/home/events/z/home/events/christmas/rÀ   rÁ   )r‚  rƒ  r   r   r'   r[  Úen_homepager   Úen_eventindexr   Úen_eventpageÚ
get_parentrÜ  r   rs   Ú	fr_localer?   r„  r   r   rƒ  ¶  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À   r¤  r‰  r0   r/   úhome-fr)r+   r  r0   r[   r\   r]   r^   r8   r_   r   r   r'   r°  r˜   r  Útranslation_keyr=   r§  rG  r   rI  )r)   rh   r8   Úfr_homepager   r   r   Ú"test_copy_homepage_for_translation¾  s   z?TestCopyForTranslationAction.test_copy_homepage_for_translationc                 C   óH   |   | 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  r0   r[   r\   r]   r^   r8   r_   rÿ   r   r   r   Ú"test_copy_childpage_without_parentÑ  ó   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_parentsr¤  r‰  r0   r/   r  )r+   r  r0   r[   r\   r]   r^   r8   r_   r   r   r'   r°  r˜   r  r  r=   r  r  )r)   rh   r8   Úfr_eventindexr  r   r   r   Ú%test_copy_childpage_with_copy_parentsØ  s"   ÿ
ÿzBTestCopyForTranslationAction.test_copy_childpage_with_copy_parentsc                 C   óF   |   | jji ¡}|  |jd¡ t |j d¡¡}|  |ddgi¡ d S )Nrü   r‰  r˜   r  ©	r+   r  r0   r[   r\   r]   r^   r8   r_   rÿ   r   r   r   Ú#test_copy_for_translation_no_localeð  s   z@TestCopyForTranslationAction.test_copy_for_translation_no_localec                 C   r  )Nr˜   Úder  r‰  rý   z"No Locale matches the given query.r#  rÿ   r   r   r   Ú(test_copy_for_translation_unknown_locale÷  r  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s9J ‚dd„ | j  ¡ D ƒd	 }|j|ksLJ ‚d
d„ | j ¡ D ƒd	 }|j|ks_J ‚d S )Nú-77777T©Ú
log_actionrÀ   ©r˜   r  r¸  r¤  c                 S   ó   g | ]
}|j jd kr|‘qS ©rÀ   ©r˜   rÂ   ©r2   Ú
trans_pager   r   r   r4     ó
    þz`TestCopyForTranslationAction.test_translating_latest_non_draft_page_revision.<locals>.<listcomp>r   c                 S   r+  r,  r-  r.  r   r   r   r4     r0  )r  r   r  r\  r+   r0   r\   Úget_translations)r)   Úold_index_titleÚold_post_titleÚnew_index_titleÚnew_post_titlerh   Ú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sMJ ‚dd„ | ¡ D ƒd }|j|ks_J ‚dd„ | ¡ D ƒd }	|	j|ksqJ ‚dS )z+In case when Page have only draft revisionsz
Draft BlogÚ
draft_blogF)r   r=   rG  rî   zDraft Blog postzdraft_blog-postr'  Tr(  rÀ   r*  r¤  c                 S   r+  r,  r-  r.  r   r   r   r4   7  r0  z\TestCopyForTranslationAction.test_translating_latest_draft_page_revision.<locals>.<listcomp>r   c                 S   r+  r,  r-  r.  r   r   r   r4   =  r0  N)	r   r  rð   r   r\  r+   r0   r\   r1  )
r)   Údraft_index_pageÚdraft_blog_postr2  r4  Úold_page_titleÚnew_page_titlerh   r6  r7  r   r   r   Ú+test_translating_latest_draft_page_revision  s>   ÿ
þþüþüzHTestCopyForTranslationAction.test_translating_latest_draft_page_revision)r4  r5  r6  r7  r+   rƒ  r  r  r!  r$  r&  r8  r>  r‘  r   r   r„  r   r  «  s    r  c                       óJ   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 )ÚTestCreatePageAliasActionr}  c                    s.   t ƒ  ¡  tjjdd| _tjjdd| _d S )Nr  r€  z/home/about-us/)r‚  rƒ  r   r   r'   Úevents_indexr   Úabout_usr?   r„  r   r   rƒ  H  s   
zTestCreatePageAliasAction.setUpc                 C   rœ  )Nr  rt  rA  rŸ  r¡  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)Úupdate_fieldsrs  znew-about-us©r¢  r¤  r‰  r0   r/   zAbout usz/home/new-about-us/)rB  rC  rÌ  r+   r0   r[   r\   r]   r^   r8   r_   r   r   r'   ra   r[  r   r=   r°  r  rš   )r)   rh   r8   Ú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©r¸  rs  rE  r¤  r‰  r0   r/   Ú	christmasr<   zChild pages weren't copiedz+Child pages were removed from original pagez!/home/new-events-index/christmas/)r+   rA  r0   r[   r\   r]   r^   r8   r_   r   r   r'   r¨  rg  ÚfirstrV  r  rš   )r)   rh   r8   Únew_events_indexÚold_christmas_eventÚ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)r¸  r¶  rE  rü   r‰  rý   rÎ  )	r+   rA  r0   r[   r\   r]   r^   r8   r_   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 )NFr¼  r½  r¾  TrH  rI  rE  rÄ  r‰  rÅ  rÕ  )ry   rÈ  rÉ  rÊ  r   r   r'   rÌ  r+   rA  r0   r[   r\   r]   r^   r8   r_   rÿ   r   r   r   Ú-test_create_alias_without_publish_permissions   s&   ÿÿ
þþþzGTestCreatePageAliasAction.test_create_alias_without_publish_permissions)r4  r5  r6  r7  rƒ  r+   rG  rO  rP  rQ  r‘  r   r   r„  r   r@  E  s    !r@  c                       r?  )ÚTestRevertToPageRevisionActionr}  c                    sD   t ƒ  ¡  tjjdd| _| jj ¡ | _d| j_	| jj ¡  
¡  d S )Nr  r/   Ú
Evenements)r‚  rƒ  r   r   r'   Úevents_pager[  r\  Úfirst_revisionr   rõ  r?   r„  r   r   rƒ  ½  s
   
z$TestRevertToPageRevisionAction.setUpc                 C   rœ  )Nr  Úrevert_to_page_revisionrA  rŸ  r¡  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 )NrS  Úrevision_idrB   r¥  )r[   rT  r   r+   r0   rU  r\   r[  Ú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 )
NFr¼  r½  r¾  rW  rÄ  r‰  rÅ  z,You do not have permission to edit this page)ry   rÈ  rÉ  rÊ  r   r   r'   rÌ  r+   rT  r0   rU  r[   r\   r]   r^   r8   r_   rÿ   r   r   r   Ú,test_revert_to_page_revision_bad_permissionsÞ  s   ÿÿ
ÿÿzKTestRevertToPageRevisionAction.test_revert_to_page_revision_bad_permissionsc                 C   r"  )Nrü   r‰  rW  r  )	r+   rT  r0   r[   r\   r]   r^   r8   r_   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 )NrS  rW  iç  r  r‰  rý   z$No Revision matches the given query.)
r[   rT  r   r+   r0   r\   r]   r^   r8   r_   rÿ   r   r   r   Ú,test_revert_to_page_revision_bad_revision_idù  s
   zKTestRevertToPageRevisionAction.test_revert_to_page_revision_bad_revision_id)r4  r5  r6  r7  rƒ  r+   rY  rZ  r[  r\  r‘  r   r   r„  r   rR  º  s    	rR  )8rº   rb  r]   Údjango.contrib.authr   Údjango.contrib.auth.modelsr   r   Údjango.testr   Údjango.test.utilsr   Údjango.urlsr   Údjango.utilsr   rL  r	   Úwagtail.api.v2.tests.test_pagesr
   r   r   Úwagtail.modelsr   r   r   r   Úwagtail.test.demositer   Úwagtail.test.i18n.modelsr   Úwagtail.test.testapp.modelsr   r   r   r   r   Úwagtail.users.modelsr   Úutilsr   r   r    r?  r{  r|  r’  r›  rÚ  rî  rô  rý  r  r  r@  rR  r   r   r   r   Ú<module>   sV         =  y+ ]I&?H- uJ