a
    DøgŒy  ã                   @   sì  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d d	lmZ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mZmZ d dlm Z m!Z!m"Z"m#Z# d dl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, G dd„ deƒZ-G dd„ deƒZ.G dd„ deƒZ/edddiidG dd„ de,eƒƒZ0edddiidG dd„ de,eƒƒZ1G dd„ deƒZ2G d d!„ d!e2ƒZ3G d"d#„ d#e2ƒZ4G d$d%„ d%e2ƒZ5G d&d'„ d'e3ƒZ6G d(d)„ d)e3ƒZ7G d*d+„ d+eƒZ8G d,d-„ d-eƒZ9d.S )/é    )Ú	timedelta)ÚStringIO)Úmock)Úget_user_model)ÚGroup)Ú
management)Úcache)Úmodels)ÚTestCaseÚoverride_settings)Útimezone)ÚEmbed)Ú
CollectionÚPageÚPageLogEntryÚRevisionÚTaskÚWorkflowÚWorkflowTask)Úpage_publishedÚpage_unpublishedÚ	publishedÚunpublished)ÚDraftStateModelÚ	EventPageÚFullFeaturedSnippetÚ PurgeRevisionsProtectedTestModelÚ
SecretPageÚ
SimplePage)ÚWagtailTestUtilsc                   @   sJ   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S )ÚTestFixTreeCommandú	test.jsonc                 C   s   t j |¡ d S ©N)r	   ZModelÚdelete)ÚselfÚpage© r&   úe/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/tests/test_management_commands.pyÚbadly_delete_page&   s    z$TestFixTreeCommand.badly_delete_pagec                 K   s4   |  dd¡ tƒ }tjdd|i|¤Ž | d¡ |S )NÚinteractiveFÚfixtreeÚstdoutr   )r*   )Ú
setdefaultr   r   Úcall_commandÚseek)r$   ÚoptionsÚoutputr&   r&   r'   Úrun_command+   s
    
zTestFixTreeCommand.run_commandc                 C   s^   t jjdd}|j}d|_| ¡  |  t jjddjd¡ |  ¡  |  t jjddj|¡ d S )Nú/home/©Zurl_pathé90  )r   ÚobjectsÚgetZnumchildÚsaveÚassertEqualr1   )r$   ÚhomepageZold_numchildr&   r&   r'   Útest_fixes_numchild4   s    z&TestFixTreeCommand.test_fixes_numchildc                 C   s¨   t jjdd}|j}d|_| ¡  t ¡ }d|_| ¡  |  t jjddjd¡ |  tjj|jdjd¡ |  	¡  |  t jjddj|¡ |  tjj|jdjd¡ d S )Nr2   r3   r4   é*   ©Úidé   )
r   r5   r6   Údepthr7   r   Zget_first_root_noder8   r=   r1   )r$   r9   Z	old_depthZroot_collectionr&   r&   r'   Útest_fixes_depthF   s    z#TestFixTreeCommand.test_fixes_depthc                 C   s†   t jjdd}tjjdd}|  |¡ |  t jj|jd ¡ ¡ |  	¡ }| 
¡ }|  d|¡ |  d|¡ |  t jj|jd ¡ ¡ d S )Nú/home/events/r3   ú/home/events/christmas/r<   ú-Incorrect numchild value found for pages: [2]z*Orphaned pages found: [4, 5, 6, 9, 13, 15])r   r5   r6   r   r(   Ú
assertTrueÚfilterr=   Úexistsr1   ÚreadÚassertIn©r$   Úevents_indexZchristmas_pager0   Zoutput_stringr&   r&   r'   Útest_detects_orphans_   s    
z'TestFixTreeCommand.test_detects_orphansc                 C   sŠ   t jjdd}tjjdd}|  |¡ |  t jj|jd ¡ ¡ | j	dd}| 
¡ }|  d|¡ |  d|¡ |  t jj|jd ¡ ¡ d S )	NrA   r3   rB   r<   T)Zdelete_orphansrC   z7 orphaned pages deleted.)r   r5   r6   r   r(   rD   rE   r=   rF   r1   rG   rH   ÚassertFalserI   r&   r&   r'   Útest_deletes_orphansv   s    
z'TestFixTreeCommand.test_deletes_orphansc                 C   sb   t jjdd}t jj|jd d ¡  | jdd t jjdd}|  t jj|jd d ¡ ¡ d S )NrA   r3   Z0001)ÚpathT)Úfull)	r   r5   r6   rN   r#   r1   rD   rE   rF   )r$   rJ   r&   r&   r'   Útest_remove_path_holesŒ   s
    z)TestFixTreeCommand.test_remove_path_holesN)Ú__name__Ú
__module__Ú__qualname__Úfixturesr(   r1   r:   r@   rK   rM   rP   r&   r&   r&   r'   r    #   s   	r    c                   @   s"   e Zd ZdgZdd„ Zdd„ ZdS )ÚTestMovePagesCommandr!   c                 C   s    t jdt|ƒt|ƒtƒ d d S )NZ
move_pages©r+   )r   r-   Ústrr   )r$   Úfrom_Útor&   r&   r'   r1   š   s    z TestMovePagesCommand.run_commandc                 C   sf   t jjdd}t jjdd}| ¡ jddd}|  |j|j¡ |D ]}|  t jj|d ¡ |¡ qBd S )NrA   r3   z/home/about-us/r=   T)Zflatr<   )	r   r5   r6   Zget_childrenÚvalues_listr1   r=   r8   Z
get_parent)r$   rJ   Zabout_usZpage_idsÚpage_idr&   r&   r'   Útest_move_pages   s    z$TestMovePagesCommand.test_move_pagesN)rQ   rR   rS   rT   r1   r\   r&   r&   r&   r'   rU   —   s   rU   c                   @   s"   e Zd ZdgZdd„ Zdd„ ZdS )ÚTestSetUrlPathsCommandr!   c                 C   s   t jdtƒ d d S )NZset_url_pathsrV   )r   r-   r   ©r$   r&   r&   r'   r1   ®   s    z"TestSetUrlPathsCommand.run_commandc                 C   s   |   ¡  d S r"   )r1   r^   r&   r&   r'   Útest_set_url_paths±   s    z)TestSetUrlPathsCommand.test_set_url_pathsN)rQ   rR   rS   rT   r1   r_   r&   r&   r&   r'   r]   «   s   r]   ÚdefaultZBACKENDz-django.core.cache.backends.locmem.LocMemCache)ZCACHESc                   @   sJ   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S )Ú TestPublishScheduledPagesCommandr!   c                 C   s   t  ¡  tjjdd| _d S )Né   r<   )r   Úclearr   r5   r6   Ú	root_pager^   r&   r&   r'   ÚsetUp¿   s    z&TestPublishScheduledPagesCommand.setUpc              
      s¶  dg‰ d g‰‡ ‡fdd„}t  |¡ z~tdddddt ¡ tdd	 d
}| jj|d |jt ¡ tdd	 d t	j
jdd}|  |j¡ |  tjj|jdjdd ¡ ¡ |  d¡F | jdd t d¡ W d   ƒ n1 sæ0    Y  W d   ƒ n1 s0    Y  t	j
jdd}|  |j¡ |  |j¡ |  |j¡ |  tjj|jdjdd ¡ ¡ |  ˆ d ¡ |  ˆd |¡ |  ˆd ˆd j¡ W t  |¡ nt  |¡ 0 d S )NFc                    s   dˆ d< |ˆd< d S ©NTr   r&   ©ZsenderÚinstanceÚkwargs©Úsignal_firedZsignal_pager&   r'   Úpage_published_handlerÊ   s    zdTestPublishScheduledPagesCommand.test_go_live_page_will_be_published.<locals>.page_published_handlerúHello world!úhello-worldÚhelloTr>   ©Údays©ÚtitleÚslugÚcontentÚliveÚhas_unpublished_changesÚ
go_live_at©rh   ©Úapproved_go_live_at©rt   ©Z	object_id©Zapproved_go_live_at__isnullé1   ©ÚexecuteÚpublish_scheduled_pagesr   )r   Úconnectr   r   Únowr   rd   Ú	add_childÚsave_revisionr   r5   r6   rL   rv   rD   r   Úpage_revisionsrE   r=   ÚexcluderF   ÚassertNumQueriesÚcaptureOnCommitCallbacksr   r-   Úfirst_published_atrw   r8   ÚspecificÚ
disconnect)r$   rl   r%   Úpr&   rj   r'   Ú#test_go_live_page_will_be_publishedÅ   sL    
úÿÿHÿÿzDTestPublishScheduledPagesCommand.test_go_live_page_will_be_publishedc              
      sÚ  dg‰ d g‰|   d¡}|j tjjdd¡ ‡ ‡fdd„}t |¡ z‚tddd	dd
t	 
¡ tdd d}| jj|d |j|t	 
¡ tdd d tjjdd}|  |j¡ |  tjj|jdjd
d ¡ ¡ |  d¡H | jd
d t d¡ W d   ƒ n1 s
0    Y  W d   ƒ n1 s*0    Y  tjjdd}|  |j¡ |  |j¡ |  |j¡ |  tjj|jdjd
d ¡ ¡ |  ˆ d ¡ |  ˆd |¡ |  ˆd ˆd j ¡ W t !|¡ nt !|¡ 0 d S )NFÚedúSite-wide editors©Únamec                    s   dˆ d< |ˆd< d S rf   r&   rg   rj   r&   r'   rl     s    zvTestPublishScheduledPagesCommand.test_go_live_page_created_by_editor_will_be_published.<locals>.page_published_handlerrm   rn   ro   Tr>   rp   rr   ry   ©Úuserr{   r|   r}   r~   r   r€   r‚   r   )"Úcreate_userÚgroupsÚaddr   r5   r6   r   rƒ   r   r   r„   r   rd   r…   r†   r   rL   rv   rD   r   r‡   rE   r=   rˆ   rF   r‰   rŠ   r   r-   r‹   rw   r8   rŒ   r   )r$   Úeditorrl   r%   rŽ   r&   rj   r'   Ú5test_go_live_page_created_by_editor_will_be_publishedù   sT    

úÿÿÿJÿÿzVTestPublishScheduledPagesCommand.test_go_live_page_created_by_editor_will_be_publishedc              
   C   sð   t dddddt ¡ tdd d}| jj|d	 |jt ¡ tdd d
 d|_| ¡  |  d¡F | j	dd t
 d¡ W d   ƒ n1 s0    Y  W d   ƒ n1 s®0    Y  tjjdd}|  |j¡ |  |j¡ |  |jd¡ d S )Nrm   rn   ro   FTr>   rp   rr   ry   rz   úGoodbye world!r   r€   r‚   r|   )r   r   r„   r   rd   r…   r†   rs   r‰   rŠ   r   r-   r   r5   r6   rD   rv   rw   r8   ©r$   r%   rŽ   r&   r&   r'   Ú'test_go_live_when_newer_revision_exists3  s&    úFzHTestPublishScheduledPagesCommand.test_go_live_when_newer_revision_existsc              	   C   s$  t ddddt ¡ tdd d}| jj|d |jt ¡ tdd d	 tjj	dd
}|  
|j¡ |  tjj|jdjdd ¡ ¡ |  d¡F | jdd t d¡ W d   ƒ n1 s¼0    Y  W d   ƒ n1 sÚ0    Y  tjj	dd
}|  
|j¡ |  tjj|jdjdd ¡ ¡ d S )Nrm   rn   ro   Fr>   rp   )rs   rt   ru   rv   rx   ry   rz   r|   r}   Tr~   é/   r€   r‚   )r   r   r„   r   rd   r…   r†   r   r5   r6   rL   rv   rD   r   r‡   rE   r=   rˆ   rF   r‰   rŠ   r   r-   rœ   r&   r&   r'   Ú.test_future_go_live_page_will_not_be_publishedL  s4    ûÿÿFÿÿzOTestPublishScheduledPagesCommand.test_future_go_live_page_will_not_be_publishedc              
      sV  dg‰ d g‰‡ ‡fdd„}t  |¡ ztdddddt ¡ tdd	 d
}| jj|d tj	j
dd}|  |j¡ |  d¡F | jdd t d¡ W d   ƒ n1 sª0    Y  W d   ƒ n1 sÈ0    Y  tj	j
dd}|  |j¡ |  |j¡ |  |j¡ |  ˆ d ¡ |  ˆd |¡ |  ˆd ˆd j¡ W t  |¡ nt  |¡ 0 d S )NFc                    s   dˆ d< |ˆd< d S rf   r&   rg   rj   r&   r'   Úpage_unpublished_handlerq  s    zhTestPublishScheduledPagesCommand.test_expired_page_will_be_unpublished.<locals>.page_unpublished_handlerrm   rn   ro   Tr>   rp   )rs   rt   ru   rv   rw   Ú	expire_atry   r|   é   r€   r‚   r   )r   rƒ   r   r   r„   r   rd   r…   r   r5   r6   rD   rv   r‰   rŠ   r   r-   rL   rw   Úexpiredr8   rŒ   r   )r$   r    r%   rŽ   r&   rj   r'   Ú%test_expired_page_will_be_unpublishedl  s6    
úFzFTestPublishScheduledPagesCommand.test_expired_page_will_be_unpublishedc              	   C   sÒ   t ddddt ¡ tdd d}| jj|d tjjdd	}|  	|j
¡ |  d
¡F | jdd t d¡ W d   ƒ n1 s€0    Y  W d   ƒ n1 sž0    Y  tjjdd	}|  	|j
¡ |  |j¡ d S )Nrm   rn   ro   Tr>   rp   ©rs   rt   ru   rv   r¡   ry   r|   é   r€   r‚   )r   r   r„   r   rd   r…   r   r5   r6   rD   rv   r‰   rŠ   r   r-   rL   r£   rœ   r&   r&   r'   Ú0test_future_expired_page_will_not_be_unpublished•  s     ûFzQTestPublishScheduledPagesCommand.test_future_expired_page_will_not_be_unpublishedN)rQ   rR   rS   rT   re   r   rš   r   rŸ   r¤   r§   r&   r&   r&   r'   ra   µ   s   4: )ra   c                   @   sJ   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S )ÚTestPublishScheduledCommandr!   c                 C   s   t  ¡  tjjddd| _d S )Nrm   F)Útextrv   )r   rc   r   r5   ÚcreateÚsnippetr^   r&   r&   r'   re   µ  s    z!TestPublishScheduledCommand.setUpc              	      s‚  dg‰ d g‰‡ ‡fdd„}t  |¡ zJt ¡ tdd }d| j_|| j_| jj|d | j 	¡  |  
| jj¡ |  tj | j¡jdd ¡ ¡ |  d	¡F | jdd
 t d¡ W d   ƒ n1 sÈ0    Y  W d   ƒ n1 sæ0    Y  | j 	¡  |  | jj¡ |  | jj¡ |  
| jj¡ |  
tj | j¡jdd ¡ ¡ |  ˆ d ¡ |  ˆd | j¡ W t  |¡ nt  |¡ 0 d S )NFc                    s   dˆ d< |ˆd< d S rf   r&   rg   ©rk   Z
signal_objr&   r'   Úpublished_handler¾  s    zUTestPublishScheduledCommand.test_go_live_will_be_published.<locals>.published_handlerr>   rp   Trz   r~   é   r€   Úpublish_scheduledr   )r   rƒ   r   r„   r   r«   rw   rx   r†   Úrefresh_from_dbrL   rv   rD   r   r5   Úfor_instancerˆ   rF   r‰   rŠ   r   r-   r‹   r8   r   )r$   r­   rx   r&   r¬   r'   Útest_go_live_will_be_published¹  s>    

ÿÿF
ÿÿz:TestPublishScheduledCommand.test_go_live_will_be_publishedc              	      s¦  dg‰ d g‰|   d¡}|j tjjdd¡ ‡ ‡fdd„}t |¡ zNt 	¡ t
dd }d	| j_|| j_| jj||d
 | j ¡  |  | jj¡ |  tj | j¡jd	d ¡ ¡ |  d¡F | jd	d t d¡ W d   ƒ n1 sê0    Y  W d   ƒ n1 s
0    Y  | j ¡  |  | jj¡ |  | jj¡ |  | jj¡ |  tj | j¡jd	d ¡ ¡ |  ˆ d ¡ |  ˆd | j¡ W t |¡ nt |¡ 0 d S )NFr   r‘   r’   c                    s   dˆ d< |ˆd< d S rf   r&   rg   r¬   r&   r'   r­   ï  s    zgTestPublishScheduledCommand.test_go_live_created_by_editor_will_be_published.<locals>.published_handlerr>   rp   Tr”   r~   r®   r€   r¯   r   )r–   r—   r˜   r   r5   r6   r   rƒ   r   r„   r   r«   rw   rx   r†   r°   rL   rv   rD   r   r±   rˆ   rF   r‰   rŠ   r   r-   r‹   r8   r   )r$   r™   r­   rx   r&   r¬   r'   Ú0test_go_live_created_by_editor_will_be_publishedç  sB    


ÿÿH
ÿÿzLTestPublishScheduledCommand.test_go_live_created_by_editor_will_be_publishedc              	   C   sÜ   t  ¡ tdd }d| j_|| j_| jj|d d| j_| j ¡  |  d¡F | j	dd t
 d¡ W d   ƒ n1 sz0    Y  W d   ƒ n1 s˜0    Y  | j ¡  |  | jj¡ |  | jj¡ |  | jjd	¡ d S )
Nr>   rp   Trz   r›   r®   r€   r¯   rm   )r   r„   r   r«   rw   rx   r†   r©   r‰   rŠ   r   r-   r°   rD   rv   r8   )r$   rx   r&   r&   r'   r     s    
F
zCTestPublishScheduledCommand.test_go_live_when_newer_revision_existsc              	   C   s  d| j _t ¡ tdd | j _| j jt ¡ tdd d | j  ¡  |  | j j	¡ |  
tj | j ¡jdd ¡ ¡ |  d¡F | jdd t d¡ W d   ƒ n1 sª0    Y  W d   ƒ n1 sÈ0    Y  |  | j j	¡ |  
tj | j ¡jdd ¡ ¡ d S )	NTr>   rp   rz   r~   é   r€   r¯   )r«   rw   r   r„   r   rx   r†   r°   rL   rv   rD   r   r5   r±   rˆ   rF   r‰   rŠ   r   r-   r^   r&   r&   r'   Ú)test_future_go_live_will_not_be_published+  s*    ÿ
ÿÿFÿÿzETestPublishScheduledCommand.test_future_go_live_will_not_be_publishedc              	      s4  dg‰ d g‰‡ ‡fdd„}t  |¡ zþt ¡ tdd | j_| j ¡  ¡  | j 	¡  |  
| jj¡ |  d¡F | jdd t d	¡ W d   ƒ n1 sš0    Y  W d   ƒ n1 s¸0    Y  | j 	¡  |  | jj¡ |  
| jj¡ |  
| jj¡ |  
ˆ d
 ¡ |  ˆd
 | j¡ W t  |¡ nt  |¡ 0 d S )NFc                    s   dˆ d< |ˆd< d S rf   r&   rg   r¬   r&   r'   Úunpublished_handlerK  s    zYTestPublishScheduledCommand.test_expired_will_be_unpublished.<locals>.unpublished_handlerr>   rp   é
   Tr€   r¯   r   )r   rƒ   r   r„   r   r«   r¡   r†   Úpublishr°   rD   rv   r‰   rŠ   r   r-   rL   rw   r£   r8   r   )r$   r¶   r&   r¬   r'   Ú test_expired_will_be_unpublishedF  s&    

F
z<TestPublishScheduledCommand.test_expired_will_be_unpublishedc              	   C   sÆ   t  ¡ tdd | j_| j ¡  ¡  | j ¡  |  | jj	¡ |  
d¡F | jdd t d¡ W d   ƒ n1 st0    Y  W d   ƒ n1 s’0    Y  | j ¡  |  | jj	¡ |  | jj¡ d S )Nr>   rp   r¦   Tr€   r¯   )r   r„   r   r«   r¡   r†   r¸   r°   rD   rv   r‰   rŠ   r   r-   rL   r£   r^   r&   r&   r'   Ú+test_future_expired_will_not_be_unpublishedg  s    
F
zGTestPublishScheduledCommand.test_future_expired_will_not_be_unpublishedN)rQ   rR   rS   rT   re   r²   r³   r   rµ   r¹   rº   r&   r&   r&   r'   r¨   «  s   .1!r¨   c                   @   s`   e Zd Zi 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 )Ú!TestPurgeRevisionsCommandForPagesc                 C   s   |   ¡ | _d S r"   )Ú
get_objectÚobjectr^   r&   r&   r'   re   z  s    z'TestPurgeRevisionsCommandForPages.setUpc                 C   sB   t jjdd| _tddddd| _| jj| jd | j ¡  | jS )	Nrb   r<   rm   rn   ro   F)rs   rt   ru   rv   ry   )r   r5   r6   rd   r   r%   r…   r°   r^   r&   r&   r'   r¼   }  s    ü
z,TestPurgeRevisionsCommandForPages.get_objectc                 C   s   |   tjj|jd ¡ ¡ d S ©Nr<   )rL   r   r5   rE   r=   rF   ©r$   Úrevisionr&   r&   r'   ÚassertRevisionNotExistsŠ  s    z9TestPurgeRevisionsCommandForPages.assertRevisionNotExistsc                 C   s   |   tjj|jd ¡ ¡ d S r¾   )rD   r   r5   rE   r=   rF   r¿   r&   r&   r'   ÚassertRevisionExists  s    z6TestPurgeRevisionsCommandForPages.assertRevisionExistsc                 K   s$   t jdi i | j¥|¥¤dtƒ i¤ŽS )NÚpurge_revisionsr+   )rÃ   )r   r-   Úbase_optionsr   )r$   r/   r&   r&   r'   r1     s     ÿÿÿz-TestPurgeRevisionsCommandForPages.run_commandc                 C   s4   | j  ¡ }| j  ¡ }|  ¡  |  |¡ |  |¡ d S r"   )r½   r†   r1   rÁ   rÂ   )r$   Z
revision_1Z
revision_2r&   r&   r'   Útest_latest_revision_not_purged•  s
    


zATestPurgeRevisionsCommandForPages.test_latest_revision_not_purgedc                 C   s®   t jjdd}tjjdd}tƒ j ¡ }tjj||dd | j ¡ }| 	| j|¡ | j ¡  |  
¡  |  |¡ tdd" |  
¡  |  |¡ W d   ƒ n1 s 0    Y  d S )NZtest_workflowr’   Ztest_task_1r>   )ÚworkflowZtaskZ
sort_orderF)ZWAGTAIL_WORKFLOW_ENABLED)r   r5   rª   r   r   Úfirstr   r½   r†   Ústartr1   rÂ   r   rÁ   )r$   rÆ   Ztask_1r•   rÀ   r&   r&   r'   Ú3test_revisions_in_moderation_or_workflow_not_purgedŸ  s    


zUTestPurgeRevisionsCommandForPages.test_revisions_in_moderation_or_workflow_not_purgedc                 C   s<   | j jt ¡ tdd d}| j  ¡  |  ¡  |  |¡ d S )Nr>   rp   rz   )r½   r†   r   r„   r   r1   rÂ   r¿   r&   r&   r'   Ú.test_revisions_with_approve_go_live_not_purged¸  s    ÿ
zPTestPurgeRevisionsCommandForPages.test_revisions_with_approve_go_live_not_purgedc                 C   s`   | j  ¡ }| j  ¡  | jdd |  |¡ t ¡ tdd |_| ¡  | jdd |  	|¡ d S )Né   rp   é   )
r½   r†   r1   rÂ   r   r„   r   Z
created_atr7   rÁ   )r$   Zold_revisionr&   r&   r'   Ú%test_purge_revisions_with_date_cutoffÅ  s    


zGTestPurgeRevisionsCommandForPages.test_purge_revisions_with_date_cutoffc                 C   sL   | j  ¡ }tjj|d | j  ¡ }| j  ¡  |  ¡  |  |¡ |  |¡ d S )N)rÀ   )r½   r†   r   r5   rª   r1   rÂ   rÁ   )r$   Zrevision_oldZrevision_purgedr&   r&   r'   Ú$test_purge_revisions_protected_error×  s    



zFTestPurgeRevisionsCommandForPages.test_purge_revisions_protected_errorN)rQ   rR   rS   rÄ   re   r¼   rÁ   rÂ   r1   rÅ   rÉ   rÊ   rÍ   rÎ   r&   r&   r&   r'   r»   w  s   
r»   c                   @   s   e Zd Zdd„ ZdS )Ú$TestPurgeRevisionsCommandForSnippetsc                 C   s   t jjddS )Nrm   )r©   )r   r5   rª   r^   r&   r&   r'   r¼   å  s    z/TestPurgeRevisionsCommandForSnippets.get_objectN)rQ   rR   rS   r¼   r&   r&   r&   r'   rÏ   ä  s   rÏ   c                   @   s   e Zd ZddiZdS )Ú.TestPurgeRevisionsCommandForPagesWithPagesOnlyÚpagesTN©rQ   rR   rS   rÄ   r&   r&   r&   r'   rÐ   é  s   rÐ   c                   @   s   e Zd ZddiZdd„ ZdS )Ú1TestPurgeRevisionsCommandForPagesWithNonPagesOnlyÚ	non_pagesTc                 C   s
   |   |¡S r"   ©rÂ   r¿   r&   r&   r'   rÁ   ò  s    zITestPurgeRevisionsCommandForPagesWithNonPagesOnly.assertRevisionNotExistsN©rQ   rR   rS   rÄ   rÁ   r&   r&   r&   r'   rÓ   í  s   rÓ   c                   @   s   e Zd ZddiZdS )Ú4TestPurgeRevisionsCommandForSnippetsWithNonPagesOnlyrÔ   TNrÒ   r&   r&   r&   r'   r×   ÷  s   r×   c                   @   s   e Zd ZddiZdd„ ZdS )Ú1TestPurgeRevisionsCommandForSnippetsWithPagesOnlyrÑ   Tc                 C   s
   |   |¡S r"   rÕ   r¿   r&   r&   r'   rÁ     s    zITestPurgeRevisionsCommandForSnippetsWithPagesOnly.assertRevisionNotExistsNrÖ   r&   r&   r&   r'   rØ   ý  s   rØ   c                   @   s"   e Zd ZdgZdd„ Zdd„ ZdS )ÚTestPurgeEmbedsCommandr!   c                 C   s:   t dƒD ],}t|› dd ddddddd	d	d
}| ¡  qd S )Né   z+https://www.youtube.com/watch?v=Js8dIRxwSRYÚvideoz	test htmlz
test titleztest author nameztest provider namezhttp://test/thumbnail.urliè  )ÚhashÚurlÚ	max_widthÚtypeÚhtmlrs   Zauthor_nameZprovider_nameZthumbnail_urlÚwidthÚheight)Úranger   r7   )r$   ÚiÚembedr&   r&   r'   re   
  s    õzTestPurgeEmbedsCommand.setUpc                 C   s8   |   tj ¡ d¡ tjdtƒ d |   tj ¡ d¡ dS )zg
        fetch all dummy embeds and confirm they are deleted when the management command runs

        rÚ   Zpurge_embedsrV   r   N)r8   r   r5   Úcountr   r-   r   r^   r&   r&   r'   Útest_purge_embeds  s    z(TestPurgeEmbedsCommand.test_purge_embedsN)rQ   rR   rS   rT   re   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 )	Ú(TestCreateLogEntriesFromRevisionsCommandr!   c              	   C   sÜ   t ddddt ¡ tdd d| _tjjdd	j| jd
 t	dƒD ]}| j 
¡  qBd| j_| j 
¡ }| ¡  tdddddd| _tjjdd	j| jd
 t	dƒD ]}| j 
¡  q d| j_| j 
¡ }| ¡  tj ¡  ¡  d S )Nrm   rn   ro   Fr>   rp   r¥   rb   r<   ry   é   zHello world!!zThe moonzthe-moonzthe moonzis made of cheese)rs   rt   Zboring_dataÚsecret_datarv   zis flat)r   r   r„   r   r%   r   r5   r6   r…   rã   r†   rs   r¸   r   Úsecret_pagerê   r   Úallr#   )r$   rä   rÀ   r&   r&   r'   re   ,  s6    û
û
z.TestCreateLogEntriesFromRevisionsCommand.setUpc                 C   s€   t  d¡ |  ttj dd¡ƒtt| jj	df| jj	df| jj	df| jj	df| j
j	df| j
j	df| j
j	df| j
j	dfgƒƒ¡ d S )NÚ!create_log_entries_from_revisionsr[   Úactionzwagtail.createzwagtail.editzwagtail.publish)r   r-   ZassertListEqualÚlistr   r5   rZ   Úreversedr%   Úpkrë   r^   r&   r&   r'   Ú'test_log_entries_created_from_revisionsX  s"    








ôÿÿûzPTestCreateLogEntriesFromRevisionsCommand.test_log_entries_created_from_revisionsc                 C   sR   t jdd t jd, t d¡ |  tj ¡ d¡ W d   ƒ n1 sD0    Y  d S )Nz"wagtail.models.Page.specific_class)Zreturn_valueZnew_callablerí   r   )	r   ÚpatchZPropertyMockr   r-   r8   r   r5   ræ   r^   r&   r&   r'   Ú:test_command_doesnt_crash_for_revisions_without_page_modelu  s    ý
zcTestCreateLogEntriesFromRevisionsCommand.test_command_doesnt_crash_for_revisions_without_page_modelN)rQ   rR   rS   rT   re   rò   rô   r&   r&   r&   r'   rè   )  s   ,rè   N):Údatetimer   Úior   Zunittestr   Zdjango.contrib.authr   Zdjango.contrib.auth.modelsr   Zdjango.corer   Zdjango.core.cacher   Z	django.dbr	   Zdjango.testr
   r   Zdjango.utilsr   Zwagtail.embeds.modelsr   Zwagtail.modelsr   r   r   r   r   r   r   Zwagtail.signalsr   r   r   r   Zwagtail.test.testapp.modelsr   r   r   r   r   r   Zwagtail.test.utilsr   r    rU   r]   ra   r¨   r»   rÏ   rÐ   rÓ   r×   rØ   rÙ   rè   r&   r&   r&   r'   Ú<module>   s^   $	 t
ÿÿÿ pÿÿÿ Fm
ÿ

ÿ
ÿ
"