U
    |®Þh%/  ã                   @   sæ   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mZmZ d dlmZmZ d dlmZ G d	d
„ d
eeƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )é    )Úquote)Ú
Permission)ÚContentType)ÚTestCaseÚoverride_settings)Úreverse)ÚWorkflowÚWorkflowContentTypeÚWorkflowState)ÚFullFeaturedSnippetÚModeratedModel)ÚWagtailTestUtilsc                   @   s.   e Zd ZeZdd„ Zedd„ ƒZddd„ZdS )	ÚBaseWorkflowsTestCasec                 C   s^   |   ¡ | _| jjjdd| _| j ¡  ¡  tj 	| j¡| _
tj ¡ | _tjj| j
| jd d S )NúI'm a full-featured snippet!©Útext)Úcontent_typeÚworkflow)ÚloginÚuserÚmodelÚobjectsÚcreateÚobjectÚsave_revisionÚpublishr   Zget_for_modelr   r   Úfirstr   r	   ©Úself© r   úm/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/snippets/tests/test_workflows.pyÚsetUp   s    
þzBaseWorkflowsTestCase.setUpc                 C   s
   | j jjS )N)r   Ú_metaZverbose_namer   r   r   r    Ú
model_name&   s    z BaseWorkflowsTestCase.model_nameNc                 C   s0   |d k	r|nt | jjƒg}t| jj |¡|dS )N)Úargs)r   r   Úpkr   Zsnippet_viewsetZget_url_name)r   Únamer$   r   r   r    Úget_url*   s    zBaseWorkflowsTestCase.get_url)N)	Ú__name__Ú
__module__Ú__qualname__r   r   r!   Úpropertyr#   r'   r   r   r   r    r      s
   
r   c                   @   s>   e Zd Zdd„ Zdd„ Zdd„ Zeddd	d
„ ƒZdd„ ZdS )ÚTestCreateViewc                 C   s   | j  |  dd¡¡S ©NÚaddr   ©ÚclientÚgetr'   r   r   r   r    r1   0   s    zTestCreateView.getc                 C   s   | j  |  dd¡|¡S r-   ©r0   Úpostr'   ©r   Z	post_datar   r   r    r3   3   s    zTestCreateView.postc                 C   s*   |   ¡ }|  |jd¡ | j|ddd d S ©NéÈ   z`<button type="submit" name="action-submit" value="Submit to Moderators approval" class="button">é   )Úcount©r1   ÚassertEqualÚstatus_codeÚassertContains©r   Úresponser   r   r    Útest_get_workflow_buttons_shown6   s    ýz.TestCreateView.test_get_workflow_buttons_shownF©ZWAGTAIL_WORKFLOW_ENABLEDc                 C   s&   |   ¡ }|  |jd¡ |  |d¡ d S ©Nr6   zname="action-submit"©r1   r:   r;   ÚassertNotContainsr=   r   r   r    Ú:test_get_workflow_buttons_not_shown_when_workflow_disabled?   s    zITestCreateView.test_get_workflow_buttons_not_shown_when_workflow_disabledc                 C   s    |   dddœ¡}| jjjdd}|  ||  dd¡¡ |  || j¡ |  |jd¡ |  	|j
¡ |  	|j¡ |  |jjtj¡ |  |jjd¡ |  |jj|j¡ d S )NzNewly createdÚSubmit©r   zaction-submitr   Úlistr   )r3   r   r   r1   ÚassertRedirectsr'   ÚassertIsInstancer:   r   ZassertFalseÚliveÚfirst_published_atÚcurrent_workflow_stateÚstatusr
   ÚSTATUS_IN_PROGRESSÚlatest_revisionÚ
object_strÚcurrent_workflow_task_stateÚrevision)r   r>   r   r   r   r    Útest_post_submit_for_moderationE   s     þþz.TestCreateView.test_post_submit_for_moderationN©	r(   r)   r*   r1   r3   r?   r   rD   rS   r   r   r   r    r,   /   s   	
r,   c                   @   s   e Zd ZeZdS )ÚTestCreateViewNotLockableN©r(   r)   r*   r   r   r   r   r   r    rU   a   s   rU   c                   @   s>   e Zd Zdd„ Zdd„ Zdd„ Zeddd	d
„ ƒZdd„ ZdS )ÚTestEditViewc                 C   s   | j  |  d¡¡S ©NÚeditr/   r   r   r   r    r1   f   s    zTestEditView.getc                 C   s   | j  |  d¡|¡S rX   r2   r4   r   r   r    r3   i   s    zTestEditView.postc                 C   s*   |   ¡ }|  |jd¡ | j|ddd d S r5   r9   r=   r   r   r    r?   l   s    ýz,TestEditView.test_get_workflow_buttons_shownFr@   c                 C   s&   |   ¡ }|  |jd¡ |  |d¡ d S rA   rB   r=   r   r   r    rD   u   s    zGTestEditView.test_get_workflow_buttons_not_shown_when_workflow_disabledc                 C   s¸   |   dddœ¡}| j ¡  |  ||  dd¡¡ |  | j| j¡ |  | jjd¡ |  	| jj
¡ |  	| jj¡ |  	| jj¡ |  | jjjtj¡ |  | jjjd¡ |  | jjj| jj¡ d S )NúEdited!rE   rF   rG   r   r   )r3   r   Zrefresh_from_dbrH   r'   rI   r   r:   r   Z
assertTruerJ   rK   Zhas_unpublished_changesrL   rM   r
   rN   rO   rP   rQ   rR   r=   r   r   r    rS   {   s"    
þþz,TestEditView.test_post_submit_for_moderationNrT   r   r   r   r    rW   e   s   	
rW   c                   @   s   e Zd ZeZdS )ÚTestEditViewNotLockableNrV   r   r   r   r    r[   ˜   s   r[   c                       sL   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	‡  Z
S )ÚTestWorkflowHistoryc                    s4   t ƒ  ¡  d| j_| j ¡  | j | j| j¡| _d S ©NrZ   ©	Úsuperr!   r   r   r   r   Ústartr   Úworkflow_stater   ©Ú	__class__r   r    r!      s    

zTestWorkflowHistory.setUpc                 C   sŠ   | j  |  d¡¡}|  |jd¡ |  |d¡ |  ||  d¡¡ |  ||  dt| jj	ƒ| j
jf¡¡ |  |d¡ |  |d¡ |  |d¡ d S )	NÚworkflow_historyr6   z/wagtailadmin/shared/workflow_history/index.htmlrY   Úworkflow_history_detailúModerators approvalúIn progressútest@email.com)r0   r1   r'   r:   r;   ÚassertTemplateUsedr<   r   r   r%   ra   Úidr=   r   r   r    Útest_get_index£   s"     ÿþþ	z"TestWorkflowHistory.test_get_indexc                 C   sR   d| j _| j j tjjddd¡ | j  ¡  | j |  	d¡¡}|  
|tdƒ¡ d S )NFÚwagtailadminÚaccess_admin©Zcontent_type__app_labelÚcodenamerd   Úwagtailadmin_home)r   Úis_superuserÚuser_permissionsr.   r   r   r1   Úsaver0   r'   rH   r   r=   r   r   r    Ú#test_get_index_with_bad_permissions¸   s     ÿÿ
z7TestWorkflowHistory.test_get_index_with_bad_permissionsc                 C   sÆ   | j  |  dt| jjƒ| jjf¡¡}|  |j	d¡ |  
|d¡ |  ||  d¡¡ |  ||  d¡¡ |  |d¡ |  |d¡ |  |d¡ |  |d	¡ |  |d
¡ |  |d¡ |  |d¡ |  |d¡ d S )Nre   r6   ú0wagtailadmin/shared/workflow_history/detail.htmlrY   rd   ú<div class="w-tabs" data-tabs>ú<div class="tab-content">ÚTasksÚTimelinerZ   rf   rg   rh   )r0   r1   r'   r   r   r%   ra   rj   r:   r;   ri   r<   r=   r   r   r    Útest_get_detailÆ   s*    þÿ ÿz#TestWorkflowHistory.test_get_detailc                 C   sâ   | j jjd d | j |  dt| jjƒ| j j	f¡¡}|  
|jd¡ |  |d¡ |  ||  d¡¡ |  ||  d¡¡ |  |d¡ |  |d¡ |  |d	¡ |  |d
¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ d S )N)r   re   r6   ru   rY   rd   rv   rw   rx   ry   rZ   rf   zWorkflow completedrh   rg   )ra   Úcurrent_task_stateZapprover0   r1   r'   r   r   r%   rj   r:   r;   ri   r<   rC   r=   r   r   r    Útest_get_detail_completedà   s.    þÿ ÿz-TestWorkflowHistory.test_get_detail_completedc                 C   sd   d| j _| j j tjjddd¡ | j  ¡  | j |  	dt
| jjƒ| jjf¡¡}|  |tdƒ¡ d S )NFrl   rm   rn   re   rp   )r   rq   rr   r.   r   r   r1   rs   r0   r'   r   r   r%   ra   rj   rH   r   r=   r   r   r    Ú$test_get_detail_with_bad_permissionsü   s     ÿÿ
þÿz8TestWorkflowHistory.test_get_detail_with_bad_permissionsc                 C   sB   | j jjdd | j |  dt| jjƒf¡¡}| j	|ddd d S )NzCan be better)ÚcommentÚhistoryz*<div>Comment: <em>Can be better</em></div>T)Úhtml)
ra   r{   Zrejectr0   r1   r'   r   r   r%   r<   r=   r   r   r    Ú test_get_history_renders_comment  s    ýz4TestWorkflowHistory.test_get_history_renders_comment)r(   r)   r*   r!   rk   rt   rz   r|   r}   r   Ú__classcell__r   r   rb   r    r\   œ   s   r\   c                       s6   e Zd Z‡ fdd„Zdd„ Zedddd„ ƒZ‡  ZS )	ÚTestConfirmWorkflowCancellationc                    s4   t ƒ  ¡  d| j_| j ¡  | j | j| j¡| _d S r]   r^   r   rb   r   r    r!     s    

z%TestConfirmWorkflowCancellation.setUpc                 C   sH   | j  |  d¡¡}|  |jd¡ |  |d¡ |  |d¡ |  |d¡ d S )NÚconfirm_workflow_cancellationr6   ú7wagtailadmin/generic/confirm_workflow_cancellation.htmlzGPublishing this full-featured snippet will cancel the current workflow.z;Would you still like to publish this full-featured snippet?)r0   r1   r'   r:   r;   ri   r<   r=   r   r   r    Ú&test_get_confirm_workflow_cancellation#  s     ÿþ ÿzFTestConfirmWorkflowCancellation.test_get_confirm_workflow_cancellationF)Z"WAGTAIL_WORKFLOW_CANCEL_ON_PUBLISHc                 C   sF   | j  |  d¡¡}|  |jd¡ |  |d¡ |  |j ¡ ddi¡ d S )Nr„   r6   r…   ÚstepZno_confirmation_needed)	r0   r1   r'   r:   r;   ZassertTemplateNotUsedZassertJSONEqualÚcontentÚdecoder=   r   r   r    Ú<test_get_confirm_workflow_cancellation_with_disabled_setting1  s    þþz\TestConfirmWorkflowCancellation.test_get_confirm_workflow_cancellation_with_disabled_setting)r(   r)   r*   r!   r†   r   rŠ   r‚   r   r   rb   r    rƒ     s   rƒ   N)Zdjango.contrib.admin.utilsr   Zdjango.contrib.auth.modelsr   Z"django.contrib.contenttypes.modelsr   Zdjango.testr   r   Zdjango.urlsr   Zwagtail.modelsr   r	   r
   Zwagtail.test.testapp.modelsr   r   Zwagtail.test.utilsr   r   r,   rU   rW   r[   r\   rƒ   r   r   r   r    Ú<module>   s   23 