
    (<i                         d Z ddlZddlZddlmZ ddlZ ed      Zedz  dz  dz  Zej                  d        Z	ej                  j                  d	       G d
 d             Zy)uG   task-2054: finish-task.sh의 member-status idle 복원 로직 테스트    N)Pathz/home/jay/workspacememoryeventszmember-status.jsonc               #   f   K   t         j                         } d t         j                  |        yw)u$   member-status.json 백업 및 복원N)STATUS_FILE	read_text
write_text)backups    O/home/jay/workspace/.worktrees/task-2057-dev2/tests/test_member_idle_restore.pybackup_statusr      s'      ""$F	6"s   /1r   c                   "    e Zd ZdZd Zd Zd Zy)TestMemberIdleRestoreu5   finish-task.sh의 idle 복원 로직 단위 테스트c                    t        j                  t        j                               }dddd|d   d<   t        j	                  t        j
                  |dd	             t        j                  d
ddt        t              z  gdd      }|j                  dk(  sJ t        j                  t        j                               }|d   d   d   dk(  sJ |d   d   d   J y)u-   working 상태 멤버가 idle로 복원된다working2026-04-21T00:00:00Zu    task-2054-test: 테스트 작업statussincetaskmembersthor   Findentensure_asciipython3-c  
import json
from datetime import datetime, timezone
status_file = '%s'
try:
    with open(status_file) as f:
        data = json.load(f)
    now = datetime.now(timezone.utc).strftime('%%Y-%%m-%%dT%%H:%%M:%%SZ')
    changed = False
    for name, info in data.get('members', {}).items():
        if info.get('status') == 'working':
            task_desc = info.get('task', '') or ''
            if 'task-2054-test' in task_desc or not task_desc:
                info['status'] = 'idle'
                info['since'] = now
                info['task'] = None
                changed = True
    if changed:
        data['updated_at'] = now
        with open(status_file, 'w') as f:
            json.dump(data, f, indent=2, ensure_ascii=False)
except Exception as e:
    pass
Tcapture_outputtextr   r   idler   N
jsonloadsr   r   r	   dumps
subprocessrunstr
returncodeselfdataresultrestoreds       r   $test_working_member_restored_to_idlez:TestMemberIdleRestore.test_working_member_restored_to_idle   s    zz+//12+6#
Y
 	tzz$quMN 4. 
+/6  ;
>   A%%%::k3356	"6*84>>>	"6*62:::    c                    t        j                  t        j                               }dddd|d   d<   t        j	                  t        j
                  |dd	             t        j                  d
ddt        t              z  gdd      }|j                  dk(  sJ t        j                  t        j                               }|d   d   d   dk(  sJ |d   d   d   J y)u?   task가 빈 문자열인 working 멤버도 idle로 복원된다r   r    r   r   freyar   Fr   r   r   r   Tr   r   r   r"   r   Nr#   r+   s       r   'test_empty_task_working_member_restoredz=TestMemberIdleRestore.test_empty_task_working_member_restoredI   s    zz+//12+$
Y 
 	tzz$quMN4. 
+/6  ;
>   A%%%::k3356	"7+H5???	"7+F3;;;r1   c                    t        j                  t        j                               }|d   j	                  di       j	                  dd      }t        j                  dddt        t              z  gdd	      }|j                  d
k(  sJ t        j                  t        j                               }|d   d   d   dk(  sJ |d   d   d   |k(  sJ y)u/   이미 idle인 멤버는 변경되지 않는다r   odinr   z2026-04-17T01:10:58Zr   r   r   Tr   r   r   r"   N)	r$   r%   r   r   getr'   r(   r)   r*   )r,   r-   original_sincer.   r/   s        r   test_idle_member_unchangedz0TestMemberIdleRestore.test_idle_member_unchangedx   s    zz+//12i,,VR8<<WF\]4. 
+/6  ;
>   A%%%::k3356	"6*84>>>	"6*73~EEEr1   N)__name__
__module____qualname____doc__r0   r5   r:    r1   r   r   r      s    ?.;`-<^(Fr1   r   )r>   r$   r'   pathlibr   pytest	WORKSPACEr   fixturer   markusefixturesr   r?   r1   r   <module>rF      s|    M     &'	("X-0DD # # )JF JF *JFr1   