
    ;ia                        d Z ddlZddlmc mZ ddlZddlm	Z	 ddl
Z
ej                  j                  d e e	e      j                         j                   j                                 e
j"                  d      d        Z G d d      Zy)	uA   dispatch.py의 agent-meeting 체크 함수 테스트 (task-2082).    N)PathT)autousec                 f    ddl }|j                  |d|        | dz  dz  j                  dd       | S )u   WORKSPACE를 tmp_path로 모킹r   N	WORKSPACEmemorymeetingsT)parentsexist_ok)dispatchsetattrmkdir)tmp_pathmonkeypatchr   s      8/home/jay/workspace/tests/test_dispatch_meeting_check.pymock_workspacer      s;     +x8:%,,TD,IO    c                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
TestCheckAgentMeetingu   _check_agent_meeting 테스트c                    ddl m}  |dd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}||v }|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}}d}||v }|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)uJ   시나리오 1: --level critical + Lv.4 + 미팅 파일 없음 → WARNINGr   _check_agent_meeting	task-9999u0   # task-9999: Lv.4 테스트
## 레벨
- criticalcriticalNis notz%(py0)s is not %(py3)sresultpy0py3assert %(py5)spy5u*   Agent 미팅 결과 파일이 없습니다inz%(py1)s in %(py3)spy1r    z--skip-meeting
r   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)	selfr   r   r   @py_assert2@py_assert1@py_format4@py_format6@py_assert0s	            r   (test_lv4_no_meeting_file_returns_warningz>TestCheckAgentMeeting.test_lv4_no_meeting_file_returns_warning   s&   1%k3gist!!vT!!!!vT!!!!!!v!!!v!!!T!!!!!!!;E;vEEEE;vEEE;EEEEEEvEEEvEEEEEEE)6))))6)))))))))6)))6)))))))r   c                 r   ddl m}  |ddd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?   시나리오 2: --skip-meeting 사용 시 WARNING 없이 통과r   r   r      Lv.4 작업r   T)skip_meetingNisz%(py0)s is %(py3)sr   r   r!   r"   r(   r1   r   r   r   r2   r3   r4   r5   s           r   test_skip_meeting_returns_nonez4TestCheckAgentMeeting.test_skip_meeting_returns_none    sn    1%k=*[_`v~vvvr   c                    ddl m} |dz  dz  dz  }|j                  dd        |d	d
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)uJ   시나리오 3: 미팅 파일 있고 만장일치 포함 → 정상 통과r   r   r   r   agent-meeting-task-9999.mdu,   # 미팅 결과
결론: 만장일치 합의
utf-8encodingr      # Lv.4 테스트r   Nr;   r=   r   r   r!   r"   r   r   
write_textr)   r*   r+   r,   r-   r.   r/   r0   	r1   r   r   meeting_filer   r2   r3   r4   r5   s	            r   'test_meeting_file_with_unanimous_passesz=TestCheckAgentMeeting.test_meeting_file_with_unanimous_passes&   s    1%0:=@\\ P[bc%k3EzRv~vvvr   c                 n   ddl m}  |dd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)u3   시나리오 4: Lv.1-2 dispatch에는 영향 없음r   r   r   r9   normalNr;   r=   r   r   r!   r"   r(   r>   s           r   test_lv1_dispatch_no_checkz0TestCheckAgentMeeting.test_lv1_dispatch_no_check.   sk    1%k=(Kv~vvvr   c                    ddl m} |dz  dz  dz  }|j                  dd        |d	d
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}	|	|v }|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)uQ   시나리오 5: 미팅 파일 있지만 만장일치 키워드 없음 → WARNINGr   r   r   r   rA   u)   # 미팅 결과
결론: 다수결 합의
rB   rC   r   rE   r   Nr   r   r   r   r!   r"   u0   만장일치 합의가 확인되지 않습니다r#   r%   r&   rF   )
r1   r   r   rI   r   r2   r3   r4   r5   r6   s
             r   3test_meeting_file_without_unanimous_returns_warningzITestCheckAgentMeeting.test_meeting_file_without_unanimous_returns_warning4   s    1%0:=@\\ MX_`%k3EzR!!vT!!!!vT!!!!!!v!!!v!!!T!!!!!!!AKAVKKKKAVKKKAKKKKKKVKKKVKKKKKKKr   c                    ddl m} |dz  dz  dz  }|j                  dd        |d	d
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)uB   시나리오 6: 미팅 파일에 '만장일치 실패' → WARNINGr   r   r   r   rA   u,   # 미팅 결과
결론: 만장일치 실패
rB   rC   r   rE   r   Nr   r   r   r   r!   r"   rF   rH   s	            r   9test_meeting_file_with_negative_unanimous_returns_warningzOTestCheckAgentMeeting.test_meeting_file_with_negative_unanimous_returns_warning=   s    1%0:=@\\ P[bc%k3EzR!!vT!!!!vT!!!!!!v!!!v!!!T!!!!!!!r   c                 n   ddl m}  |dd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)uY   시나리오 7: level=critical이지만 task_desc에 Lv.4 패턴 없음 → 체크 안함r   r   r   u   # Lv.3 작업r   Nr;   r=   r   r   r!   r"   r(   r>   s           r   test_no_lv4_pattern_no_checkz2TestCheckAgentMeeting.test_no_lv4_pattern_no_checkE   sk    1%k?JOv~vvvr   N)__name__
__module____qualname____doc__r7   r?   rJ   rM   rO   rQ   rS    r   r   r   r      s)    (*L"r   r   )rW   builtinsr+   _pytest.assertion.rewrite	assertionrewriter)   syspathlibr   pytestpathinsertstr__file__resolveparentfixturer   r   rX   r   r   <module>rg      sp    G   
   3tH~--/66==> ?  4 4r   