o
    ÌÉhŒ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                   @   óJ   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	   ÚModelÚdelete)ÚselfÚpage© r(   úf/var/www/html/ndineBlogger/venv/lib/python3.10/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/©Úurl_pathé90  )r   ÚobjectsÚgetÚnumchildÚsaveÚassertEqualr3   )r&   ÚhomepageÚ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 )Nr4   r5   r7   é*   ©Úidé   )
r   r8   r9   Údepthr;   r   Úget_first_root_noder<   rB   r3   )r&   r=   Ú	old_depthÚ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/r5   ú/home/events/christmas/rA   ú-Incorrect numchild value found for pages: [2]z*Orphaned pages found: [4, 5, 6, 9, 13, 15])r   r8   r9   r   r*   Ú
assertTrueÚfilterrB   Úexistsr3   ÚreadÚassertIn©r&   Úevents_indexÚchristmas_pager2   Ú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 )	NrI   r5   rJ   rA   T)Údelete_orphansrK   z7 orphaned pages deleted.)r   r8   r9   r   r*   rL   rM   rB   rN   r3   rO   rP   ÚassertFalserQ   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 )NrI   r5   Ú0001)ÚpathT)Úfull)	r   r8   r9   rZ   r%   r3   rL   rM   rN   )r&   rR   r(   r(   r)   Útest_remove_path_holesŒ   s
   "z)TestFixTreeCommand.test_remove_path_holesN)Ú__name__Ú
__module__Ú__qualname__Úfixturesr*   r3   r?   rH   rU   rX   r\   r(   r(   r(   r)   r!   #   s    	r!   c                   @   ó"   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 )NÚ
move_pages©r-   )r   r/   Ústrr   )r&   Úfrom_Útor(   r(   r)   r3   š   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 ¡ |¡ q!d S )NrI   r5   z/home/about-us/rB   T)ÚflatrA   )	r   r8   r9   Úget_childrenÚvalues_listr3   rB   r<   Ú
get_parent)r&   rR   Úabout_usÚpage_idsÚpage_idr(   r(   r)   Útest_move_pages   s   ÿz$TestMovePagesCommand.test_move_pagesN)r]   r^   r_   r`   r3   ro   r(   r(   r(   r)   rb   —   ó    rb   c                   @   ra   )ÚTestSetUrlPathsCommandr"   c                 C   s   t jdtƒ d d S )NÚset_url_pathsrd   )r   r/   r   ©r&   r(   r(   r)   r3   ®   s   z"TestSetUrlPathsCommand.run_commandc                 C   s   |   ¡  d S r#   )r3   rs   r(   r(   r)   Útest_set_url_paths±   s   z)TestSetUrlPathsCommand.test_set_url_pathsN)r]   r^   r_   r`   r3   rt   r(   r(   r(   r)   rq   «   rp   rq   ÚdefaultÚBACKENDz-django.core.cache.backends.locmem.LocMemCache)ÚCACHESc                   @   r    )Ú TestPublishScheduledPagesCommandr"   c                 C   s   t  ¡  tjjdd| _d S )Né   rA   )r   Úclearr   r8   r9   Ú	root_pagers   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¡# | jdd t d¡ W d   ƒ n1 srw   Y  W d   ƒ n1 sw   Y  t	j
jdd}|  |j¡ |  |j¡ |  |j¡ |  tjj|jdjdd ¡ ¡ |  ˆ d ¡ |  ˆd |¡ |  ˆd ˆd j¡ W t  |¡ d S t  |¡ w )NFc                    ó   dˆ d< |ˆd< d S ©NTr   r(   ©ÚsenderÚinstanceÚkwargs©Úsignal_firedÚsignal_pager(   r)   Úpage_published_handlerÊ   ó   zdTestPublishScheduledPagesCommand.test_go_live_page_will_be_published.<locals>.page_published_handlerúHello world!úhello-worldÚhelloTrC   ©Údays©ÚtitleÚslugÚcontentÚliveÚhas_unpublished_changesÚ
go_live_at©r   ©Úapproved_go_live_at©r   ©Ú	object_id©Úapproved_go_live_at__isnullé1   ©ÚexecuteÚpublish_scheduled_pagesr   )r   Úconnectr   r   Únowr   r{   Ú	add_childÚsave_revisionr   r8   r9   rW   r‘   rL   r   Úpage_revisionsrM   rB   ÚexcluderN   ÚassertNumQueriesÚcaptureOnCommitCallbacksr   r/   Úfirst_published_atr’   r<   ÚspecificÚ
disconnect)r&   r†   r'   Úpr(   rƒ   r)   Ú#test_go_live_page_will_be_publishedÅ   sV   
úÿýÿ€ÿÿý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¡# | jd
d t d¡ W d   ƒ n1 sƒw   Y  W d   ƒ n1 s’w   Y  tjjdd}|  |j¡ |  |j¡ |  |j¡ |  tjj|jdjd
d ¡ ¡ |  ˆ d ¡ |  ˆd |¡ |  ˆd ˆd j ¡ W t !|¡ d S t !|¡ w )NFÚedúSite-wide editors©Únamec                    r}   r~   r(   r   rƒ   r(   r)   r†     r‡   zvTestPublishScheduledPagesCommand.test_go_live_page_created_by_editor_will_be_published.<locals>.page_published_handlerrˆ   r‰   rŠ   TrC   r‹   r   r”   ©Úuserr–   r—   r˜   rš   rœ   r   rŸ   r   )"Úcreate_userÚgroupsÚaddr   r8   r9   r   r    r   r   r¡   r   r{   r¢   r£   r   rW   r‘   rL   r   r¤   rM   rB   r¥   rN   r¦   r§   r   r/   r¨   r’   r<   r©   rª   )r&   Úeditorr†   r'   r«   r(   rƒ   r)   Ú5test_go_live_page_created_by_editor_will_be_publishedù   s^   

úÿÿýÿ€ÿÿý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¡# | j	dd t
 d¡ W d   ƒ n1 sHw   Y  W d   ƒ n1 sWw   Y  tjjdd}|  |j¡ |  |j¡ |  |jd¡ d S )Nrˆ   r‰   rŠ   FTrC   r‹   r   r”   r•   úGoodbye world!rœ   r   rŸ   r—   )r   r   r¡   r   r{   r¢   r£   rŽ   r¦   r§   r   r/   r   r8   r9   rL   r‘   r’   r<   ©r&   r'   r«   r(   r(   r)   Ú'test_go_live_when_newer_revision_exists3  s,   úÿ€ÿ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¡# | jdd t d¡ W d   ƒ n1 s^w   Y  W d   ƒ n1 smw   Y  tjj	dd
}|  
|j¡ |  tjj|jdjdd ¡ ¡ d S )Nrˆ   r‰   rŠ   FrC   r‹   )rŽ   r   r   r‘   r“   r”   r•   r—   r˜   Trš   é/   r   rŸ   )r   r   r¡   r   r{   r¢   r£   r   r8   r9   rW   r‘   rL   r   r¤   rM   rB   r¥   rN   r¦   r§   r   r/   r¹   r(   r(   r)   Ú.test_future_go_live_page_will_not_be_publishedL  s>   ûÿýÿ€ÿÿýzOTestPublishScheduledPagesCommand.test_future_go_live_page_will_not_be_publishedc              
      sR  dg‰ d g‰‡ ‡fdd„}t  |¡ ztdddddt ¡ tdd	 d
}| jj|d tj	j
dd}|  |j¡ |  d¡# | jdd t d¡ W d   ƒ n1 sTw   Y  W d   ƒ n1 scw   Y  tj	j
dd}|  |j¡ |  |j¡ |  |j¡ |  ˆ d ¡ |  ˆd |¡ |  ˆd ˆd j¡ W t  |¡ d S t  |¡ w )NFc                    r}   r~   r(   r   rƒ   r(   r)   Úpage_unpublished_handlerq  r‡   zhTestPublishScheduledPagesCommand.test_expired_page_will_be_unpublished.<locals>.page_unpublished_handlerrˆ   r‰   rŠ   TrC   r‹   )rŽ   r   r   r‘   r’   Ú	expire_atr”   r—   é   r   rŸ   r   )r   r    r   r   r¡   r   r{   r¢   r   r8   r9   rL   r‘   r¦   r§   r   r/   rW   r’   Úexpiredr<   r©   rª   )r&   r½   r'   r«   r(   rƒ   r)   Ú%test_expired_page_will_be_unpublishedl  s<   
úÿ€ÿ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
¡# | jdd t d¡ W d   ƒ n1 s@w   Y  W d   ƒ n1 sOw   Y  tjjdd	}|  	|j
¡ |  |j¡ d S )Nrˆ   r‰   rŠ   TrC   r‹   ©rŽ   r   r   r‘   r¾   r”   r—   é   r   rŸ   )r   r   r¡   r   r{   r¢   r   r8   r9   rL   r‘   r¦   r§   r   r/   rW   rÀ   r¹   r(   r(   r)   Ú0test_future_expired_page_will_not_be_unpublished•  s&   ûÿ€ÿzQTestPublishScheduledPagesCommand.test_future_expired_page_will_not_be_unpublishedN)r]   r^   r_   r`   r|   r¬   r·   rº   r¼   rÁ   rÄ   r(   r(   r(   r)   rx   µ   s    4: )rx   c                   @   r    )ÚTestPublishScheduledCommandr"   c                 C   s   t  ¡  tjjddd| _d S )Nrˆ   F)Útextr‘   )r   rz   r   r8   ÚcreateÚsnippetrs   r(   r(   r)   r|   µ  s   z!TestPublishScheduledCommand.setUpc              	      s~  dg‰ d g‰‡ ‡fdd„}t  |¡ z¦t ¡ tdd }d| j_|| j_| jj|d | j 	¡  |  
| jj¡ |  tj | j¡jdd ¡ ¡ |  d	¡# | jdd
 t d¡ W d   ƒ n1 scw   Y  W d   ƒ n1 srw   Y  | j 	¡  |  | jj¡ |  | jj¡ |  
| jj¡ |  
tj | j¡jdd ¡ ¡ |  ˆ d ¡ |  ˆd | j¡ W t  |¡ d S t  |¡ w )NFc                    r}   r~   r(   r   ©r„   Ú
signal_objr(   r)   Úpublished_handler¾  r‡   zUTestPublishScheduledCommand.test_go_live_will_be_published.<locals>.published_handlerrC   r‹   Tr•   rš   é   r   Úpublish_scheduledr   )r   r    r   r¡   r   rÈ   r’   r“   r£   Úrefresh_from_dbrW   r‘   rL   r   r8   Úfor_instancer¥   rN   r¦   r§   r   r/   r¨   r<   rª   )r&   rË   r“   r(   rÉ   r)   Útest_go_live_will_be_published¹  sH   

ÿýÿ€ÿ
ÿýz:TestPublishScheduledCommand.test_go_live_will_be_publishedc              	      s   dg‰ d g‰|   d¡}|j tjjdd¡ ‡ ‡fdd„}t |¡ z§t 	¡ t
dd }d	| j_|| j_| jj||d
 | j ¡  |  | jj¡ |  tj | j¡jd	d ¡ ¡ |  d¡# | jd	d t d¡ W d   ƒ n1 stw   Y  W d   ƒ n1 sƒw   Y  | j ¡  |  | jj¡ |  | jj¡ |  | jj¡ |  tj | j¡jd	d ¡ ¡ |  ˆ d ¡ |  ˆd | j¡ W t |¡ d S t |¡ w )NFr­   r®   r¯   c                    r}   r~   r(   r   rÉ   r(   r)   rË   ï  r‡   zgTestPublishScheduledCommand.test_go_live_created_by_editor_will_be_published.<locals>.published_handlerrC   r‹   Tr±   rš   rÌ   r   rÍ   r   )r³   r´   rµ   r   r8   r9   r   r    r   r¡   r   rÈ   r’   r“   r£   rÎ   rW   r‘   rL   r   rÏ   r¥   rN   r¦   r§   r   r/   r¨   r<   rª   )r&   r¶   rË   r“   r(   rÉ   r)   Ú0test_go_live_created_by_editor_will_be_publishedç  sL   


ÿýÿ€ÿ
ÿý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¡# | j	dd t
 d¡ W d   ƒ n1 s=w   Y  W d   ƒ n1 sLw   Y  | j ¡  |  | jj¡ |  | jj¡ |  | jjd	¡ d S )
NrC   r‹   Tr•   r¸   rÌ   r   rÍ   rˆ   )r   r¡   r   rÈ   r’   r“   r£   rÆ   r¦   r§   r   r/   rÎ   rL   r‘   r<   )r&   r“   r(   r(   r)   rº     s    
ÿ€ÿ
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¡# | jdd t d¡ W d   ƒ n1 sUw   Y  W d   ƒ n1 sdw   Y  |  | j j	¡ |  
tj | j ¡jdd ¡ ¡ d S )	NTrC   r‹   r•   rš   é   r   rÍ   )rÈ   r’   r   r¡   r   r“   r£   rÎ   rW   r‘   rL   r   r8   rÏ   r¥   rN   r¦   r§   r   r/   rs   r(   r(   r)   Ú)test_future_go_live_will_not_be_published+  s4   ÿ
ÿýÿ€ÿÿýzETestPublishScheduledCommand.test_future_go_live_will_not_be_publishedc              	      s2  dg‰ d g‰‡ ‡fdd„}t  |¡ z€t ¡ tdd | j_| j ¡  ¡  | j 	¡  |  
| jj¡ |  d¡# | jdd t d	¡ W d   ƒ n1 sMw   Y  W d   ƒ n1 s\w   Y  | j 	¡  |  | jj¡ |  
| jj¡ |  
| jj¡ |  
ˆ d
 ¡ |  ˆd
 | j¡ W t  |¡ d S t  |¡ w )NFc                    r}   r~   r(   r   rÉ   r(   r)   Úunpublished_handlerK  r‡   zYTestPublishScheduledCommand.test_expired_will_be_unpublished.<locals>.unpublished_handlerrC   r‹   é
   Tr   rÍ   r   )r   r    r   r¡   r   rÈ   r¾   r£   ÚpublishrÎ   rL   r‘   r¦   r§   r   r/   rW   r’   rÀ   r<   rª   )r&   rÔ   r(   rÉ   r)   Ú test_expired_will_be_unpublishedF  s,   

ÿ€ÿ
z<TestPublishScheduledCommand.test_expired_will_be_unpublishedc              	   C   sÆ   t  ¡ tdd | j_| j ¡  ¡  | j ¡  |  | jj	¡ |  
d¡# | jdd t d¡ W d   ƒ n1 s:w   Y  W d   ƒ n1 sIw   Y  | j ¡  |  | jj	¡ |  | jj¡ d S )NrC   r‹   rÃ   Tr   rÍ   )r   r¡   r   rÈ   r¾   r£   rÖ   rÎ   rL   r‘   r¦   r§   r   r/   rW   rÀ   rs   r(   r(   r)   Ú+test_future_expired_will_not_be_unpublishedg  s   
ÿ€ÿ
zGTestPublishScheduledCommand.test_future_expired_will_not_be_unpublishedN)r]   r^   r_   r`   r|   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Úobjectrs   r(   r(   r)   r|   z  ó   z'TestPurgeRevisionsCommandForPages.setUpc                 C   sB   t jjdd| _tddddd| _| jj| jd | j ¡  | jS )	Nry   rA   rˆ   r‰   rŠ   F)rŽ   r   r   r‘   r”   )r   r8   r9   r{   r   r'   r¢   rÎ   rs   r(   r(   r)   rÚ   }  s   ü
z,TestPurgeRevisionsCommandForPages.get_objectc                 C   ó   |   tjj|jd ¡ ¡ d S ©NrA   )rW   r   r8   rM   rB   rN   ©r&   Úrevisionr(   r(   r)   ÚassertRevisionNotExistsŠ  ó   z9TestPurgeRevisionsCommandForPages.assertRevisionNotExistsc                 C   rÝ   rÞ   )rL   r   r8   rM   rB   rN   rß   r(   r(   r)   ÚassertRevisionExists  râ   z6TestPurgeRevisionsCommandForPages.assertRevisionExistsc                 K   s&   t j	di i | j¥|¥¤dtƒ i¤ŽS )NÚpurge_revisionsr-   )rä   )r   r/   Úbase_optionsr   )r&   r1   r(   r(   r)   r3     s   ÿÿÿz-TestPurgeRevisionsCommandForPages.run_commandc                 C   s4   | j  ¡ }| j  ¡ }|  ¡  |  |¡ |  |¡ d S r#   )rÛ   r£   r3   rá   rã   )r&   Ú
revision_1Ú
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   ƒ d S 1 sQw   Y  d S )NÚtest_workflowr¯   Útest_task_1rC   )ÚworkflowÚtaskÚ
sort_orderF)ÚWAGTAIL_WORKFLOW_ENABLED)r   r8   rÇ   r   r   Úfirstr   rÛ   r£   Ústartr3   rã   r   rá   )r&   rë   Ú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 )NrC   r‹   r•   )rÛ   r£   r   r¡   r   r3   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é   r‹   é   )
rÛ   r£   r3   rã   r   r¡   r   Ú
created_atr;   rá   )r&   Ú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   r8   rÇ   r3   rã   rá   )r&   Úrevision_oldÚrevision_purgedr(   r(   r)   Ú$test_purge_revisions_protected_error×  s   



zFTestPurgeRevisionsCommandForPages.test_purge_revisions_protected_errorN)r]   r^   r_   rå   r|   rÚ   rá   rã   r3   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 )Nrˆ   )rÆ   )r   r8   rÇ   rs   r(   r(   r)   rÚ   å  rÜ   z/TestPurgeRevisionsCommandForSnippets.get_objectN)r]   r^   r_   rÚ   r(   r(   r(   r)   rü   ä  ó    rü   c                   @   ó   e Zd ZddiZdS )Ú.TestPurgeRevisionsCommandForPagesWithPagesOnlyÚpagesTN©r]   r^   r_   rå   r(   r(   r(   r)   rÿ   é  rý   rÿ   c                   @   ó   e Zd ZddiZdd„ ZdS )Ú1TestPurgeRevisionsCommandForPagesWithNonPagesOnlyÚ	non_pagesTc                 C   ó
   |   |¡S r#   ©rã   rß   r(   r(   r)   rá   ò  ó   
zITestPurgeRevisionsCommandForPagesWithNonPagesOnly.assertRevisionNotExistsN©r]   r^   r_   rå   rá   r(   r(   r(   r)   r  í  ó    r  c                   @   rþ   )Ú4TestPurgeRevisionsCommandForSnippetsWithNonPagesOnlyr  TNr  r(   r(   r(   r)   r
  ÷  s    r
  c                   @   r  )Ú1TestPurgeRevisionsCommandForSnippetsWithPagesOnlyr   Tc                 C   r  r#   r  rß   r(   r(   r)   rá     r  zITestPurgeRevisionsCommandForSnippetsWithPagesOnly.assertRevisionNotExistsNr  r(   r(   r(   r)   r  ý  r	  r  c                   @   ra   )Ú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ÚhtmlrŽ   Úauthor_nameÚprovider_nameÚthumbnail_urlÚwidthÚheight)Úranger   r;   )r&   ÚiÚembedr(   r(   r)   r|   
  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  Úpurge_embedsrd   r   N)r<   r   r8   Úcountr   r/   r   rs   r(   r(   r)   Útest_purge_embeds  s   z(TestPurgeEmbedsCommand.test_purge_embedsN)r]   r^   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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 
¡  q!d| j_| j 
¡ }| ¡  tdddddd| _tjjdd	j| jd
 t	dƒD ]}| j 
¡  qPd| j_| j 
¡ }| ¡  tj ¡  ¡  d S )Nrˆ   r‰   rŠ   FrC   r‹   rÂ   ry   rA   r”   é   zHello world!!zThe moonzthe-moonzthe moonzis made of cheese)rŽ   r   Úboring_dataÚsecret_datar‘   zis flat)r   r   r¡   r   r'   r   r8   r9   r¢   r  r£   rŽ   rÖ   r   Úsecret_pager"  r   Úallr%   )r&   r  rà   r(   r(   r)   r|   ,  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_revisionsrn   Úactionzwagtail.createzwagtail.editzwagtail.publish)r   r/   ÚassertListEqualÚlistr   r8   rj   Úreversedr'   Úpkr#  rs   r(   r(   r)   Ú'test_log_entries_created_from_revisionsX  s"   








ôÿÿûzPTestCreateLogEntriesFromRevisionsCommand.test_log_entries_created_from_revisionsc                 C   sT   t jdd t jd t d¡ |  tj ¡ d¡ W d   ƒ d S 1 s#w   Y  d S )Nz"wagtail.models.Page.specific_class)Úreturn_valueÚnew_callabler%  r   )	r   ÚpatchÚPropertyMockr   r/   r<   r   r8   r  rs   r(   r(   r)   Ú:test_command_doesnt_crash_for_revisions_without_page_modelu  s   ý
"úzcTestCreateLogEntriesFromRevisionsCommand.test_command_doesnt_crash_for_revisions_without_page_modelN)r]   r^   r_   r`   r|   r+  r0  r(   r(   r(   r)   r  )  s
    ,r  N):Údatetimer   Úior   Úunittestr   Údjango.contrib.authr   Údjango.contrib.auth.modelsr   Údjango.corer   Údjango.core.cacher   Ú	django.dbr	   Údjango.testr
   r   Údjango.utilsr   Úwagtail.embeds.modelsr   Úwagtail.modelsr   r   r   r   r   r   r   Úwagtail.signalsr   r   r   r   Úwagtail.test.testapp.modelsr   r   r   r   r   r   Úwagtail.test.utilsr   r!   rb   rq   rx   rÅ   rÙ   rü   rÿ   r  r
  r  r  r  r(   r(   r(   r)   Ú<module>   s`    $	 t
ÿÿÿ pÿÿÿ Fm
ÿ

ÿ
ÿ
"