
    2pi                     j   d Z ddlZddlmc mZ ddlZddlZddl	Z	ddl
mZ ddlmZ ddlZej                  j!                  d e ee      j&                  j&                  j&                               ddlmZmZmZ  G d d      Z G d d	      Z G d
 d      Zedk(  r ej8                  edg       yy)u)   utils/bot_activity.py 테스트 스위트    N)Path)patch)TEAM_TO_BOTget_bot_statusset_bot_statusc                   .    e Zd ZdZd Zd Zd Zd Zd Zy)TestSetBotStatusu   set_bot_status() 테스트c           	      v   ddl m} |dz  dz  dz  }|j                  j                  d       |j	                  t        j                  dd	d
ddii             ||_        |j                  dd       t        j                  |j                               }|d   d	   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t        t        j                  |	            dx}x}}|d   d	   d   }|j                   }d}
 ||
      }|stdt        j                  |      t        j                  |      t        j                  |
      t        j                  |      dz  }t        t        j                  |            dx}x}x}
}y)u!   status를 processing으로 설정r   Nmemoryeventsbot-activity.jsonTparentsbotsdev1idle2026-03-01T00:00:00Zstatussince	dev1-team
processingr   ==z%(py1)s == %(py4)spy1py4assert %(py6)spy6r   2026-03Lassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
}r   py3py5py7utils.bot_activitybot_activityparentmkdir
write_textjsondumpsBOT_ACTIVITY_FILEr   loads	read_text
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanation
startswithselftmp_pathbabot_activity_filedata@py_assert0@py_assert3@py_assert2@py_format5@py_format7@py_assert4@py_assert6@py_format8s                4/home/jay/workspace/utils/tests/test_bot_activity.pytest_set_bot_status_processingz/TestSetBotStatus.test_set_bot_status_processing   sd   '$x/(:=PP  &&t&4$$JJ6<R S	
  1
+|4 zz+5578F|F#H-==-====-===-==========F|F#G,B,77B	B7	BBBBB,BBB7BBB	BBBBBBBBBB    c           	      v   ddl m} |dz  dz  dz  }|j                  j                  d       |j	                  t        j                  dd	d
ddii             ||_        |j                  dd       t        j                  |j                               }|d   d	   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t        t        j                  |	            dx}x}}|d   d	   d   }|j                   }d}
 ||
      }|stdt        j                  |      t        j                  |      t        j                  |
      t        j                  |      dz  }t        t        j                  |            dx}x}x}
}y)u   status를 idle로 설정r   Nr   r   r   Tr   r   dev2r   r   r   	dev2-teamr   r   r   r   r   r   r    r   r!   r"   r#   r'   r8   s                rF   test_set_bot_status_idlez)TestSetBotStatus.test_set_bot_status_idle/   sb   '$x/(:=PP  &&t&4$$JJ<BX Y	
  1
+v.zz+5578F|F#H-77-7777-777-7777777777F|F#G,B,77B	B7	BBBBB,BBB7BBB	BBBBBBBBBBrH   c                    ddl m} |dz  dz  dz  }||_        |j                  dd       |j                  } |       }|sdd	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      d
z  }t        t        j                  |            dx}}t        j                  |j                               }|d   d   d   }d}||k(  }	|	slt        j                  d|	fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }
t        t        j                  |
            dx}x}	}y)u   파일이 없으면 생성r   Nr   r   r   	dev3-teamr   zAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}r<   )py0py2r   r   dev3r   r   r   r   r   r    )r(   r)   r/   r   exists@py_builtinslocalsr2   _should_repr_global_namer4   r5   r6   r-   r0   r1   r3   )r9   r:   r;   r<   @py_assert1r?   rA   r=   r>   r@   rB   s              rF    test_set_bot_status_creates_filez1TestSetBotStatus.test_set_bot_status_creates_fileF   s   '$x/(:=PP0
+|4 '')')))))))) ))) )))'))))))))))zz+5578F|F#H-==-====-===-==========rH   c                    ddl m} |dz  dz  dz  }|j                  j                  d       dd	d
ddii}|j	                  t        j                  |             ||_        |j                  dd       t        j                  |j                               }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                   |      nddt        j                         v st        j                  |      rt        j                   |      nddz  }dd|iz  }t#        t        j$                  |            d}y)u   알 수 없는 팀은 무시r   Nr   r   r   Tr   r   r   r   r   r   zunknown-teamr   r   )z%(py0)s == %(py2)sr=   original_content)rO   rP   zassert %(py4)sr   )r(   r)   r*   r+   r,   r-   r.   r/   r   r0   r1   r2   r3   rS   rT   rU   r4   r5   r6   )	r9   r:   r;   r<   rY   r=   rV   @py_format3rA   s	            rF    test_set_bot_status_unknown_teamz1TestSetBotStatus.test_set_bot_status_unknown_teamS   s    '$x/(:=PP  &&t&4"VI_-`$ab$$TZZ0@%AB0
.,7 zz+5578'''''t'''''''t'''t''''''''''''''''''rH   c                     ddl m} |dz  dz  dz  }|j                  j                  d       |j	                  d       ||_        |j                  d	d
       y)u,   예외 발생 시 무시 (파일 손상 등)r   Nr   r   r   Tr   invalid json {r   r   )r(   r)   r*   r+   r,   r/   r   )r9   r:   r;   r<   s       rF   %test_set_bot_status_handles_exceptionz6TestSetBotStatus.test_set_bot_status_handles_exceptionc   s[    '$x/(:=PP  &&t&4$$%560 	+|4rH   N)	__name__
__module____qualname____doc__rG   rL   rW   r[   r^    rH   rF   r	   r	      s     $C4C.>( 5rH   r	   c                   (    e Zd ZdZd Zd Zd Zd Zy)TestGetBotStatusu   get_bot_status() 테스트c           	      .   ddl m} |dz  dz  dz  }|j                  j                  d       |j	                  t        j                  dd	d
ddii             ||_        |j                  d      }d}||u}|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                   |            dx}}|d   }	d
}
|	|
k(  }|slt        j                  d|fd|	|
f      t        j                  |	      t        j                  |
      dz  }dd|iz  }t        t        j                   |            dx}	x}}
y)u   봇 상태 조회 성공r   Nr   r   r   Tr   r   r   r   z2026-03-17T00:00:00Zr   r   )is not)z%(py0)s is not %(py3)sresultrO   r$   assert %(py5)sr%   r   r   r   r   r   r    r(   r)   r*   r+   r,   r-   r.   r/   r   r2   r3   rS   rT   rU   r4   r5   r6   )r9   r:   r;   r<   rh   r@   rV   @py_format4@py_format6r>   r?   rA   rB   s                rF   test_get_bot_status_existsz+TestGetBotStatus.test_get_bot_status_existst   s)   '$x/(:=PP  &&t&4$$JJ<BX Y	
  1"";/!!vT!!!!vT!!!!!!v!!!v!!!T!!!!!!!h/</<////<//////<///////rH   c                 $   ddl m} |dz  dz  dz  }|j                  j                  d       |j	                  t        j                  di i             ||_        |j                  d	      }d}||u }|st        j                  d
|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                   |            dx}}y)u   봇이 없으면 None 반환r   Nr   r   r   Tr   r   r   isz%(py0)s is %(py3)srh   ri   rj   r%   rk   	r9   r:   r;   r<   rh   r@   rV   rl   rm   s	            rF   test_get_bot_status_not_existsz/TestGetBotStatus.test_get_bot_status_not_exists   s    '$x/(:=PP  &&t&4$$TZZ%=>0"";/v~vvvrH   c                    ddl m} |dz  }||_        |j                  d      }d}||u }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      dz  }d	d
|iz  }t        t	        j                  |            dx}}y)u   파일이 없으면 None 반환r   Nznonexistent.jsonr   rp   rr   rh   ri   rj   r%   )r(   r)   r/   r   r2   r3   rS   rT   rU   r4   r5   r6   rs   s	            rF   #test_get_bot_status_file_not_existsz4TestGetBotStatus.test_get_bot_status_file_not_exists   s    '$'990"";/v~vvvrH   c                    ddl m} |dz  dz  dz  }|j                  j                  d       |j	                  d       ||_        |j                  d	      }d}||u }|st        j                  d
|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                  |            dx}}y)u   예외 발생 시 None 반환r   Nr   r   r   Tr   r]   r   rp   rr   rh   ri   rj   r%   )r(   r)   r*   r+   r,   r/   r   r2   r3   rS   rT   rU   r4   r5   r6   rs   s	            rF   %test_get_bot_status_handles_exceptionz6TestGetBotStatus.test_get_bot_status_handles_exception   s    '$x/(:=PP  &&t&4$$%560"";/v~vvvrH   N)r_   r`   ra   rb   rn   rt   rv   rx   rc   rH   rF   re   re   q   s    $0,rH   re   c                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestTeamToBotMappingu   TEAM_TO_BOT 매핑 테스트c                    t         d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            dx}x}}y)	u   dev1-team → dev1r   r   r   r   r   r   r    Nr   r2   r3   r4   r5   r6   r9   r>   r?   r@   rA   rB   s         rF   test_dev1_team_maps_to_dev1z0TestTeamToBotMapping.test_dev1_team_maps_to_dev1   T    ;'161'61111'6111'11161111111rH   c                    t         d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            dx}x}}y)	u   dev2-team → dev2rK   rJ   r   r   r   r   r    Nr|   r}   s         rF   test_dev2_team_maps_to_dev2z0TestTeamToBotMapping.test_dev2_team_maps_to_dev2   r   rH   c                    t         d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            dx}x}}y)	u   dev3-team → dev3rN   rQ   r   r   r   r   r    Nr|   r}   s         rF   test_dev3_team_maps_to_dev3z0TestTeamToBotMapping.test_dev3_team_maps_to_dev3   r   rH   c                    t         d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            dx}x}}y)	u   dev4-team → dev4z	dev4-teamdev4r   r   r   r   r    Nr|   r}   s         rF   test_dev4_team_maps_to_dev4z0TestTeamToBotMapping.test_dev4_team_maps_to_dev4   r   rH   c                    t         d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            dx}x}}y)	u   dev5-team → dev5z	dev5-teamdev5r   r   r   r   r    Nr|   r}   s         rF   test_dev5_team_maps_to_dev5z0TestTeamToBotMapping.test_dev5_team_maps_to_dev5   r   rH   c                    t         d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            dx}x}}y)	u   dev6-team → dev6z	dev6-teamdev6r   r   r   r   r    Nr|   r}   s         rF   test_dev6_team_maps_to_dev6z0TestTeamToBotMapping.test_dev6_team_maps_to_dev6   r   rH   c                    t         d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            dx}x}}y)	u   dev7-team → dev7z	dev7-teamdev7r   r   r   r   r    Nr|   r}   s         rF   test_dev7_team_maps_to_dev7z0TestTeamToBotMapping.test_dev7_team_maps_to_dev7   r   rH   c                    t         d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            dx}x}}y)	u   dev8-team → dev8z	dev8-teamdev8r   r   r   r   r    Nr|   r}   s         rF   test_dev8_team_maps_to_dev8z0TestTeamToBotMapping.test_dev8_team_maps_to_dev8   r   rH   N)r_   r`   ra   rb   r~   r   r   r   r   r   r   r   rc   rH   rF   rz   rz      s-    &22222222rH   rz   __main__z-v)rb   builtinsrS   _pytest.assertion.rewrite	assertionrewriter2   r-   systempfilepathlibr   unittest.mockr   pytestpathinsertstr__file__r*   r(   r   r   r   r	   re   rz   r_   mainrc   rH   rF   <module>r      s    /    
     3tH~,,33::; < J J\5 \5~; ;|!2 !2H zFKK4 ! rH   