
    J*i                     @    d Z ddlmZmZ dededefdZ G d d      Zy	)
u   finish-task.sh의 member-status.json 복원 로직 테스트.

finish-task.sh 내부 인라인 Python 로직을 함수로 추출하여 테스트.
    )datetimetimezonedatatask_idreturnc                 x   t        j                  t        j                        j	                  d      }d}| j                  di       j                         D ][  \  }}|j                  d      dv s|j                  dd      xs d}||v s|r|j                  d      dk(  sKd	|d<   ||d
<   d|d<   d}] |r|| d<   | S )u7   finish-task.sh L277~304 인라인 Python 로직 추출.z%Y-%m-%dT%H:%M:%SZFmembersstatus)workingstandbytask r   idlesinceNT
updated_at)r   nowr   utcstrftimegetitems)r   r   r   changed_info	task_descs          7/home/jay/workspace/tests/test_member_status_restore.pyrestore_member_statusr      s    
,,x||
$
-
-.B
CCG88Ir*002 488H!77,2I)#98Ji8W!'X #W#V  \K    c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestMemberStatusRestorec                     ddddddddddi}t        |d      }|d   d	   d
   dk(  sJ |d   d   d
   dk(  sJ |d   d	   d   J |d   d   d   J y)u/   시나리오 1: standby 팀원 → idle 복원.r	   r   2026-01-01T00:00:00ZNr
   r   r   z	some-info)member-1member-2	test-taskr#   r
   r   r$   r   r   selfr   results      r   %test_standby_members_restored_to_idlez=TestMemberStatusRestore.test_standby_members_restored_to_idle   s     '0;Q[_`'0;Q[fg
 't[9i ,X6&@@@i ,X6&@@@i ,V4<<<i ,V4<<<r   c                 P    ddddddii}t        |d      }|d   d   d   dk(  sJ y	)
u6   시나리오 2: working + 매칭 task → idle 복원.r	   workerr   r!   ztask-123r"   r
   r   Nr&   r'   s      r   /test_working_member_with_matching_task_restoredzGTestMemberStatusRestore.test_working_member_with_matching_task_restored(   sL     Y9OYcd

 'tZ8i *84>>>r   c                 p    ddddddii}t        |d      }|d   d   d   dk(  sJ |d   d   d	   dk(  sJ y
)u1   시나리오 3: working + 다른 task → 유지.r	   otherr   r!   z
OTHER-TASKr"   r%   r
   r   Nr&   r'   s      r   4test_working_member_with_non_matching_task_preservedzLTestMemberStatusRestore.test_working_member_with_non_matching_task_preserved2   si     I8NXde

 't[9i )(3y@@@i )&1\AAAr   c                 \    ddddddii}t        |d      }|d   d   d   dk(  sJ d	|vsJ y)
u   idle 팀원은 영향 없음.r	   idlerr   r!   Nr"   r%   r
   r   r&   r'   s      r   test_idle_member_not_affectedz5TestMemberStatusRestore.test_idle_member_not_affected=   sZ     F5KUYZ

 't[9i )(3v===6)))r   c                 P    ddddddii}t        |d      }|d   d   d   d	k(  sJ y
)u#   working + 빈 task → idle 복원.r	   r,   r   r!   r   r"   r%   r
   r   Nr&   r'   s      r   ,test_working_member_with_empty_task_restoredzDTestMemberStatusRestore.test_working_member_with_empty_task_restoredH   sL     Y9OY[\

 't[9i *84>>>r   c                     dddddddddddddd	dddd
i}t        |d      }|d   d   d   d	k(  sJ |d   d   d   d	k(  sJ |d   d   d   dk(  sJ |d   d   d   d	k(  sJ y)uE   혼합 상태: standby + working(매칭) + working(비매칭) + idle.r	   r   r!   Nr"   r   ztask-abcOTHERr   )	standby-mworking-matchworking-otheridle-mr8   r
   r9   r:   r;   r&   r'   s      r   test_mixed_statusesz+TestMemberStatusRestore.test_mixed_statusesR   s     (1<R\`a,5@V`j!k,5@V`g!h%+6LVZ[	
 'tZ8i -h76AAAi 1(;vEEEi 1(;yHHHi *84>>>r   N)	__name__
__module____qualname__r*   r-   r0   r3   r5   r<    r   r   r   r      s!    =?	B	*??r   r   N)__doc__r   r   dictstrr   r   r@   r   r   <module>rD      s5    ( s t "G? G?r   