
    NUi	                     z   d dl Zd dlmc mZ d dlZej                  j                  d d       d dl	Z	d dl
m
Z
 d dlmZmZmZ d dlmZ d dlmZ e	j&                  d        Ze	j&                  d        Ze	j&                  d	        Ze	j.                  j0                  d
        Ze	j.                  j0                  d        Zy)    Nz!/home/jang/Projects/ai-researcher)datetime)	AsyncMock	MagicMockpatchTaskManager)Taskc                      t               S )Nr        A/home/jang/Projects/ai-researcher/tests/unit/test_task_manager.pytask_managerr      s
    =r   c                      t               } t               | _        t               | _        t               | _        t               | _        t               | _        | S )u   创建mock session)r   r   addflushrefreshcommitget)sessions    r   mock_sessionr      s=     kG+GKKGMkGO[GN+GKNr   c                     t               }t        |       |j                  _        t        d      |j                  _        |S )u   创建mock session makerreturn_valueN)r   r   r   
__aenter__	__aexit__)r   makers     r   mock_session_makerr      s6     KE$-<$HE!#,$#?E Lr   c                 
	  K   t        d|      5  | j                  ddd       d{   }|j                  }d}||u}|st        j                  d|fd	||f      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|j                  }t        j                  }||k(  }|st        j                  d|fd||f      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            dx}x}}|j                  }d}||k(  }|st        j                  d|fd||f      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|j                  }d}||k(  }|st        j                  d|fd||f      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}|j                   }d}||k(  }|st        j                  d|fd||f      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}ddd       y7 L# 1 sw Y   yxY ww)u   测试创建任务'src.core.task_manager.get_session_makerr   u   查询技术部员工g333333?user_1)querycomplexity_scoreuser_idNis not)z.%(py2)s
{%(py2)s = %(py0)s.id
} is not %(py5)staskpy0py2py5assert %(py7)spy7==zR%(py2)s
{%(py2)s = %(py0)s.status
} == %(py6)s
{%(py6)s = %(py4)s.STATUS_PENDING
}r	   r(   r)   py4py6assert %(py8)spy8)z-%(py2)s
{%(py2)s = %(py0)s.query
} == %(py5)s)z8%(py2)s
{%(py2)s = %(py0)s.complexity_score
} == %(py5)s)z/%(py2)s
{%(py2)s = %(py0)s.user_id
} == %(py5)s)r   create_taskid
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationstatusr	   STATUS_PENDINGr!   r"   r#   )r   r   r&   @py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert5@py_format7@py_format9s              r   test_create_taskrI   '   s     
8GY	Z (!--)  . 
 
 ww"d"wd""""wd""""""t"""t"""w"""d"""""""{{1d111{11111{1111111t111t111{111111d111d11111111111zz444z44444z4444444t444t444z44444444444$$++$++++$++++++t+++t+++$++++++++++||'x'|x''''|x''''''t'''t'''|'''x'''''''( (
( (s-   RQ7Q4QQ7+	R4Q77R <Rc                 Z  K   t        dt         j                  dd      }t        d|      5  | j                  dd       d{   }|j                  }t         j                  }||k(  }|st        j                  d|fd	||f      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      dt        j                         v st        j                  t               rt        j                  t               ndt        j                  |      dz  }dd|iz  }	t        t        j                  |	            dx}x}}|||g|j                  _        | j                  |j                          d{    |j                  }t         j"                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t               rt        j                  t               ndt        j                  |      dz  }dd|iz  }	t        t        j                  |	            dx}x}}|j$                  }d}
||
u}|st        j                  d|fd||
f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |
      dz  }dd|iz  }t        t        j                  |            dx}x}}
| j'                  |j                          d{    |j                  }t         j(                  }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  t               rt        j                  t               ndt        j                  |      dz  }dd|iz  }	t        t        j                  |	            dx}x}}|j*                  }d}
||
u}|st        j                  d|fd||
f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |
      dz  }dd|iz  }t        t        j                  |            dx}x}}
ddd       y7 S7  7 # 1 sw Y   yxY ww)u   测试任务状态流转task_test123u   测试查询g?)r6   r?   r!   r"   r   r   Nr-   r/   r&   r	   r0   r3   r4   )zR%(py2)s
{%(py2)s = %(py0)s.status
} == %(py6)s
{%(py6)s = %(py4)s.STATUS_RUNNING
}	mock_taskr$   )z6%(py2)s
{%(py2)s = %(py0)s.started_at
} is not %(py5)sr'   r+   r,   )zT%(py2)s
{%(py2)s = %(py0)s.status
} == %(py6)s
{%(py6)s = %(py4)s.STATUS_COMPLETED
})z8%(py2)s
{%(py2)s = %(py0)s.completed_at
} is not %(py5)s)r	   r@   r   r5   r?   r7   r8   r9   r:   r;   r<   r=   r>   r   side_effect
start_taskr6   STATUS_RUNNING
started_atcomplete_taskSTATUS_COMPLETEDcompleted_at)r   r   r   rL   r&   rA   rF   rC   rG   rH   rB   rD   rE   s                r   test_task_status_transitionsrT   8   sh     ""	I 
8GY	Z 2!--ncBB{{1d111{11111{1111111t111t111{111111d111d11111111111 )29i'H$ %%ill33364#6#66#66666#6666666y666y66666666646664666#66666666##/4/#4////#4//////y///y///#///4/////// ((66684#8#88#88888#8888888y888y88888888848884888#88888888%%1T1%T1111%T111111y111y111%111T1111111!2 2B 	4
 	72 2sU   +V+VVEVVHV"V#G*V	V+VVVV($V+)builtinsr9   _pytest.assertion.rewrite	assertionrewriter7   syspathinsertpytestr   unittest.mockr   r   r   src.core.task_managerr   src.models.taskr	   fixturer   r   r   markasynciorI   rT   r   r   r   <module>rc      s      
 6 7   5 5 -         ( (  2 2r   