o
    ³FVµ  ã                   @   sÆ   d dl mZmZ d dl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G dd„ dejƒZdS )é    )Úabsolute_importÚunicode_literalsN)Ú	timedelta)Úcurrent_app)Ústates)ÚAsyncResult)ÚPeriodicTask©Úgen_unique_id©Úapp)ÚDatabaseBackend)Únow)Úunittestc                   @   s   e Zd Zdd„ ZdS )Ú	SomeClassc                 C   s
   || _ d S )N)Údata)Úselfr   © r   ú\/var/www/html/env/lib/python3.10/site-packages/djcelery/tests/test_backends/test_database.pyÚ__init__   s   
zSomeClass.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s    r   c                   @   s"   e Zd ZdZedd�Zdd„ ZdS )ÚMyPeriodicTaskzc.u.my-periodic-task-244é   )Úsecondsc                 K   s   dS )Né*   r   )r   Úkwargsr   r   r   Úrun   s   zMyPeriodicTask.runN)r   r   r   Únamer   Ú	run_everyr   r   r   r   r   r      s    
r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestDatabaseBackendc              
   C   s   t td�}tƒ }|  | |¡tj¡ |  | |¡¡ | 	|d¡ |  | |¡tj
¡ |  | |¡d¡ tƒ }dtdƒdœ}| 	||¡ | |¡}|  | d¡d¡ |  | d¡jd¡ tƒ }ztdƒ‚ tyz } z| ||¡ W Y d }~nd }~ww |  | |¡tj¡ |  | |¡t¡ d S )Nr   r   Úbazé90  ©ÚfooÚbarr%   r&   )r   r   r
   ÚassertEqualÚ
get_statusr   ÚPENDINGÚassertIsNoneÚ
get_resultÚmark_as_doneÚSUCCESSr   Úgetr   ÚKeyErrorÚmark_as_failureÚFAILUREÚassertIsInstance)r   ÚbÚtidÚtid2ÚresultÚrindbÚtid3Ú	exceptionr   r   r   Útest_backend#   s,   

€ÿz TestDatabaseBackend.test_backendc                 C   sl   t td�}tƒ }| |ddi¡ t|ƒ}|  |j d¡d¡ | ¡  t	j
dd… dkr.d |_|  |j¡ d S )Nr   r%   r&   r   é   )r;   r   é
   )r   r   r
   r,   r   r'   r6   r.   ÚforgetÚceleryÚVERSIONÚ_cacher*   )r   r3   r4   Úxr   r   r   Útest_forget?   s   
zTestDatabaseBackend.test_forgetc                 C   s’   t td�}tƒ }|  | |¡¡ dtdƒdœ}| ||¡ | |¡}|  |¡ |  | 	d¡d¡ |  | 	d¡j
d¡ | |¡ |  | |¡¡ d S )Nr   r"   r#   r$   r%   r&   )r   r   r
   r*   Úrestore_groupr   Ú
save_groupÚassertIsNotNoner'   r.   r   Údelete_group)r   r3   r4   r6   r7   r   r   r   Útest_group_storeK   s   



z$TestDatabaseBackend.test_group_storec                 C   s´   t td�}|jj ¡  ¡  dd„ tdƒD ƒ}tdƒD ]\}}| || |¡ q|  	|jj 
¡ d¡ tƒ tjjd  }|jjj|d d… d�j|d	� | ¡  |  	|jj 
¡ d
¡ d S )Nr   c                 S   s   g | ]}t ƒ ‘qS r   r	   )Ú.0Ú_r   r   r   Ú
<listcomp>]   s    z4TestDatabaseBackend.test_cleanup.<locals>.<listcomp>r;   )é   é    é@   é   éÿÿÿÿ)Útask_id__in)Ú	date_doner   )r   r   Ú	TaskModelÚ_default_managerÚallÚdeleteÚrangeÚ	enumerater,   r'   Úcountr   r   ÚconfÚCELERY_TASK_RESULT_EXPIRESÚfilterÚupdateÚcleanup)r   r3   ÚidsÚiÚresÚthenr   r   r   Útest_cleanupZ   s   
ÿz TestDatabaseBackend.test_cleanupN)r   r   r   r:   rB   rG   rb   r   r   r   r   r!   !   s
    r!   )Ú
__future__r   r   r>   Údatetimer   r   r   Úcelery.resultr   Úcelery.taskr   Úcelery.utilsr
   Údjcelery.appr   Údjcelery.backends.databaser   Údjcelery.utilsr   Údjcelery.tests.utilsr   Úobjectr   r   ÚTestCaser!   r   r   r   r   Ú<module>   s    