
    ?i!                         d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
 ddlmZ  G d de	      Z G d	 d
e	      Z G d de      Zy)z*
Tests for django_cronjob_utils registry.
    )date)TestCase)TaskRegistryExecutionPattern)CronTaskExecutionResult)TaskNotFoundErrorc                        e Zd ZdZdedefdZy)TestTaskzTest task for registry tests.r   returnc                     dddS )NFSuccesserrormessage selfr   s     C/home/cursorai/projects/django-cronjob-utils/tests/test_registry.pyexecutezTestTask.execute   s    955    N__name__
__module____qualname____doc__r   dictr   r   r   r   r   r      s    '6D 6T 6r   r   c                        e Zd ZdZdedefdZy)	TestTask2z%Another test task for registry tests.r   r   c                     dddS )NFz	Success 2r   r   r   s     r   r   zTestTask2.execute   s    ;77r   Nr   r   r   r   r   r      s    /8D 8T 8r   r   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TaskRegistryTestszTests for TaskRegistry.c                     t         j                  j                          t         j                  j                          t         j                  j                          y)z Clear registry before each test.N)r   _tasksclear_codes_configsr   s    r   setUpzTaskRegistryTests.setUp   s8    !!#!!###%r   c                    t        j                  ddt               | j                  t        j                  d             | j                  t         j                  d   t               | j                  t         j                  d   d       | j                  t        j                  d       | j                  t        j                  d       y)zTest registering a task.	test-taskA001N)
r   registerr   
assertTrueis_registeredassertEqualr$   r&   	task_name	task_coder(   s    r   test_register_taskz$TaskRegistryTests.test_register_task"   s    k68<22;?@,,[98D,,V4kB++[9++V4r   c           
         t        j                  ddt        t        j                  dddd       | j                  t        j                  t        j                         | j                  t        j                         | j                  t        j                  d       | j                  t        j                  d       | j                  t        j                  d       y)	z+Test registering a task with configuration.r+   r,   T   iX  i  )execution_patternretry_on_failuremax_retriesretry_delaytimeoutN)r   r-   r   r   ALWAYSr0   r6   r.   r7   r8   r9   r:   r(   s    r   test_register_task_with_configz0TaskRegistryTests.test_register_task_with_config,   s    .55!		
 	335E5L5LM112--q1--s3))40r   c                    t        j                  ddt               | j                  t              5 }t        j                  ddt
               ddd       | j                  dt        j                               y# 1 sw Y   /xY w)z2Test registering duplicate task name raises error.r+   r,   A002Nalready registered	r   r-   r   assertRaises
ValueErrorr   assertInstr	exceptionr   cms     r   !test_register_task_duplicate_namez3TaskRegistryTests.test_register_task_duplicate_name?   s^    k68<z*b!!+vyA + 	*C,=> +*   A;;Bc                    t        j                  ddt               | j                  t              5 }t        j                  ddt
               ddd       | j                  dt        j                               y# 1 sw Y   /xY w)z2Test registering duplicate task code raises error.r+   r,   test-task-2Nr?   r@   rF   s     r   !test_register_task_duplicate_codez3TaskRegistryTests.test_register_task_duplicate_codeH   s^    k68<z*b!!-C + 	*C,=> +*rI   c                     t        j                  ddt               t        j                  d      }| j	                  |t               y)zTest getting task by name.r+   r,   N)r   r-   r   get_taskr0   r   
task_classs     r   test_get_taskzTaskRegistryTests.test_get_taskQ   s4    k68<!**;7
X.r   c                    | j                  t              5 }t        j                  d       ddd       | j	                  dt        j                               | j	                  dt        |j                               y# 1 sw Y   TxY w)z,Test getting non-existent task raises error.non-existentN	not found)rA   r	   r   rN   rC   rD   rE   rF   s     r   test_get_task_not_foundz)TaskRegistryTests.test_get_task_not_foundX   s_    01R!!.1 2 	k3r||#45nc",,&78	 21s   A??Bc                     t        j                  ddt               t        j                  d      }| j	                  |t               y)zTest getting task by code.r+   r,   N)r   r-   r   get_task_by_coder0   rO   s     r   test_get_task_by_codez'TaskRegistryTests.test_get_task_by_code`   s4    k68<!226:
X.r   c                     | j                  t              5 }t        j                  d       ddd       | j	                  dt        j                               y# 1 sw Y   /xY w)z4Test getting task by non-existent code raises error.Z999NrT   )rA   r	   r   rW   rC   rD   rE   rF   s     r   test_get_task_by_code_not_foundz1TaskRegistryTests.test_get_task_by_code_not_foundg   sH    01R))&1 2 	k3r||#45 21s   AA#c                 ^   | j                  t        j                         g        t        j                  ddt               t        j                  ddt
               t        j                         }| j                  t        |      d       | j                  d|       | j                  d|       y)z"Test listing all registered tasks.ztest-task-1r,   rK   r>      N)r0   r   
list_tasksr-   r   r   lenrC   )r   taskss     r   test_list_tasksz!TaskRegistryTests.test_list_tasksn   s}    002B7mVX>mVY?'')UQ'mU+mU+r   c                     t         j                  dd}t        j                  ddt        fi | t        j
                  d      }| j                  |d   t         j                         | j                  |d          y)z Test getting task configuration.T)r6   r7   r+   r,   r6   r7   N)r   r;   r   r-   r   
get_configr0   r.   )r   configretrieved_configs      r   test_get_configz!TaskRegistryTests.test_get_configz   sr     "2!8!8 $
 	k68FvF'22;?)*=>@P@W@WX();<=r   c                 R    t        j                  d      }| j                  |i        y)z*Test getting config for non-existent task.rS   N)r   rc   r0   )r   rd   s     r   test_get_config_not_foundz+TaskRegistryTests.test_get_config_not_found   s"    ((8$r   c                     | j                  t        j                  d             t        j                  ddt               | j                  t        j                  d             y)z$Test checking if task is registered.r+   r,   N)assertFalser   r/   r-   r   r.   r(   s    r   test_is_registeredz$TaskRegistryTests.test_is_registered   sD    33K@Ak68<22;?@r   c                 n   t        j                  ddt               t        j                  ddt               | j	                  t        t        j                               d       | j	                  t        j                  d      t               | j	                  t        j                  d      t               y)z Test registering multiple tasks.task-1r,   task-2r>   r]   N)r   r-   r   r   r0   r_   r^   rN   r(   s    r   test_register_multiple_tasksz.TaskRegistryTests.test_register_multiple_tasks   sz    h9h	:\4467;..x8(C..x8)Dr   c                    t        j                  ddt               | j                  t        j                  t
        j                         | j                  t        j                         | j                  t        j                  d       | j                  t        j                  d       | j                  t        j                         y)z1Test registering task with default configuration.r+   r,   r   ,  N)r   r-   r   r0   r6   r   STANDARDrj   r7   r8   r9   assertIsNoner:   r(   s    r   !test_register_task_default_configz3TaskRegistryTests.test_register_task_default_config   s    k68< 	335E5N5NO223--q1--s3(**+r   c                    t        j                  ddt        t        j                  d       | j                  t        j                  t        j                         | j                  t        j                  d       | j                  t        j                         | j                  t        j                  d       | j                  t        j                  d       y)z1Test registering task with partial configuration.r+   r,   i  )r6   r:   r   rq   N)r   r-   r   r   RERUN_ON_FAILUREr0   r6   r:   rj   r7   r8   r9   r(   s    r   !test_register_task_partial_configz3TaskRegistryTests.test_register_task_partial_config   s    .??	
 	335E5V5VW))40223--q1--s3r   c                     t        j                  ddt               t        j                  d      }| j	                  |t               | j	                  t         j
                  d   d       y)zTest code to name mapping.r+   r,   N)r   r-   r   rW   r0   r&   rO   s     r   test_code_name_mappingz(TaskRegistryTests.test_code_name_mapping   sS    k68< "226:
X. 	,,V4kBr   c                    | j                  t        j                         g        | j                  t        j                  d             | j                  t              5  t        j                  d       ddd       y# 1 sw Y   yxY w)zTest empty registry behavior.zany-taskN)r0   r   r^   rj   r/   rA   r	   rN   r(   s    r   test_empty_registryz%TaskRegistryTests.test_empty_registry   s]    002B733J?@01!!*- 211s   A==Bc                    t        j                  ddt               t        j                  ddt               | j                  t	        t        j
                               d       | j                  t        j                  d      t               | j                  t        j                  d      t               | j                  t        j                  d       | j                  t        j                  d       y)z7Test registering same class with different names/codes.rm   r,   rn   r>   r]   N)	r   r-   r   r0   r_   r^   rN   r1   r2   r(   s    r   (test_register_same_class_different_namesz:TaskRegistryTests.test_register_same_class_different_names   s     	h9h9\4467;..x8(C..x8(C++X6++V4r   N)r   r   r   r   r)   r3   r<   rH   rL   rQ   rU   rX   r[   ra   rf   rh   rk   ro   rt   rw   ry   r{   r}   r   r   r   r"   r"      sg    !&51&??/9/6
,
>%
AE	,4"	C.5r   r"   N)r   datetimer   django.testr   django_cronjob_utils.registryr   r   django_cronjob_utils.baser   r   django_cronjob_utils.exceptionsr	   r   r   r"   r   r   r   <module>r      sA       H ? =6x 68 8~5 ~5r   