
    i              
          d Z ddlZddlZddlmZ ddlmZ ddlmZ ej                  j                  d e
 ed                   d Zd Zd	 Zd
 Zd Zd Zedk(  rceeeeeegZdZdZeD ]  Z	  e        edz  Z  edd         ede de d ee       d       edkD  r ej4                  d        ed       yy# e$ r'Z edej"                   de        edz  ZY dZ[}dZ[ww xY w)u;   
task-194.1 대시보드 상태 불일치 수정 테스트
    N)datetime)Path)patchz/home/jay/workspace/dashboardc                  j   ddl m}   | t        d            }ddddddd	ddd
i|_        dddt	        j
                         j                         dgi}dddd}|j                  |d|d      }|dk(  s
J d|        dddd}|j                  |d|d      }|dk(  s
J d|        t        d       y)uh   member-status.json이 idle이고 team에 running task가 있을 때 팀장은 working, 팀원은 standbyr   
DataLoader/home/jay/workspacemembersidle2026-03-03T03:17:48ZNstatussincetaskz2026-03-03T07:36:40Z)hermesvulcan	dev1-team
task-194.1testtask_iddescription
start_timer      헤르메스idnamer   Tis_leadworkingu%   팀장은 working이어야 함, got: r   u   불칸Fstandbyu%   팀원은 standby이어야 함, got: u8   ✅ test_get_member_status_idle_with_running_task PASSED	serverr   r   member_status_datar   now	isoformatget_member_statusprint)r   loaderrunning_taskslead_memberresultmembers         1/home/jay/workspace/teams/dev1/test_task_194_1.py-test_get_member_status_idle_with_running_taskr/      s    !234F 	!'2HRVW!'2HRVW
!F 	,vU]UaUaUcUmUmUopqM
 ">VLK%%k;W[%\FYP"Gx PP h&AF%%fk=RW%XFYP"Gx PP	
DE    c                      ddl m}   | t        d            }dddddd	ii|_        i }dd
dd}|j	                  |d|d      }|dk(  s
J d|        t        d       y)uC   member-status.json이 idle이고 running task 없으면 idle 유지r   r   r	   r
   r   r   r   Nr   r   r   r   Tr   u/   running task 없으면 idle이어야 함, got: u;   ✅ test_get_member_status_idle_without_running_task PASSED)r#   r   r   r$   r'   r(   r   r)   r*   r+   r,   s        r.   0test_get_member_status_idle_without_running_taskr3   *   s    !234F 	2HRVW
!F M!>VLK%%k;W[%\FVWNvhWW	
GHr0   c                     ddl m}   | t        d            }dddddd	ii|_        d
ddt	        j
                         j                         dgi}dddd}|j                  |d
|d      }|dk(  s
J d|        t        d       y)u3   break 상태는 running task와 무관하게 유지r   r   r	   r
   r   breakr   Nr   r   r   r   r   r   r   r   Tr   u#   break은 유지되어야 함, got: u1   ✅ test_get_member_status_break_preserved PASSEDr"   r2   s        r.   &test_get_member_status_break_preservedr6   =   s    !234F 	3ISWX
!F 	,vU]UaUaUcUmUmUopqM ">VLK%%k;W[%\FWL CF8LL	
=>r0   c                      ddl m}   | t        d            }dddt        j                         j                         ddii|_        i }dd	d
d}|j                  |d|d      }|dk(  s
J d|        t        d       y)u   working 상태는 유지r   r   r	   r
   r   r    z	some taskr   r   r   r   r   Tr   u/   명시적 working은 유지되어야 함, got: u3   ✅ test_get_member_status_working_preserved PASSEDN)	r#   r   r   r   r%   r&   r$   r'   r(   r2   s        r.   (test_get_member_status_working_preservedr8   T   s    !234F 	X\\^5M5M5OYde
!F M!>VLK%%k;W[%\FYZ"QRXQY ZZ	
?@r0   c                  L   ddl m}   | t        d            }|j                  d       |j	                         }|j                         }t        d |j                         D              }|dkD  r+|d   dkD  sJ d| d|        t        d	| d
|d    d       yt        d       y)u@   running task가 있으면 stats.working이 0이 아니어야 함r   r   r	   max_age_secondsc              3   2   K   | ]  }t        |        y w)N)len).0vs     r.   	<genexpr>z9test_get_team_stats_with_running_tasks.<locals>.<genexpr>r   s     A1AAs   r    zrunning task u!   건인데 working이 0임! stats=u;   ✅ test_get_team_stats_with_running_tasks PASSED (running=z
, working=)uH   ⚠️ test_get_team_stats_with_running_tasks SKIPPED (no running tasks)N)	r#   r   r   
reload_allget_team_statsget_running_tasks_by_teamsumvaluesr(   )r   r)   statsrunning_by_teamrunning_counts        r.   &test_get_team_stats_with_running_tasksrJ   g   s    !234F a(!!#E668OA(>(>(@AAMqY!#l}]OCdejdk%ll#KM?ZdejkteudvvwxyXZr0   c            
      X   ddl m}   | t        d            }|j                  d       |j	                         }|j                         }|D ]  }|j                  d      }t        |j                  |            }|j                  dg       D ]  }t        |t              sd|v s|d   }t        |j                  |            }	|j                  d      }
|
sL|	sO|
j                  d	      d
k(  rdJ | d|
j                  d       d|
j                  d	                t        d       y)u;   팀별 running task와 멤버 상태가 일관성 있는지r   r   r	   r:   team_idr
   sub_team_idleadr   r    u    팀장 r   u   은 working이어야 함, got: u4   ✅ test_consistency_running_vs_member_status PASSEDN)r#   r   r   rB   rD   get_teams_infogetbool
isinstancedictr(   )r   r)   rH   
teams_infoteamrL   has_runningsubrM   sub_has_runningrN   s              r.   )test_consistency_running_vs_member_statusrY   z   s-   !234F
a(668O&&(J t((9%?..w78 88Ir* 	tC#t$#)=!-0"&':':;'G"HwwvO88H-: t&-x/??^_c_g_ghp_q^rst:	tt 

@Ar0   __main__   u   ❌ z	 FAILED: 
z2==================================================u   결과: z	 passed, z
 failed / z totalu   모든 테스트 통과!)__doc__sysjsonr   pathlibr   unittest.mockr   pathinsertstrr/   r3   r6   r8   rJ   rY   __name__testspassedfailedr   	Exceptioner(   r=   exit r0   r.   <module>rm      s5        3t;<= >F:I&?.A&[&B2 z58.0.1E FF 	FaKF 
Bvh-	HVHIfXZE
|6
JKz	
$%1    	Dy45aKF	s   .C  C,C''C,