U
    |®ÞhÄr  ã                   @   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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-G dd„ de*eƒZ.G dd„ de*eƒZ/G dd„ deƒZ0G dd„ de0ƒZ1G dd„ de0ƒZ2G dd „ d e0ƒZ3G d!d"„ d"e1ƒZ4G d#d$„ d$e1ƒZ5G d%d&„ d&eƒZ6G d'd(„ d(eƒZ7d)S )*é    )Ú	timedelta)ÚStringIO)Úmock)Úget_user_model)ÚGroup)Ú
management)Ú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%   ún/var/www/dating/data/www/fatepal.com/env/lib/python3.8/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ÚassertEqualr0   )r#   ÚhomepageZold_numchildr%   r%   r&   Útest_fixes_numchild3   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 )Nr1   r2   r3   é*   ©Úidé   )
r   r4   r5   Údepthr6   r   Zget_first_root_noder7   r<   r0   )r#   r8   Z	old_depthZroot_collectionr%   r%   r&   Útest_fixes_depthE   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/r2   ú/home/events/christmas/r;   ú-Incorrect numchild value found for pages: [2]z*Orphaned pages found: [4, 5, 6, 9, 13, 15])r   r4   r5   r   r'   Ú
assertTrueÚfilterr<   Úexistsr0   ÚreadÚassertIn©r#   Úevents_indexZchristmas_pager/   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 )	Nr@   r2   rA   r;   T)Zdelete_orphansrB   z7 orphaned pages deleted.)r   r4   r5   r   r'   rC   rD   r<   rE   r0   rF   rG   ÚassertFalserH   r%   r%   r&   Útest_deletes_orphansu   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 )Nr@   r2   Z0001)ÚpathT)Úfull)	r   r4   r5   rM   r"   r0   rC   rD   rE   )r#   rI   r%   r%   r&   Útest_remove_path_holes‹   s
    z)TestFixTreeCommand.test_remove_path_holesN)Ú__name__Ú
__module__Ú__qualname__Úfixturesr'   r0   r9   r?   rJ   rL   rO   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#   Zfrom_Útor%   r%   r&   r0   ™   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 )Nr@   r2   z/home/about-us/r<   T)Zflatr;   )	r   r4   r5   Zget_childrenÚvalues_listr0   r<   r7   Z
get_parent)r#   rI   Zabout_usZpage_idsÚpage_idr%   r%   r&   Útest_move_pagesœ   s    z$TestMovePagesCommand.test_move_pagesN)rP   rQ   rR   rS   r0   rZ   r%   r%   r%   r&   rT   –   s   rT   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_pathsrU   )r   r,   r   ©r#   r%   r%   r&   r0   ­   s    z"TestSetUrlPathsCommand.run_commandc                 C   s   |   ¡  d S r!   )r0   r\   r%   r%   r&   Útest_set_url_paths°   s    z)TestSetUrlPathsCommand.test_set_url_pathsN)rP   rQ   rR   rS   r0   r]   r%   r%   r%   r&   r[   ª   s   r[   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 )Ú TestPublishScheduledPagesCommandr    c                 C   s   t jjdd| _d S )Né   r;   )r   r4   r5   Ú	root_pager\   r%   r%   r&   ÚsetUp·   s    z&TestPublishScheduledPagesCommand.setUpc              
      sT  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 ¡ ¡ t d¡ t
jjdd}|  |j¡ |  |j¡ |  |j¡ |  tjj|jdjdd ¡ ¡ |  ˆ d ¡ |  ˆd |¡ |  ˆd ˆd j¡ W 5 t  |¡ X 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©rd   ©Úapproved_go_live_at©rp   ©Z	object_id©Zapproved_go_live_at__isnullÚpublish_scheduled_pagesr   )r   ÚconnectÚ
disconnectr   r   Únowr   r`   Ú	add_childÚsave_revisionr   r4   r5   rK   rr   rC   r   Úpage_revisionsrD   r<   ÚexcluderE   r   r,   Úfirst_published_atrs   r7   Úspecific)r#   rh   r$   Úpr%   rf   r&   Ú#test_go_live_page_will_be_published»   sH    
úÿÿ
ÿÿzDTestPublishScheduledPagesCommand.test_go_live_page_will_be_publishedc              
      sv  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 ¡ ¡ t d¡ tjjdd}|  |j¡ |  |j¡ |  |j¡ |  tjj|jdjd
d ¡ ¡ |  ˆ d ¡ |  ˆd |¡ |  ˆd ˆd j¡ W 5 t |¡ X d S )NFÚedúSite-wide editors©Únamec                    s   dˆ d< |ˆd< d S rb   r%   rc   rf   r%   r&   rh   ö   s    zvTestPublishScheduledPagesCommand.test_go_live_page_created_by_editor_will_be_published.<locals>.page_published_handlerri   rj   rk   Tr=   rl   rn   ru   ©Úuserrw   rx   ry   rz   r{   r   ) Úcreate_userÚgroupsÚaddr   r4   r5   r   r|   r}   r   r   r~   r   r`   r   r€   r   rK   rr   rC   r   r   rD   r<   r‚   rE   r   r,   rƒ   rs   r7   r„   )r#   Úeditorrh   r$   r…   r%   rf   r&   Ú5test_go_live_page_created_by_editor_will_be_publishedî   sR    

ú ÿÿÿ
ÿÿ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|_| ¡  t 	d¡ t
jjdd}|  |j¡ |  |j¡ |  |jd¡ d S )Nri   rj   rk   FTr=   rl   rn   ru   rv   úGoodbye world!r{   rx   )r   r   r~   r   r`   r   r€   ro   r   r,   r   r4   r5   rC   rr   rs   r7   ©r#   r$   r…   r%   r%   r&   Ú'test_go_live_when_newer_revision_exists&  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 ¡ ¡ t d¡ tjj	dd
}|  
|j¡ |  tjj|jdjdd ¡ ¡ d S )Nri   rj   rk   Fr=   rl   )ro   rp   rq   rr   rt   ru   rv   rx   ry   Trz   r{   )r   r   r~   r   r`   r   r€   r   r4   r5   rK   rr   rC   r   r   rD   r<   r‚   rE   r   r,   r“   r%   r%   r&   Ú.test_future_go_live_page_will_not_be_published=  s0    ûÿÿ
ÿÿzOTestPublishScheduledPagesCommand.test_future_go_live_page_will_not_be_publishedc              
      sô   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¡ t d¡ t	j
jdd}|  |j¡ |  |j¡ |  |j¡ |  ˆ d ¡ |  ˆd |¡ |  ˆd ˆd j¡ W 5 t  |¡ X d S )NFc                    s   dˆ d< |ˆd< d S rb   r%   rc   rf   r%   r&   Úpage_unpublished_handler`  s    zhTestPublishScheduledPagesCommand.test_expired_page_will_be_unpublished.<locals>.page_unpublished_handlerri   rj   rk   Tr=   rl   )ro   rp   rq   rr   rs   Ú	expire_atru   rx   r{   r   )r   r|   r}   r   r   r~   r   r`   r   r   r4   r5   rC   rr   r   r,   rK   rs   Úexpiredr7   r„   )r#   r–   r$   r…   r%   rf   r&   Ú%test_expired_page_will_be_unpublished[  s2    
ú
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
¡ t d
¡ tjjdd	}|  	|j
¡ |  |j¡ d S )Nri   rj   rk   Tr=   rl   ©ro   rp   rq   rr   r—   ru   rx   r{   )r   r   r~   r   r`   r   r   r4   r5   rC   rr   r   r,   rK   r˜   r“   r%   r%   r&   Ú0test_future_expired_page_will_not_be_unpublished‚  s    û
zQTestPublishScheduledPagesCommand.test_future_expired_page_will_not_be_unpublishedN)rP   rQ   rR   rS   ra   r†   r‘   r”   r•   r™   r›   r%   r%   r%   r&   r^   ´   s   38'r^   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 jjddd| _d S )Nri   F)Útextrr   )r   r4   ÚcreateÚsnippetr\   r%   r%   r&   ra   ™  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 ¡ ¡ t d	¡ | j 
¡  |  | jj¡ |  | jj¡ |  | jj¡ |  tj | j¡jdd ¡ ¡ |  ˆ d
 ¡ |  ˆd
 | j¡ W 5 t  |¡ X d S )NFc                    s   dˆ d< |ˆd< d S rb   r%   rc   ©rg   Z
signal_objr%   r&   Úpublished_handler¡  s    zUTestPublishScheduledCommand.test_go_live_will_be_published.<locals>.published_handlerr=   rl   Trv   rz   Úpublish_scheduledr   )r   r|   r}   r   r~   r   rŸ   rs   rt   r€   Úrefresh_from_dbrK   rr   rC   r   r4   Úfor_instancer‚   rE   r   r,   rƒ   r7   )r#   r¡   rt   r%   r    r&   Útest_go_live_will_be_publishedœ  s:    

ÿÿ

ÿÿz:TestPublishScheduledCommand.test_go_live_will_be_publishedc              	      sB  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 ¡ ¡ t d¡ | j ¡  |  | jj¡ |  | jj¡ |  | jj¡ |  tj | j¡jd	d ¡ ¡ |  ˆ d ¡ |  ˆd | j¡ W 5 t |¡ X d S )NFr‡   rˆ   r‰   c                    s   dˆ d< |ˆd< d S rb   r%   rc   r    r%   r&   r¡   Ð  s    zgTestPublishScheduledCommand.test_go_live_created_by_editor_will_be_published.<locals>.published_handlerr=   rl   Tr‹   rz   r¢   r   )r   rŽ   r   r   r4   r5   r   r|   r}   r   r~   r   rŸ   rs   rt   r€   r£   rK   rr   rC   r   r¤   r‚   rE   r   r,   rƒ   r7   )r#   r   r¡   rt   r%   r    r&   Ú0test_go_live_created_by_editor_will_be_publishedÈ  s>    


ÿÿ

ÿÿ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 ¡  t 	d¡ | j 
¡  |  | jj¡ |  | jj¡ |  | jjd¡ d S )Nr=   rl   Trv   r’   r¢   ri   )r   r~   r   rŸ   rs   rt   r€   r   r   r,   r£   rC   rr   r7   )r#   rt   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 ¡ ¡ t d¡ |  | j j	¡ |  
tj | j ¡jdd ¡ ¡ d S )NTr=   rl   rv   rz   r¢   )rŸ   rs   r   r~   r   rt   r€   r£   rK   rr   rC   r   r4   r¤   r‚   rE   r   r,   r\   r%   r%   r&   Ú)test_future_go_live_will_not_be_published  s&    ÿ
ÿÿ
ÿÿzETestPublishScheduledCommand.test_future_go_live_will_not_be_publishedc              	      sÔ   dg‰ d g‰‡ ‡fdd„}t  |¡ zžt ¡ tdd | j_| j ¡  	¡  | j 
¡  |  | jj¡ t d¡ | j 
¡  |  | jj¡ |  | jj¡ |  | jj¡ |  ˆ d ¡ |  ˆd | j¡ W 5 t  |¡ X d S )NFc                    s   dˆ d< |ˆd< d S rb   r%   rc   r    r%   r&   Úunpublished_handler&  s    zYTestPublishScheduledCommand.test_expired_will_be_unpublished.<locals>.unpublished_handlerr=   rl   r¢   r   )r   r|   r}   r   r~   r   rŸ   r—   r€   Úpublishr£   rC   rr   r   r,   rK   rs   r˜   r7   )r#   r¨   r%   r    r&   Ú test_expired_will_be_unpublished!  s"    



z<TestPublishScheduledCommand.test_expired_will_be_unpublishedc                 C   sp   t  ¡ tdd | j_| j ¡  ¡  | j ¡  |  | jj	¡ t
 d¡ | j ¡  |  | jj	¡ |  | jj¡ d S )Nr=   rl   r¢   )r   r~   r   rŸ   r—   r€   r©   r£   rC   rr   r   r,   rK   r˜   r\   r%   r%   r&   Ú+test_future_expired_will_not_be_unpublished@  s    


zGTestPublishScheduledCommand.test_future_expired_will_not_be_unpublishedN)rP   rQ   rR   rS   ra   r¥   r¦   r”   r§   rª   r«   r%   r%   r%   r&   rœ   –  s   ,/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&   ra   Q  s    z'TestPurgeRevisionsCommandForPages.setUpc                 C   sB   t jjdd| _tddddd| _| jj| jd | j ¡  | jS )	Nr_   r;   ri   rj   rk   F)ro   rp   rq   rr   ru   )r   r4   r5   r`   r   r$   r   r£   r\   r%   r%   r&   r­   T  s    ü
z,TestPurgeRevisionsCommandForPages.get_objectc                 C   s   |   tjj|jd ¡ ¡ d S ©Nr;   )rK   r   r4   rD   r<   rE   ©r#   Úrevisionr%   r%   r&   ÚassertRevisionNotExistsa  s    z9TestPurgeRevisionsCommandForPages.assertRevisionNotExistsc                 C   s   |   tjj|jd ¡ ¡ d S r¯   )rC   r   r4   rD   r<   rE   r°   r%   r%   r&   ÚassertRevisionExistsd  s    z6TestPurgeRevisionsCommandForPages.assertRevisionExistsc                 K   s   t jd| j|–dtƒ i—ŽS )NÚpurge_revisionsr*   )r´   )r   r,   Úbase_optionsr   )r#   r.   r%   r%   r&   r0   g  s     ÿÿÿz-TestPurgeRevisionsCommandForPages.run_commandc                 C   s4   | j  ¡ }| j  ¡ }|  ¡  |  |¡ |  |¡ d S r!   )r®   r€   r0   r²   r³   )r#   Z
revision_1Z
revision_2r%   r%   r&   Útest_latest_revision_not_purgedl  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 5 Q R X d S )NZtest_workflowr‰   Ztest_task_1r=   )ÚworkflowÚtaskZ
sort_orderF)ZWAGTAIL_WORKFLOW_ENABLED)r   r4   rž   r   r   Úfirstr   r®   r€   Ústartr0   r³   r
   r²   )r#   r·   Ztask_1rŒ   r±   r%   r%   r&   Ú3test_revisions_in_moderation_or_workflow_not_purgedv  s    


zUTestPurgeRevisionsCommandForPages.test_revisions_in_moderation_or_workflow_not_purgedc                 C   s<   | j jt ¡ tdd d}| j  ¡  |  ¡  |  |¡ d S )Nr=   rl   rv   )r®   r€   r   r~   r   r0   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é   rl   é   )
r®   r€   r0   r³   r   r~   r   Z
created_atr6   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   r4   rž   r0   r³   r²   )r#   Zrevision_oldZrevision_purgedr%   r%   r&   Ú$test_purge_revisions_protected_error®  s    



zFTestPurgeRevisionsCommandForPages.test_purge_revisions_protected_errorN)rP   rQ   rR   rµ   ra   r­   r²   r³   r0   r¶   r»   r¼   r¿   rÀ   r%   r%   r%   r&   r¬   N  s   
r¬   c                   @   s   e Zd Zdd„ ZdS )Ú$TestPurgeRevisionsCommandForSnippetsc                 C   s   t jjddS )Nri   )r   )r   r4   rž   r\   r%   r%   r&   r­   ¼  s    z/TestPurgeRevisionsCommandForSnippets.get_objectN)rP   rQ   rR   r­   r%   r%   r%   r&   rÁ   »  s   rÁ   c                   @   s   e Zd ZddiZdS )Ú.TestPurgeRevisionsCommandForPagesWithPagesOnlyÚpagesTN©rP   rQ   rR   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©rP   rQ   rR   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=Js8dIRxwSRYZvideoz	test htmlz
test titleztest author nameztest provider namezhttp://test/thumbnail.urliè  )ÚhashÚurlÚ	max_widthÚtypeÚhtmlro   Zauthor_nameZprovider_nameZthumbnail_urlÚwidthÚheight)Úranger   r6   )r#   ÚiZembedr%   r%   r&   ra   á  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_embedsrU   r   N)r7   r   r4   Úcountr   r,   r   r\   r%   r%   r&   Útest_purge_embedsó  s    z(TestPurgeEmbedsCommand.test_purge_embedsN)rP   rQ   rR   rS   ra   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 )Nri   rj   rk   Fr=   rl   rš   r_   r;   ru   é   zHello world!!zThe moonzthe-moonzthe moonzis made of cheese)ro   rp   Zboring_dataÚsecret_datarr   zis flat)r   r   r~   r   r$   r   r4   r5   r   rÔ   r€   ro   r©   r   Úsecret_pagerÚ   r   Úallr"   )r#   rÕ   r±   r%   r%   r&   ra     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_revisionsrY   Úactionzwagtail.createzwagtail.editzwagtail.publish)r   r,   ZassertListEqualÚlistr   r4   rX   Úreversedr$   ÚpkrÛ   r\   r%   r%   r&   Ú'test_log_entries_created_from_revisions/  s"    








ôÿÿûzPTestCreateLogEntriesFromRevisionsCommand.test_log_entries_created_from_revisionsc              	   C   s>   t jdd t jd" t d¡ |  tj ¡ d¡ W 5 Q R X d S )Nz"wagtail.models.Page.specific_class)Zreturn_valueZnew_callablerÝ   r   )	r   ÚpatchZPropertyMockr   r,   r7   r   r4   rÖ   r\   r%   r%   r&   Ú:test_command_doesnt_crash_for_revisions_without_page_modelL  s    ý
zcTestCreateLogEntriesFromRevisionsCommand.test_command_doesnt_crash_for_revisions_without_page_modelN)rP   rQ   rR   rS   ra   râ   rä   r%   r%   r%   r&   rØ      s   ,rØ   N)8Údatetimer   Úior   Zunittestr   Zdjango.contrib.authr   Zdjango.contrib.auth.modelsr   Zdjango.corer   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   rT   r[   r^   rœ   r¬   rÁ   rÂ   rÅ   rÉ   rÊ   rË   rØ   r%   r%   r%   r&   Ú<module>   sD   $	 t
 c 9m
ÿ

ÿ
ÿ
"