Ë
    ú·?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   „ Ù'ð6˜Dð 6 Tô 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   „ Ù/ð8˜Dð 8 Tô 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�   € ä×Ñ˜k¨6´8Ô<à�‰œ×2Ñ2°;Ó?Ô@Ø×Ñœ×,Ñ,¨[Ñ9¼8ÔDØ×Ñœ×,Ñ,¨VÑ4°kÔ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Ñ3Ô5E×5LÑ5LÔ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^   € ä×Ñ˜k¨6´8Ô<à×ÑœzÔ*¨bÜ×!Ñ! +¨v´yÔ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^   € ä×Ñ˜k¨6´8Ô<à×Ñœ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   € ä×Ñ˜k¨6´8Ô<ä!×*Ñ*¨;Ó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Ô1°RÜ×!Ñ! .Ô1÷ 2ð 	�‰�k¤3 r§|¡|Ó#4Ô5Ø�‰�n¤c¨"¯,©,Ó&7Õ8÷	 2Ð1ús   –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   € ä×Ñ˜k¨6´8Ô<ä!×2Ñ2°6Ó:ˆ
Ø×Ñ˜¤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Ô1°RÜ×)Ñ)¨&Ô1÷ 2ð 	�‰�k¤3 r§|¡|Ó#4Õ5÷ 2Ð1ús   –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Ó2°BÔ7ä×Ñ˜m¨V´XÔ>Ü×Ñ˜m¨V´YÔ?ä×'Ñ'Ó)ˆØ×Ñœ˜U› QÔ'Ø�‰�m UÔ+Ø�‰�m UÕ+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Ø $ñ
ˆô 	×Ñ˜k¨6´8ÑF¸vÒ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Ñ3°KÓ@ÔAä×Ñ˜k¨6´8Ô<Ø�‰œ×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‡   € ä×Ñ˜k¨6´8Ô<ð 	×Ñœ×3Ñ3Ô5E×5NÑ5NÔ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Ñ3Ô5E×5VÑ5VÔ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   € ä×Ñ˜k¨6´8Ô<ô "×2Ñ2°6Ó:ˆ
Ø×Ñ˜¤XÔ.ð 	×Ñœ×,Ñ,¨VÑ4°kÕ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Ó2°BÔ7Ø×Ñœ×3Ñ3°JÓ?Ô@à×ÑÔ0Õ1Ü×!Ñ! *Ô-÷ 2×1Ñ1ús   Á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ß ?Ý =ô6ˆxô 6ô8�ô 8ô~5˜õ ~5r   