B
    KDb: ã               @   s(  d dl 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 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  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, G dd„ deƒZ-G dd„ deƒZ.dS )é    N)Útimezone)ÚTestCase)ÚEmployee)ÚWorkflowEngineÚWorkflowNodeÚWorkflowRole)ÚWorkflowInstanceÚNodeInstance)ÚState)ÚWorkflowInstanceBuilder)Úreverse)Ú	APIClient)Ústatus)ÚOperationNotAllowed)ÚMyUser)Ú	ManualLog)ÚLeave)ÚContentType)ÚLeaveCategory)ÚOvertime)ÚTraining)ÚTrainingCategory)Ú
Departmentc               @   sž  e Zd Zdd„ Zded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$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Z d>d?„ Z!d@dA„ Z"dBdC„ Z#dDdE„ Z$dFdG„ Z%dHdI„ Z&dJdK„ Z'dLdM„ Z(dNdO„ Z)dPdQ„ Z*dRdS„ Z+dTdU„ Z,dVdW„ Z-dXdY„ Z.dZd[„ Z/d\d]„ Z0d^d_„ Z1d`d]„ Z0dadb„ Z2dcdd„ Z3dS )fÚWorkflowModelTestsc          	   C   s¸  t dddd| _| j ¡  g | _| j | j¡ tdddd| jd| _| j ¡  tdddd	| _| j ¡  g | _	| j	 | j¡ t
j d
d¡}| jt ¡ t ¡ tjdd || j	| jdd| _t
j d
d¡}tddt ¡ t ¡ tjdd d|jdd| _| j ¡  tdd| jddd ¡  tdd| jddd ¡  tdd| jddd ¡  t
j d
d¡}tddt ¡ t ¡ tjdd d|jdd| _| j ¡  tdd| jddd ¡  tdd| jddd ¡  tdd| jddd ¡  t
j d
d¡}tddt ¡ t ¡ tjdd d|jdd| _| j ¡  tdd| jddd ¡  tdd| jddd ¡  tdd| jddd ¡  tddd| _| j ¡  tddd| _| j ¡  t| jt ¡ dd | _| j ¡  td!d"}| ¡  t| j|t ¡ t ¡ tjdd d#| _ | j  ¡  t!| jt ¡ t ¡ tjd$d d%| _"| j" ¡  t#d&d"}| ¡  t$| j|t ¡ t ¡ tjd$d d#| _%| j% ¡  t&jj'|jd'| _(t&jj'|jd'| _)t&jj'|jd'| _*t&jj'|jd'| _+d S )(NÚ1ÚTestDEPT)Ú	dept_codeÚ	dept_nameÚpersonZpepeÚsistemaszel facha)Úemp_codeÚ
first_nameÚ	last_nameÚnicknameÚ
departmentZ123456)r!   r"   ÚpasswordÚattÚ	manuallogé   )Údaysz1,2,3)Ú	employeesÚdepartmentsÚ	notifiersZleaveé   r   zTesting workflow templateé   )Úworkflow_codeÚworkflow_nameÚ
start_dateÚend_dateÚdescriptionÚcontent_typeÚinform_typeÚnode1)Úorder_idÚapproverÚworkflowÚ	node_codeÚ	node_nameÚnode2é   Únode3ZovertimeZtraining)ÚidÚ	role_codeé   r   )ÚemployeeÚ
punch_timeÚpunch_stateZCategory)Zcategory_name)rB   ÚcategoryÚ
start_timeÚend_timeé   )rB   rF   rG   Zfirmware)r4   ),r   r$   Úsaver+   Úappendr   rB   ÚAuthUserModelZ	auth_userr*   r   ÚobjectsÚget_by_natural_keyÚ)create_workflow_engine_for_manual_log_forr   ÚnowÚdatetimeÚ	timedeltaÚworkflow_manual_logr   r?   Zworkflow_leaver   Zworkflow_overtimeZworkflow_trainingr   ÚroleÚrole_incorrectr   Úmanual_log_exr   r   Zleave_exr   Zovertime_exr   r   Ztraining_exr   ÚgetÚworkflow_instance_manual_logÚworkflow_instance_leaveÚworkflow_instance_overtimeÚworkflow_instance_training)ÚselfZct_manual_logZct_leaveZct_overtimeZct_trainingZcategory_leaveZtraining_category© r\   ú-G:\easytimepro\master/mysite/workflow\test.pyÚsetUp   s´    




















zWorkflowModelTests.setUpNc       
   	   C   sÀ   t dd||d|jdd}| ¡  |d k	rJx |D ]}|j |¡ | ¡  q.W |d k	rtx |D ]}	|j |	¡ | ¡  qXW tdd||ddd ¡  tdd||dd	d ¡  td
d||d
dd ¡  |S )Nr.   Ú	manualLogzTesting workflow template)r/   r0   r1   r2   r3   r4   r5   z1,2,3r6   )r7   r8   Únotifierr9   r:   r;   r-   r<   r=   r>   )r   r?   rI   r*   Úaddr+   r   )
r[   r1   r2   r4   r*   r+   r,   rR   rB   r$   r\   r\   r]   rN   š   s(    

z<WorkflowModelTests.create_workflow_engine_for_manual_log_forc          	   C   s   t dd||d|jdd}|S )Nr.   r_   zTesting workflow template)r/   r0   r1   r2   r3   r4   r5   )r   r?   )r[   r1   r2   r4   rR   r\   r\   r]   Úinstanciate_workflow_engine´   s    z.WorkflowModelTests.instanciate_workflow_enginec             C   s*   | j jj ¡ | jkst‚| j d k	s&t‚d S )N)rW   Úworkflow_enginer*   ÚfirstrB   ÚAssertionError)r[   r\   r\   r]   Ú(test_workflow_instance_for_employee_pepe¿   s    z;WorkflowModelTests.test_workflow_instance_for_employee_pepec             C   s   | j  ¡ jdkst‚d S )Nr.   )rW   Úget_current_nodeÚorderre   )r[   r\   r\   r]   ÚDtest_get_the_first_node_instance_transition_for_manual_log_exceptionÃ   s    zWWorkflowModelTests.test_get_the_first_node_instance_transition_for_manual_log_exceptionc             C   sT   | j j | j¡ | j  ¡  | j | j d¡ | j ¡ dks<t‚| j 	¡ j
dksPt‚d S )NÚ r.   r-   )rB   Ú	flow_rolera   rS   rI   rW   Úapprove_current_node_byZget_approved_nodes_countre   rg   rh   )r[   r\   r\   r]   ÚWtest_employee_with_correct_role_approve_and_advance_a_workflow_for_manual_log_exceptionÆ   s
    
zjWorkflowModelTests.test_employee_with_correct_role_approve_and_advance_a_workflow_for_manual_log_exceptionc             C   s\   | j j | j¡ | j  ¡  | j | j d¡ | j | j d¡ | j | j d¡ | j ¡ sXt‚d S )Nrj   )	rB   rk   ra   rS   rI   rW   rl   Úis_exception_approvedre   )r[   r\   r\   r]   Úatest_employee_with_correct_role_approves_workflow_with_3_nodes_manualLog_state_manualLog_approvedÎ   s    
ztWorkflowModelTests.test_employee_with_correct_role_approves_workflow_with_3_nodes_manualLog_state_manualLog_approvedc             C   sL   | j j | j¡ | j  ¡  | j | j d¡ | j | j d¡ | j ¡ sHt‚d S )Nrj   )	rB   rk   ra   rS   rI   rW   rl   Úis_exception_pendingre   )r[   r\   r\   r]   Úitest_employee_with_correct_role_approves_1_node_of_workflow_with3nodes_for_manualLog_exception_is_pendingØ   s
    
z|WorkflowModelTests.test_employee_with_correct_role_approves_1_node_of_workflow_with3nodes_for_manualLog_exception_is_pendingc             C   s<   | j j | j¡ | j  ¡  | j | j d¡ | j ¡ s8t‚d S )Nrj   )	rB   rk   ra   rS   rI   rW   Úreject_current_node_byÚis_exception_rejectedre   )r[   r\   r\   r]   Úhtest_employee_with_correct_role_reject_1_node_of_workflow_with3nodes_for_manualLog_exception_is_rejectedá   s    
z{WorkflowModelTests.test_employee_with_correct_role_reject_1_node_of_workflow_with3nodes_for_manualLog_exception_is_rejectedc             C   s<   | j j | j¡ | j  ¡  | j | j d¡ | j ¡ s8t‚d S )Nrj   )	rB   rk   ra   rS   rI   rW   rr   Úis_rejectedre   )r[   r\   r\   r]   Ú5test_employee_with_correct_role_rejects_workflow_nodeé   s    
zHWorkflowModelTests.test_employee_with_correct_role_rejects_workflow_nodec             C   s@   | j j | j¡ | j  ¡  | j | j d¡ | j ¡ dks<t‚d S )Nrj   T)	rB   rk   ra   rS   rI   rW   rl   Ú
is_pendingre   )r[   r\   r\   r]   ÚHtest_approve_workflow_by_user_with_correct_role_workflow_remains_pendingñ   s    
z[WorkflowModelTests.test_approve_workflow_by_user_with_correct_role_workflow_remains_pendingc             C   s`   | j j | j¡ | j  ¡  | j | j d¡ | j | j d¡ | j | j d¡ | j ¡ dks\t‚d S )Nrj   F)	rB   rk   ra   rS   rI   rW   rl   rw   re   )r[   r\   r\   r]   ÚGtest_employee_with_correct_role_approves_all_nodes_workflow_is_approvedù   s    
zZWorkflowModelTests.test_employee_with_correct_role_approves_all_nodes_workflow_is_approvedc          	   C   s€   | j j | j¡ | j  ¡  |  t¡F}| j | j d¡ | j | j d¡ | j | j d¡ | j | j d¡ W d Q R X |  	|j
¡ d S )Nrj   )rB   rk   ra   rS   rI   ÚassertRaisesr   rW   rl   Ú
assertTrueÚ	exception)r[   Úcontextr\   r\   r]   Úbtest_employee_with_correct_role_workflow_is_inactive_raise_exception_when_user_tries_to_approve_it  s    
zuWorkflowModelTests.test_employee_with_correct_role_workflow_is_inactive_raise_exception_when_user_tries_to_approve_itc          	   C   s`   | j j | j¡ | j  ¡  |  t¡&}| j | j d¡ | j 	| j d¡ W d Q R X |  
|j¡ d S )Nrj   )rB   rk   ra   rS   rI   rz   r   rW   rr   rl   r{   r|   )r[   r}   r\   r\   r]   Úptest_employee_with_correct_role_workflow_aproval_raise_exception_when_user_tries_to_approve_it_after_is_rejected  s    
zƒWorkflowModelTests.test_employee_with_correct_role_workflow_aproval_raise_exception_when_user_tries_to_approve_it_after_is_rejectedc          	   C   s€   | j j | j¡ | j  ¡  |  t¡F}| j | j d¡ | j | j d¡ | j | j d¡ | j 	| j d¡ W d Q R X |  
|j¡ d S )Nrj   )rB   rk   ra   rS   rI   rz   r   rX   rl   rr   r{   r|   )r[   r}   r\   r\   r]   Úttest_user_reject_workflow_when_all_its_3_nodes_are_approved_for_leave_expect_fail_with_OperationNotAllowed_exception  s    
z‡WorkflowModelTests.test_user_reject_workflow_when_all_its_3_nodes_are_approved_for_leave_expect_fail_with_OperationNotAllowed_exceptionc          	   C   sJ   | j j ¡ dkst‚|  t¡}| j | j d¡ W d Q R X |  |j	¡ d S )Nr   rj   )
rB   rk   Úcountre   rz   r   rX   rl   r{   r|   )r[   r}   r\   r\   r]   Ú?test_employee_has_no_role_approve_workflow_fails_with_exception&  s    zRWorkflowModelTests.test_employee_has_no_role_approve_workflow_fails_with_exceptionc          	   C   sF   | j j | j¡ |  t¡}| j | j d¡ W d Q R X |  |j	¡ d S )Nrj   )
rB   rk   ra   rT   rz   r   rX   rl   r{   r|   )r[   r}   r\   r\   r]   Úftest_employee_does_not_have_the_right_role_to_approve_the_workflow_raise_exception_operationNotAllowed.  s    zyWorkflowModelTests.test_employee_does_not_have_the_right_role_to_approve_the_workflow_raise_exception_operationNotAllowedc          	   C   sF   | j j | j¡ |  t¡}| j | j d¡ W d Q R X |  |j	¡ d S )Nrj   )
rB   rk   ra   rT   rz   r   rX   rr   r{   r|   )r[   r}   r\   r\   r]   Úetest_employee_does_not_have_the_right_role_to_reject_the_workflow_raise_exception_operationNotAllowed6  s    zxWorkflowModelTests.test_employee_does_not_have_the_right_role_to_reject_the_workflow_raise_exception_operationNotAllowedc             C   sV   | j j | j¡ | j j | j¡ | j | j d¡ | j | j d¡ | j ¡ dksRt	‚d S )Nrj   ZRejected)
rB   rk   ra   rT   rS   rX   rl   rr   Zget_current_state_namere   )r[   r\   r\   r]   Últest_employee_has_2_roles_one_that_is_allow_to_operate_over_workflow_result_allows_user_to_approve_or_reject>  s
    zWorkflowModelTests.test_employee_has_2_roles_one_that_is_allow_to_operate_over_workflow_result_allows_user_to_approve_or_rejectc             C   s$   | j  ¡ }|jdkr| ¡ s t‚d S )Nr.   )rX   Úget_last_active_noderh   rw   re   )r[   Úleave_wi_noder\   r\   r]   ÚAtest_all_nodes_pendding_result_last_active_node_is_the_first_nodeO  s    
zTWorkflowModelTests.test_all_nodes_pendding_result_last_active_node_is_the_first_nodec             C   sN   | j j | j¡ | j  ¡  | j | j d¡ | j ¡ }|jdkrF| 	¡ sJt
‚d S )NÚ_r.   )rB   rk   ra   rS   rI   rX   rl   r†   rh   Úis_approvedre   )r[   r‡   r\   r\   r]   ÚJtest_only_first_node_is_approved_result_last_active_node_is_the_first_nodeT  s
    

z]WorkflowModelTests.test_only_first_node_is_approved_result_last_active_node_is_the_first_nodec             C   sN   | j j | j¡ | j  ¡  | j | j d¡ | j ¡ }|jdkrF| 	¡ sJt
‚d S )Nr‰   r.   )rB   rk   ra   rS   rI   rX   rr   r†   rh   ru   re   )r[   r‡   r\   r\   r]   ÚEtest_first_node_is_rejected_result_last_active_node_is_the_first_node^  s
    

zXWorkflowModelTests.test_first_node_is_rejected_result_last_active_node_is_the_first_nodec             C   s^   | j j | j¡ | j  ¡  | j | j d¡ | j | j d¡ | j ¡ }|j	dkrV| 
¡ sZt‚d S )Nr‰   r-   )rB   rk   ra   rS   rI   rX   rl   rr   r†   rh   ru   re   )r[   r‡   r\   r\   r]   Úbtest_first_node_is_approved_second_node_is_rejected_result_last_active_node_is_the_second_rejectedh  s    

zuWorkflowModelTests.test_first_node_is_approved_second_node_is_rejected_result_last_active_node_is_the_second_rejectedc             C   sn   | j j | j¡ | j  ¡  | j | j d¡ | j | j d¡ | j | j d¡ | j ¡ }|jdkrf| 	¡ sjt
‚d S )Nr‰   r=   )rB   rk   ra   rS   rI   rX   rl   r†   rh   rŠ   re   )r[   r‡   r\   r\   r]   ÚUtest_all_nodes_are_approved_result_last_active_node_is_the_3td_last_one_approve_states  s    

zhWorkflowModelTests.test_all_nodes_are_approved_result_last_active_node_is_the_3td_last_one_approve_statec             C   sn   | j j | j¡ | j  ¡  | j | j d¡ | j | j d¡ | j | j d¡ | j ¡ }|j	dkrf| 
¡ sjt‚d S )Nr‰   r=   )rB   rk   ra   rS   rI   rX   rl   rr   r†   rh   ru   re   )r[   r‡   r\   r\   r]   Ústest_all_first_2_nodes_are_approved_last_one_is_rejected_result_last_active_node_is_the_3td_last_one_rejected_state  s    

z†WorkflowModelTests.test_all_first_2_nodes_are_approved_last_one_is_rejected_result_last_active_node_is_the_3td_last_one_rejected_statec             C   s$   | j  ¡ }|jdkr| ¡ s t‚d S )Nr.   )rX   rg   rh   rw   re   )r[   r‡   r\   r\   r]   Ú@test_all_nodes_are_pending_result_current_node_is_the_first_node”  s    
zSWorkflowModelTests.test_all_nodes_are_pending_result_current_node_is_the_first_nodec             C   sN   | j j | j¡ | j  ¡  | j | j d¡ | j ¡ }|jdkrF| 	¡ sJt
‚d S )Nr‰   r-   )rB   rk   ra   rS   rI   rX   rl   rg   rh   rw   re   )r[   r‡   r\   r\   r]   ÚBtest_first_node_is_approved_result_current_node_is_the_second_node™  s
    

zUWorkflowModelTests.test_first_node_is_approved_result_current_node_is_the_second_nodec             C   sN   | j j | j¡ | j  ¡  | j | j d¡ | j ¡ }|jdkrF| 	¡ sJt
‚d S )Nr‰   r.   )rB   rk   ra   rS   rI   rX   rr   rg   rh   ru   re   )r[   r‡   r\   r\   r]   Ú>test_first_node_rejected_result_current_node_is_the_first_node£  s
    

zQWorkflowModelTests.test_first_node_rejected_result_current_node_is_the_first_nodec             C   sv   | j j | j¡ | j  ¡  | j | j d¡ | j | j d¡ | j | j d¡ | j ¡ }|jdkrn| 	¡ rn| 
¡ srt‚d S )Nr‰   r=   )rB   rk   ra   rS   rI   rX   rl   rg   rh   rŠ   Úis_last_nodere   )r[   r‡   r\   r\   r]   Ú@test_all_nodes_are_approved_result_current_node_is_the_last_node­  s    

zSWorkflowModelTests.test_all_nodes_are_approved_result_current_node_is_the_last_nodec             C   s^   | j j | j¡ | j  ¡  | j | j d¡ | j | j d¡ | j ¡ }|j	dkrV| 
¡ sZt‚d S )Nr‰   r-   )rB   rk   ra   rS   rI   rX   rl   rr   rg   rh   ru   re   )r[   r‡   r\   r\   r]   ÚZtest_first_node_is_approved_second_node_is_rejected_result_current_node_is_the_second_node¹  s    

zmWorkflowModelTests.test_first_node_is_approved_second_node_is_rejected_result_current_node_is_the_second_nodec             C   sv   | j j | j¡ | j  ¡  | j | j d¡ | j | j d¡ | j | j d¡ | j ¡ }|j	dkrn| 
¡ rn| ¡ srt‚d S )Nr‰   r=   )rB   rk   ra   rS   rI   rX   rl   rr   rg   rh   ru   r“   re   )r[   r‡   r\   r\   r]   Ú_test_fist_second_node_are_approved_third_node_is_rejected_result_current_node_is_the_third_nodeÄ  s    

zrWorkflowModelTests.test_fist_second_node_are_approved_third_node_is_rejected_result_current_node_is_the_third_nodec             C   sf   | j j | j¡ | j  ¡  | j | j d¡ | j | j d¡ | j ¡ }|jdkr^| 	¡ r^| 
¡ sbt‚d S )Nr‰   r=   )rB   rk   ra   rS   rI   rX   rl   rg   rh   rw   r“   re   )r[   r‡   r\   r\   r]   Úotest_fist_second_node_are_approved_third_node_is_peding_result_current_node_is_the_third_node_with_peding_stateÐ  s    

z‚WorkflowModelTests.test_fist_second_node_are_approved_third_node_is_peding_result_current_node_is_the_third_node_with_peding_statec             C   s®   dd l }| jj | j¡ | j ¡  i }| jj|d< d|d< tƒ }|j	ddd |j
d| |¡dd	}|  |jd
¡ |  | j ¡ jd¡ | j ¡  ¡ dksœt‚| j ¡ sªt‚d S )Nr   Úworkflow_instance_idÚremarkZAdminÚadmin)Úusernamer%   z/workflowinstance/approve/zapplication/json)r4   éÈ   r-   T)ÚjsonrB   rk   ra   rS   rI   rW   r?   r   ÚloginÚpostÚdumpsÚassertEqualsÚstatus_coderg   rh   r†   Zis_approved_by_adminre   rp   )r[   r   ÚbodyÚclientÚresponser\   r\   r]   Ú[test_admin_approves_current_state_workflow_and_advance_to_state_2_workflowexception_pendingÞ  s    
znWorkflowModelTests.test_admin_approves_current_state_workflow_and_advance_to_state_2_workflowexception_pendingc             C   s~   dd l }| jj | j¡ | j ¡  i }d|d< | jj|d< d|d< tƒ }|jddd |j	d| 
|¡d	d
}|  |jd¡ d S )Nr   éd   r˜   Zemployee_coder™   rš   )r›   r%   z/workflowinstance/approve/zapplication/json)r4   i”  )r   rB   rk   ra   rS   rI   r?   r   rž   rŸ   r    r¡   r¢   )r[   r   r£   r¤   r¥   r\   r\   r]   Ú?test_admin_tries_to_approve_workflow_does_not_exist_returns_404ò  s    
zRWorkflowModelTests.test_admin_tries_to_approve_workflow_does_not_exist_returns_404c             C   s~   dd l }i }| jj|d< d|d< tƒ }|jddd |jd| |¡dd}|  |jd	¡ |  | j 	¡ j
d
¡ | j ¡ szt‚d S )Nr   r˜   r™   rš   )r›   r%   z/workflowinstance/reject/zapplication/json)r4   rœ   r.   )r   rW   r?   r   rž   rŸ   r    r¡   r¢   rg   rh   rs   re   )r[   r   r£   r¤   r¥   r\   r\   r]   ÚPtest_admin_loggedin_post_to_reject_node_expected_ok_200_and_exeption_is_rejected  s    zcWorkflowModelTests.test_admin_loggedin_post_to_reject_node_expected_ok_200_and_exeption_is_rejectedc             C   s²   dd l }i }| jj|d< d|d< tƒ }|jddd |jd| |¡dd}|  |jd	¡ |jd| |¡dd}|  |jd	¡ |jd| |¡dd}|  |jd	¡ | j 	¡ s®t
‚d S )
Nr   r˜   r™   rš   )r›   r%   z/workflowinstance/approve/zapplication/json)r4   rœ   )r   rW   r?   r   rž   rŸ   r    r¡   r¢   rn   re   )r[   r   r£   r¤   r¥   r\   r\   r]   ÚUtest_admin_loggedin_approves_workflow_with_3_nodes_manualLog_state_manualLog_approved  s    zhWorkflowModelTests.test_admin_loggedin_approves_workflow_with_3_nodes_manualLog_state_manualLog_approvedc             C   s²   dd l }i }| jj|d< d|d< tƒ }|jddd |jd| |¡dd}|  |jd	¡ |jd| |¡dd}|  |jd	¡ |jd| |¡dd}|  |jd	¡ | j 	¡ s®t
‚d S )
Nr   r˜   r™   rš   )r›   r%   z/workflowinstance/approve/zapplication/json)r4   rœ   )r   rX   r?   r   rž   rŸ   r    r¡   r¢   rn   re   )r[   r   r£   r¤   r¥   r\   r\   r]   ÚRtest_admin_loggedin_approves_workflow_for_leave_with_3_nodes_exception_is_approved(  s    zeWorkflowModelTests.test_admin_loggedin_approves_workflow_for_leave_with_3_nodes_exception_is_approvedc             C   s~   dd l }i }| jj|d< d|d< tƒ }|jddd |jd| |¡dd}|  |jd	¡ |  | j 	¡ j
d
¡ | j ¡ szt‚d S )Nr   r˜   r™   rš   )r›   r%   z/workflowinstance/reject/zapplication/json)r4   rœ   r.   )r   rX   r?   r   rž   rŸ   r    r¡   r¢   rg   rh   rs   re   )r[   r   r£   r¤   r¥   r\   r\   r]   Ú^test_admin_loggedin_post_to_reject_workflow_for_leave_expected_ok_200_and_exeption_is_rejected;  s    zqWorkflowModelTests.test_admin_loggedin_post_to_reject_workflow_for_leave_expected_ok_200_and_exeption_is_rejectedc             C   s²   dd l }i }| jj|d< d|d< tƒ }|jddd |jd| |¡dd}|  |jd	¡ |jd| |¡dd}|  |jd	¡ |jd| |¡dd}|  |jd	¡ | j 	¡ s®t
‚d S )
Nr   r˜   r™   rš   )r›   r%   z/workflowinstance/approve/zapplication/json)r4   rœ   )r   rY   r?   r   rž   rŸ   r    r¡   r¢   rn   re   )r[   r   r£   r¤   r¥   r\   r\   r]   ÚUtest_admin_loggedin_approves_workflow_for_Overtime_with_3_nodes_exception_is_approvedK  s    zhWorkflowModelTests.test_admin_loggedin_approves_workflow_for_Overtime_with_3_nodes_exception_is_approvedc             C   s~   dd l }i }| jj|d< d|d< tƒ }|jddd |jd| |¡dd}|  |jd	¡ |  | j 	¡ j
d
¡ | j ¡ szt‚d S )Nr   r˜   r™   rš   )r›   r%   z/workflowinstance/reject/zapplication/json)r4   rœ   r.   )r   rY   r?   r   rž   rŸ   r    r¡   r¢   rg   rh   rs   re   )r[   r   r£   r¤   r¥   r\   r\   r]   Úatest_admin_loggedin_post_to_reject_workflow_for_Overtime_expected_ok_200_and_exeption_is_rejected^  s    ztWorkflowModelTests.test_admin_loggedin_post_to_reject_workflow_for_Overtime_expected_ok_200_and_exeption_is_rejectedc             C   s²   dd l }i }| jj|d< d|d< tƒ }|jddd |jd| |¡dd}|  |jd	¡ |jd| |¡dd}|  |jd	¡ |jd| |¡dd}|  |jd	¡ | j 	¡ s®t
‚d S )
Nr   r˜   r™   rš   )r›   r%   z/workflowinstance/approve/zapplication/json)r4   rœ   )r   rZ   r?   r   rž   rŸ   r    r¡   r¢   rn   re   )r[   r   r£   r¤   r¥   r\   r\   r]   ÚUtest_admin_loggedin_approves_workflow_for_Training_with_3_nodes_exception_is_approvedn  s    zhWorkflowModelTests.test_admin_loggedin_approves_workflow_for_Training_with_3_nodes_exception_is_approvedc             C   s~   dd l }i }| jj|d< d|d< tƒ }|jddd |jd| |¡dd}|  |jd	¡ |  | j 	¡ j
d
¡ | j ¡ szt‚d S )Nr   r˜   r™   rš   )r›   r%   z/workflowinstance/reject/zapplication/json)r4   rœ   r.   )r   rZ   r?   r   rž   rŸ   r    r¡   r¢   rg   rh   rs   re   )r[   r   r£   r¤   r¥   r\   r\   r]   Úatest_admin_loggedin_post_to_reject_workflow_for_training_expected_ok_200_and_exeption_is_rejected  s    ztWorkflowModelTests.test_admin_loggedin_post_to_reject_workflow_for_training_expected_ok_200_and_exeption_is_rejectedc          	   C   sú   dd l }ddlm} ddlm} ddlm} d}d}| ¡ |j|d }||j|d }|}	|}
t	j
 dd	¡}| j| ¡ | ¡ || j| jd
}|  | ¡ | ¡ |¡}|  |¡}|ƒ  || j¡ W d Q R X |j|jksÚt‚|j|jksêt‚|  |j¡ d S )Nr   )r   )ÚWorkflowEngineValidator)ÚWorkflowOverlapingNotAllowedr§   rœ   )r)   r&   r'   )r*   r+   )rP   Údjango.utilsr   Ú*mysite.workflow.admin.workflowengine_adminr±   Ú9mysite.workflow.exceptions.workflow_validation_exceptionsr²   rO   rQ   r   rL   rM   rN   Údater*   r+   rb   rz   Úvalidate_workflow_overlappingr1   re   r2   r{   r|   )r[   rP   r   r±   r²   Úinterval_startÚinterval_endsr1   r2   Únew_start_dateÚnew_end_dater4   rc   Únew_workflow_enginer}   r\   r\   r]   ÚStest_case_1_complety_overla_start_date_end_date_range_raise_exception_no_overlaping›  s$     zfWorkflowModelTests.test_case_1_complety_overla_start_date_end_date_range_raise_exception_no_overlapingc          	   C   s*  dd l }ddlm} ddlm} ddlm} d}d}d}d}| ¡ |j|d	 }	|	|j|d	 }
|	|j|d	 }|	|j|d	 }t	j
 d
d¡}| j|	 ¡ |
 ¡ || j| jd}|  | ¡ | ¡ |¡}|j|jk sÔt‚|j|jksät‚|j|jksôt‚|  |¡}|ƒ  || j¡ W d Q R X |  |j¡ d S )Nr   )r   )r±   )r²   r§   rœ   éZ   és   )r)   r&   r'   )r*   r+   )rP   r³   r   r´   r±   rµ   r²   rO   rQ   r   rL   rM   rN   r¶   r*   r+   rb   r1   re   r2   rz   r·   r{   r|   )r[   rP   r   r±   r²   r¸   r¹   Únew_interval_startÚnew_interval_endsr1   r2   rº   r»   r4   rc   r¼   r}   r\   r\   r]   Útest_case_2_partially_overlap_at_the_beggining_of_an_existance_start_date_end_date_range_raise_exception_overlaping_not_allowed»  s*     z’WorkflowModelTests.test_case_2_partially_overlap_at_the_beggining_of_an_existance_start_date_end_date_range_raise_exception_overlaping_not_allowedc          	   C   s*  dd l }ddlm} ddlm} ddlm} d}d}d}d}| ¡ |j|d	 }	|	|j|d	 }
|	|j|d	 }|
|j|d	 }t	j
 d
d¡}| j|	 ¡ |
 ¡ || j| jd}|  | ¡ | ¡ |¡}|j|jksÔt‚|j|jk sät‚|j|jksôt‚|  |¡}|ƒ  || j¡ W d Q R X |  |j¡ d S )Nr   )r   )r±   )r²   r§   rœ   éF   é2   )r)   r&   r'   )r*   r+   )rP   r³   r   r´   r±   rµ   r²   rO   rQ   r   rL   rM   rN   r¶   r*   r+   rb   r1   re   r2   rz   r·   r{   r|   )r[   rP   r   r±   r²   r¸   r¹   rÀ   rÁ   r1   r2   rº   r»   r4   rc   r¼   r}   r\   r\   r]   Úytest_case_3_partially_overlapping_at_the_end_of_existant_start_date_end_date_range_raise_exception_overlaping_not_allowedá  s*     zŒWorkflowModelTests.test_case_3_partially_overlapping_at_the_end_of_existant_start_date_end_date_range_raise_exception_overlaping_not_allowedc          	   C   s  dd l }ddlm} ddlm} ddlm} d}d}d}d}| ¡ |j|d }	|	|j|d }
|	|j|d }|
|j|d }t	j
 d	d
¡}| j|	 ¡ |
 ¡ || j| jd}|  | ¡ | ¡ |¡}|j|jksÔt‚|j|jksät‚|  |¡}|ƒ  || j¡ W d Q R X |  |j¡ d S )Nr   )r   )r±   )r²   r§   rœ   é
   )r)   r&   r'   )r*   r+   )rP   r³   r   r´   r±   rµ   r²   rO   rQ   r   rL   rM   rN   r¶   r*   r+   rb   r1   re   r2   rz   r·   r{   r|   )r[   rP   r   r±   r²   r¸   r¹   rÀ   rÁ   r1   r2   rº   r»   r4   rc   r¼   r}   r\   r\   r]   Úqtest_case_4_new_workflowengine_start_date_end_date_range_is_include_in_an_existant_workflowengine_raise_exception  s(     z„WorkflowModelTests.test_case_4_new_workflowengine_start_date_end_date_range_is_include_in_an_existant_workflowengine_raise_exceptionc          	   C   s
  dd l }ddlm} ddlm} ddlm} d}d}d}| ¡ |j|d }||j|d }	|}
|
|j|d }t	j
 d	d
¡}| j| ¡ |	 ¡ || j| jd}|  |
 ¡ | ¡ |¡}|j|jksÄt‚|j|jk sÔt‚|  |¡}|ƒ  || j¡ W d Q R X |  |j¡ d S )Nr   )r   )r±   )r²   r§   rœ   rÆ   )r)   r&   r'   )r*   r+   )rP   r³   r   r´   r±   rµ   r²   rO   rQ   r   rL   rM   rN   r¶   r*   r+   rb   r1   re   r2   rz   r·   r{   r|   )r[   rP   r   r±   r²   r¸   r¹   rÁ   r1   r2   rº   r»   r4   rc   r¼   r}   r\   r\   r]   Útest_case_4_new_workflowengine_start_date_end_date_range_is_include_start_end_equal_in_an_existant_workflowengine_raise_exception)  s&     z”WorkflowModelTests.test_case_4_new_workflowengine_start_date_end_date_range_is_include_start_end_equal_in_an_existant_workflowengine_raise_exceptionc          	   C   s
  dd l }ddlm} ddlm} ddlm} d}d}d}| ¡ |j|d }||j|d }	||j|d }
|	}t	j
 d	d
¡}| j| ¡ |	 ¡ || j| jd}|  |
 ¡ | ¡ |¡}|j|jksÄt‚|j|jksÔt‚|  |¡}|ƒ  || j¡ W d Q R X |  |j¡ d S )Nr   )r   )r±   )r²   r§   rœ   rÆ   )r)   r&   r'   )r*   r+   )rP   r³   r   r´   r±   rµ   r²   rO   rQ   r   rL   rM   rN   r¶   r*   r+   rb   r1   re   r2   rz   r·   r{   r|   )r[   rP   r   r±   r²   r¸   r¹   rÀ   r1   r2   rº   r»   r4   rc   r¼   r}   r\   r\   r]   rÇ   I  s(     
c          	   C   s  dd l }ddlm} ddlm} ddlm} d}d}d}| ¡ |j|d }||j|d }	|	}
|	|j|d }t	j
 d	d
¡}| j| ¡ |	 ¡ || j| jd}|  |
 ¡ | ¡ |¡}|j|jksÄt‚|j|jksÔt‚|j|jksät‚|  |¡}|ƒ  || j¡ W d Q R X |  |j¡ d S )Nr   )r   )r±   )r²   r§   rœ   rÆ   )r)   r&   r'   )r*   r+   )rP   r³   r   r´   r±   rµ   r²   rO   rQ   r   rL   rM   rN   r¶   r*   r+   rb   r1   re   r2   rz   r·   r{   r|   )r[   rP   r   r±   r²   r¸   r¹   Znew_interval_start_lenghtr1   r2   rº   r»   r4   rc   r¼   r}   r\   r\   r]   ÚZtest_case_4_new_workflowengine_end_date_start_date_of_the_new_one_overlaps_raise_exceptionj  s*     
zmWorkflowModelTests.test_case_4_new_workflowengine_end_date_start_date_of_the_new_one_overlaps_raise_exceptionc          	   C   s  dd l }ddlm} ddlm} ddlm} d}d}d}| ¡ |j|d }||j|d }	||j|d }
|}t	j
 d	d
¡}| j| ¡ |	 ¡ || j| jd}|  |
 ¡ | ¡ |¡}|j|jk sÄt‚|j|jksÔt‚|j|jksät‚|  |¡}|ƒ  || j¡ W d Q R X |  |j¡ d S )Nr   )r   )r±   )r²   r§   rœ   iöÿÿÿ)r)   r&   r'   )r*   r+   )rP   r³   r   r´   r±   rµ   r²   rO   rQ   r   rL   rM   rN   r¶   r*   r+   rb   r1   re   r2   rz   r·   r{   r|   )r[   rP   r   r±   r²   r¸   r¹   rÀ   r1   r2   rº   r»   r4   rc   r¼   r}   r\   r\   r]   Úotest_case_4_new_workflowengine_start_date_overlaps_with_of_the_end_date_of_the_new_one_overlaps_raise_exceptionŒ  s*     
z‚WorkflowModelTests.test_case_4_new_workflowengine_start_date_overlaps_with_of_the_end_date_of_the_new_one_overlaps_raise_exception)NNN)4Ú__name__Ú
__module__Ú__qualname__r^   rN   rb   rf   ri   rm   ro   rq   rt   rv   rx   ry   r~   r   r€   r‚   rƒ   r„   r…   rˆ   r‹   rŒ   r   rŽ   r   r   r‘   r’   r”   r•   r–   r—   r¦   r¨   r©   rª   r«   r¬   r­   r®   r¯   r°   r½   rÂ   rÅ   rÇ   rÈ   rÉ   rÊ   r\   r\   r\   r]   r      sf    

	





 &&" !"r   c               @   sL   e Zd ZdZddd„Zddd„Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚWorkflowNotificationTestsz
		UTILS FUNCTIONS
	Nc       	   	   C   sÀ   t dd||d|jdd}| ¡  |d k	rJx |D ]}|j |¡ | ¡  q.W |d k	rtx |D ]}|j |¡ | ¡  qXW tddd|ddd ¡  td	d
d|d	dd ¡  tddd|ddd ¡  |S )Nr.   r_   zTesting workflow template)r/   r0   r1   r2   r3   r4   r5   z1,2,3,4z1,2,3r6   )r7   r8   r`   r9   r:   r;   r-   z4,5,6z4,5r<   r=   Ú7Ú6r>   )r   r?   rI   r*   ra   r+   r   )	r[   r1   r2   r4   r*   r+   rR   rB   r$   r\   r\   r]   rN   ¼  s(    

zCWorkflowNotificationTests.create_workflow_engine_for_manual_log_forc       	   	   C   sÀ   t dd||d|jdd}| ¡  |d k	rJx |D ]}|j |¡ | ¡  q.W |d k	rtx |D ]}|j |¡ | ¡  qXW tddd|ddd ¡  tddd |dd	d ¡  td
dd|d
dd ¡  |S )Nr.   r_   zTesting workflow template)r/   r0   r1   r2   r3   r4   r5   z1,2,3r6   )r7   r8   r`   r9   r:   r;   r-   r<   r=   rÐ   r>   )r   r?   rI   r*   ra   r+   r   )	r[   r1   r2   r4   r*   r+   rR   rB   r$   r\   r\   r]   ÚBcreate_workflow_engine_for_manual_log_for_second_node_no_notifiersÖ  s(    

z\WorkflowNotificationTests.create_workflow_engine_for_manual_log_for_second_node_no_notifiersc             C   s  dd l }ddlm} ddlm} ddlm} dd l}ddlm	} d}d}d}	| 
¡ |j|d }
|
|j|	d }td	d
d	d}| ¡  g }| |¡ tddd| 
¡ |j|d  ¡ d|d}| ¡  g }| |¡ tj dd¡}| j|
 ¡ | ¡ |||d}t||
|j|d dd}| ¡  |jd k	 |jjdd}|j|jjd}| ¡ dksXt‚| ¡ dksjt‚| | ¡ j¡}|d |jksŽt‚t ||j!j" ƒt d	ddgƒkrÎt#||j!j" ƒt#d	ddgƒksÒt‚t ||j!j$ ƒt d	dddgƒkrt#||j!j$ ƒt#d	dddgƒkst‚d S )Nr   )r   )r±   )r²   )ÚNotificationiöÿÿÿrÆ   )r)   r   r   )r   r   r   Ú2Úkollyr   zel facha)r    r!   r"   Ú	hire_dater#   r$   r&   r'   )r*   r+   )rB   rC   rD   F)Úis_sent)Úeventr.   Úapplicant_idÚ3Ú4)%rP   r³   r   r´   r±   rµ   r²   r   Úmysite.notifications.modelsrÒ   rO   rQ   r   rI   rJ   r   r¶   r   rL   rM   rN   r   ÚworkflowinstanceÚfilterÚWorkflowEventsÚON_NEW_WORKFLOWr   re   ÚloadsrV   Úcontentr?   ÚlenÚContentKeysÚNOTIFIER_ROLES_IDÚsortedÚCURRENT_APPROVER_ROLES_ID)r[   rP   r   r±   r²   r   rÒ   r¸   Úpunch_startr¹   r1   r2   r$   r+   rB   r*   r4   rc   rU   ÚnotificationsÚnew_workflow_notificationrá   r\   r\   r]   Ústest_after_creating_workflow_2_notification_is_created_for_notification_roles_123_applicant_and_approver_roles_1234õ  sZ    



 $"zWorkflowNotificationTests.test_after_creating_workflow_2_notification_is_created_for_notification_roles_123_applicant_and_approver_roles_1234c          	   C   sÀ  dd l }ddlm} ddlm} ddlm} dd l}ddlm	} d}d}d}	| 
¡ |j|d }
|
|j|	d }td	d
d	d}| ¡  g }| |¡ tdddd| 
¡ |j|d  ¡ |d}| ¡  tddd}| ¡  |j |¡ g }| |¡ tj dd¡}| j|
 ¡ | ¡ |||d}t||
|j|d dd}| ¡  |jd k	 |j |d¡ |jjdd}|jjdd}|j|jjd}|j|jjd}| ¡ dks¤t ‚| ¡ dks¶t ‚| ¡ dksÈt ‚| !| "¡ j#¡}|d |j$ksìt ‚t%||j&j' ƒt%d	ddgƒkr,t(||j&j' ƒt(d	ddgƒks0t ‚t%||j&j) ƒt%d	dddgƒkrtt(||j&j) ƒt(d	dddgƒksxt ‚t%||j&j* ƒt%ddd gƒkr¸t(||j&j* ƒt(ddd gƒks¼t ‚d S )!Nr   )r   )r±   )r²   )rÒ   iöÿÿÿrÆ   )r)   r   r   )r   r   r   rÙ   rÔ   r   zel facha)r    r!   r"   r#   rÕ   r$   r.   )r?   r@   r&   r'   )r*   r+   )rB   rC   rD   ÚapproveF)rÖ   )r×   r-   rØ   rÓ   rÚ   Ú5rÐ   )+rP   r³   r   r´   r±   rµ   r²   r   rÛ   rÒ   rO   rQ   r   rI   rJ   r   r¶   r   rk   ra   r   rL   rM   rN   r   rÜ   rl   rÝ   rÞ   rß   ÚON_WORKFLOW_NODE_APPROVALr   re   rà   rV   rá   r?   râ   rã   rä   rå   ræ   ÚNEXT_APPROVER_ROLES_ID)r[   rP   r   r±   r²   r   rÒ   r¸   rç   r¹   r1   r2   r$   r+   rB   Úrole1r*   r4   rc   rU   rè   ré   Ú#approved_workflow_node_notificationrá   r\   r\   r]   Ú¡test_after_approving_workflow_node_2_notification_are_created_for_notifiers_roles_123_current_approver_roles_id_1234_next_approver_roles_id_456_and_the_applicant=  sn    



 $"& z»WorkflowNotificationTests.test_after_approving_workflow_node_2_notification_are_created_for_notifiers_roles_123_current_approver_roles_id_1234_next_approver_roles_id_456_and_the_applicantc          	   C   sN  dd l }ddlm} ddlm} ddlm} dd l}ddlm	} d}d}d}	| 
¡ |j|d }
|
|j|	d }td	d
d	d}| ¡  g }| |¡ tddd| 
¡ |j|d  ¡ d|d}| ¡  tdd	d}| ¡  tddd}| ¡  tddd}| ¡  |j |¡ |j |¡ |j |¡ g }| |¡ tj dd¡}| j|
 ¡ | ¡ |||d}t||
|j|d dd}| ¡  |jd k	 |j |d¡ |j |d¡ |j |d¡ |jjdd}|j|jjd}|j|jjd}|j|jjd}|  ¡ dkst!‚|  ¡ dkst!‚|  ¡ d ks&t!‚|  ¡ dks8t!‚| "| #¡ j$¡}|d! |j%ks\t!‚t&||j'j( ƒt&d"gƒkr”t)||j'j( ƒt)d"gƒks˜t!‚t&||j'j* ƒt&dgƒkrÐt)||j'j* ƒt)dgƒksÔt!‚|j'j+|  krðdksön t!‚t&||j'j, ƒt&d	d#ddd$d"dgƒkrFt)||j'j, ƒt)d	d#ddd$d"dgƒksJt!‚d S )%Nr   )r   )r±   )r²   )rÒ   iöÿÿÿrÆ   )r)   r   r   )r   r   r   rÙ   rÔ   r   zel facha)r    r!   r"   rÕ   r#   r$   r.   )r?   r@   rA   rÚ   é   rÏ   r&   r'   )r*   r+   )rB   rC   rD   rë   F)rÖ   )r×   rH   r=   rØ   rÐ   rÓ   rì   )-rP   r³   r   r´   r±   rµ   r²   r   rÛ   rÒ   rO   rQ   r   rI   rJ   r   r¶   r   rk   ra   r   rL   rM   rN   r   rÜ   rl   rÝ   rÞ   rß   rí   ZON_WORKFLOW_EXCEPTION_APPROVEDr   re   rà   rV   rá   r?   râ   rã   rä   rå   ræ   rî   ÚALL_APPROVER_ROLES_ID)r[   rP   r   r±   r²   r   rÒ   r¸   rç   r¹   r1   r2   r$   r+   rB   rï   Úrole2Úrole3r*   r4   rc   rU   rè   ré   rð   Z(approved_workflow_exception_notificationrá   r\   r\   r]   Úçtest_after_approving_workflow_5_notification_are_created_1_for_new_workflow_3_for_approval_node_and_last_one_for_exception_approval_with_nofiers_roles_id_6_the_current_approver_role_id_6_the_previous_approvers_1234567_and_applicantœ  s„    



  "(a  WorkflowNotificationTests.test_after_approving_workflow_5_notification_are_created_1_for_new_workflow_3_for_approval_node_and_last_one_for_exception_approval_with_nofiers_roles_id_6_the_current_approver_role_id_6_the_previous_approvers_1234567_and_applicantc             C   s®  dd l }ddlm} ddlm} ddlm} dd l}ddlm	} d}d}d}	| 
¡ |j|d }
|
|j|	d }td	d
d	d}| ¡  g }| |¡ tddd| 
¡ |j|d  ¡ d|d}| ¡  tdd	d}| ¡  tddd}| ¡  tddd}| ¡  |j |¡ |j |¡ |j |¡ | ¡  g }| |¡ tj dd¡}| j|
 ¡ | ¡ |||d}t||
|j|d dd}| ¡  |jd k	 |j |d¡ |jjdd}|j|jjd}|j|jjd}|j|jjd}|  ¡ dksît!‚|  ¡ dks t!‚|  ¡ dkst!‚|  ¡ dks$t!‚| "| #¡ j$¡}| "| #¡ j$¡}|d  |j%ksXt!‚|d  |j%kslt!‚t&||j'j( ƒt&d	d!dgƒkr¬t)||j'j( ƒt)d	d!dgƒks°t!‚t&||j'j* ƒt&d	d!ddgƒkrôt)||j'j* ƒt)d	d!ddgƒksøt!‚|j'j+|  krdksn t!‚t&||j'j, ƒt&d	d!ddgƒkr^t)||j'j, ƒt)d	d!ddgƒksbt!‚t&||j'j* ƒt&d	d!ddgƒkr¦t)||j'j* ƒt)d	d!ddgƒksªt!‚d S )"Nr   )r   )r±   )r²   )rÒ   iöÿÿÿrÆ   )r)   r   r   )r   r   r   rÙ   rÔ   r   zel facha)r    r!   r"   rÕ   r#   r$   r.   )r?   r@   rA   rÚ   rò   rÏ   r&   r'   )r*   r+   )rB   rC   rD   ÚrejectF)rÖ   )r×   r=   rØ   rÓ   )-rP   r³   r   r´   r±   rµ   r²   r   rÛ   rÒ   rO   rQ   r   rI   rJ   r   r¶   r   rk   ra   r   rL   rM   rN   r   rÜ   rr   rÝ   rÞ   rß   ÚON_WORKFLOW_NODE_REJECTÚON_WORKFLOW_EXCEPTION_REJECTEDr   re   rà   rV   rá   r?   râ   rã   rä   rå   ræ   rî   ró   )r[   rP   r   r±   r²   r   rÒ   r¸   rç   r¹   r1   r2   r$   r+   rB   rï   rô   rõ   r*   r4   rc   rU   rè   ré   Ú#rejected_workflow_node_notificationÚ(rejected_workflow_exception_notificationÚcontent_rejected_nodeÚ#content_rejected_workflow_exceptionr\   r\   r]   ÚÄtest_after_rejecting_workflow_3_notification_are_created_1_for_new_workflow_1_for_reject_node_and_last_one_for_exception_rejected_with_nofiers_roles_id_123_approvers_role_id_1234_and_the_applicant  sŠ    



 $"&""&"zÞWorkflowNotificationTests.test_after_rejecting_workflow_3_notification_are_created_1_for_new_workflow_1_for_reject_node_and_last_one_for_exception_rejected_with_nofiers_roles_id_123_approvers_role_id_1234_and_the_applicantc           	   C   sÌ  dd l }ddlm} ddlm} ddlm} dd l}ddlm	} d}d}d}	| 
¡ |j|d }
|
|j|	d }td	d
d	d}| ¡  g }| |¡ tdd| 
¡ |j|d  ¡ dd|d}| ¡  tdd	d}| ¡  tddd}| ¡  tddd}| ¡  |j |¡ |j |¡ |j |¡ | ¡  g }| |¡ tj dd¡}| j|
 ¡ | ¡ |||d}t||
|j|d dd}| ¡  |jd k	 |j |d¡ |j |d¡ |j |d¡ |jjdd}|j|jjd}|j|jjd  d ¡}|j|jj!d}|j|jj"d}| #¡ d!ks t$‚| #¡ dks2t$‚| #¡ d"ksDt$‚| #¡ dksVt$‚| #¡ dksht$‚| %| &¡ j'¡}| %| (¡ d j'¡}| %| (¡ d j'¡}| %| &¡ j'¡}| %| &¡ j'¡}|d# |j)ksÔt$‚|d# |j)ksèt$‚|d# |j)ksüt$‚|d# |j)kst$‚|d# |j)ks$t$‚t*||j+j, ƒt*d	d$dgƒkrdt-||j+j, ƒt-d	d$dgƒksht$‚t*||j+j. ƒt*d	d$ddgƒkr¬t-||j+j. ƒt-d	d$ddgƒks°t$‚t*||j+j, ƒt*d	d$dgƒkrðt-||j+j, ƒt-d	d$dgƒksôt$‚t*||j+j. ƒt*d	d$ddgƒkr8t-||j+j. ƒt-d	d$ddgƒks<t$‚t*||j+j/ ƒt*dd%d&gƒkr|t-||j+j/ ƒt-dd%d&gƒks€t$‚t*||j+j, ƒt*dd%gƒkr¼t-||j+j, ƒt-dd%gƒksÀt$‚t*||j+j. ƒt*dd%d&gƒkr t-||j+j. ƒt-dd%d&gƒkst$‚t*||j+j/ ƒt*dgƒkr<t-||j+j/ ƒt-dgƒks@t$‚t*||j+j, ƒt*d&gƒkrxt-||j+j, ƒt-d&gƒks|t$‚t*||j+j. ƒt*dgƒkr´t-||j+j. ƒt-dgƒks¸t$‚|j+j/|  krÔdksÚn t$‚t*||j+j, ƒt*d&gƒkrt-||j+j, ƒt-d&gƒkst$‚t*||j+j. ƒt*dgƒkrNt-||j+j. ƒt-dgƒksRt$‚t*||j+j0 ƒt*d	d$ddd%d&dgƒkr¢t-||j+j0 ƒt-d	d$ddd%d&dgƒks¦t$‚|j+j/|  krÂdksÈn t$‚d S )'Nr   )r   )r±   )r²   )rÒ   iöÿÿÿrÆ   )r)   r   r   )r   r   r   rÙ   rÔ   r   zel facha)r    r!   rÕ   r"   r#   r$   r.   )r?   r@   rA   rÚ   rò   rÏ   r&   r'   )r*   r+   )rB   rC   rD   rë   r÷   F)rÖ   )r×   Zcommit_timerH   r-   rØ   rÓ   rì   rÐ   )1rP   r³   r   r´   r±   rµ   r²   r   rÛ   rÒ   rO   rQ   r   rI   rJ   r   r¶   r   rk   ra   r   rL   rM   rN   r   rÜ   rl   rr   rÝ   rÞ   rß   rí   Zorder_byrø   rù   r   re   rà   rV   rá   Úallr?   râ   rã   rä   rå   ræ   rî   ró   ) r[   rP   r   r±   r²   r   rÒ   r¸   rç   r¹   r1   r2   r$   r+   rB   rï   rô   rõ   r*   r4   rc   rU   rè   ré   rð   rú   rû   Zcontent_new_workflowZcontent_approve_node_1_nodeZcontent_approve_node_2_noderü   rý   r\   r\   r]   Ú½test_after_rejecting_workflow_5_notification_are_created_1_for_new_workflow_2_for_approve_node_1_for_reject_node_and_last_one_for_exception_rejected_with_nofiers_roles_id__and_the_applicant‚  sÆ    



 $"& $"& $" $   "  (,z×WorkflowNotificationTests.test_after_rejecting_workflow_5_notification_are_created_1_for_new_workflow_2_for_approve_node_1_for_reject_node_and_last_one_for_exception_rejected_with_nofiers_roles_id__and_the_applicant)NN)NN)rË   rÌ   rÍ   Ú__doc__rN   rÑ   rê   rñ   rö   rþ   r   r\   r\   r\   r]   rÎ   ¸  s   

H_pvrÎ   )/rP   r³   r   Zdjango.testr   Zmysite.personnel.modelsr   Zmysite.workflow.modelsr   r   r   Z(mysite.workflow.models.workflow_instancer   r	   Z%mysite.workflow.models.workflow_stater
   Z'mysite.workflow.models.workflow_builderr   Zdjango.urlsr   Zrest_framework.testr   Zrest_frameworkr   rµ   r   Zmysite.accounts.models.my_userr   rK   Z!mysite.att.models.model_manuallogr   Zmysite.att.models.model_leaver   Z"django.contrib.contenttypes.modelsr   Z%mysite.att.models.model_leavecategoryr   Z mysite.att.models.model_overtimer   Z mysite.att.models.model_trainingr   Z(mysite.att.models.model_trainingcategoryr   Z(mysite.personnel.models.model_departmentr   r   rÎ   r\   r\   r\   r]   Ú<module>   s:          '