
    "i                         d Z ddlZddlmc m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    5/home/jay/workspace/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(  }|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}}t        j                  t        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   }	d}|	|u }
|
slt        j                  d|
fd|	|f      t        j                  |	      t        j                  |      dz  }dd|iz  }t!        t        j"                  |            dx}	x}
}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   ==z2%(py2)s
{%(py2)s = %(py0)s.returncode
} == %(py5)sresultpy0py2py5assert %(py7)spy7Nr   idlez%(py1)s == %(py4)spy1py4assert %(py6)spy6r   isz%(py1)s is %(py4)sjsonloadsr   r   r	   dumps
subprocessrunstr
returncode
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationselfdatar%   @py_assert1@py_assert4@py_assert3@py_format6@py_format8restored@py_assert0@py_assert2@py_format5@py_format7s                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% A%%%% A%%%%%%v%%%v%%% %%%A%%%%%%%::k3356	"6*84>>4>>>>4>>>4>>>>>>>>>>	"6*62:d:2d::::2d:::2:::d:::::::    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(  }|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}}t        j                  t        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   }	d}|	|u }
|
slt        j                  d|
fd|	|f      t        j                  |	      t        j                  |      dz  }dd|iz  }t!        t        j"                  |            dx}	x}
}y) u?   task가 빈 문자열인 working 멤버도 idle로 복원된다r   r    r   r   freyar   Fr   r   r   r   Tr   r   r"   r$   r%   r&   r*   r+   Nr   r,   r-   r.   r1   r2   r   r3   r5   r6   rF   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% A%%%% A%%%%%%v%%%v%%% %%%A%%%%%%%::k3356	"7+H5??5????5???5??????????	"7+F3;t;3t;;;;3t;;;3;;;t;;;;;;;rT   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(  }|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}}t        j                  t        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   }
|
|k(  }|st        j                  d|fd|
|f      t        j                  |
      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                   |            dx}
}y)u/   이미 idle인 멤버는 변경되지 않는다r   odinr   z2026-04-17T01:10:58Zr   r   r   Tr   r   r"   r$   r%   r&   r*   r+   Nr   r,   r-   r.   r1   r2   )z%(py1)s == %(py3)soriginal_since)r/   py3zassert %(py5)sr)   )r7   r8   r   r   getr:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   )rG   rH   r[   r%   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   @py_format4s                  r   test_idle_member_unchangedz0TestMemberIdleRestore.test_idle_member_unchangedx   s   zz+//12i,,VR8<<WF\]4. 
+/6  ;
>   %A% A%%%% A%%%%%%v%%%v%%% %%%A%%%%%%%::k3356	"6*84>>4>>>>4>>>4>>>>>>>>>>	"6*73E3~EEEE3~EEE3EEEEEE~EEE~EEEEEEErT   N)__name__
__module____qualname____doc__rS   rX   r_    rT   r   r   r      s    ?.;`-<^(FrT   r   )rc   builtinsr@   _pytest.assertion.rewrite	assertionrewriter>   r7   r:   pathlibr   pytest	WORKSPACEr   fixturer   markusefixturesr   rd   rT   r   <module>ro      s    M       &'	("X-0DD # # )JF JF *JFrT   