
    is                         d Z ddlZddlZddlZddlZddlmZ ddlZdej                  fdZ	 ej                         defd       Z ej                         d        Z G d d	      Zy)
un  
test_dispatch_brainstorming_gate.py

dispatch._check_brainstorming_gate() 단위 테스트 (닌기르수 작성)

테스트 항목:
- UX 키워드 + Lv.3+ + brainstorming 파일 없음 → warning 로그
- skip_brainstorming 플래그로 스킵
- 비UX 키워드는 체크 안 함
- Lv.1(normal)은 체크 안 함
- brainstorming 파일이 있으면 warning 없음
    N)Pathreturnc                  n   t        t        j                  j                  dd            } t	        |       t
        j                  vr)t
        j                  j                  dt	        |              t        t
        j                  j                               D ]  }|dk(  s	t
        j                  |=  ddl}|S )u@   dispatch 모듈을 sys.modules에서 캐시 없이 로드한다.WORKSPACE_ROOTz/home/jay/workspacer   dispatchN)r   osenvirongetstrsyspathinsertlistmoduleskeysr   )	workspacemod_name	_dispatchs      W/home/jay/workspace/.worktrees/task-2116-dev1/tests/test_dispatch_brainstorming_gate.py_get_dispatch_moduler      s    RZZ^^$46KLMI
9~SXX%3y>*))+, &z!H%& !    c                 6    | dz  }|j                  dd       |S )uA   테스트용 memory 디렉토리 (실제 파일 시스템 격리)memoryTparentsexist_ok)mkdir)tmp_pathds     r   
memory_dirr    /   s#     	8AGGD4G(Hr   c                 4    t               }t        |d|        |S )u<   _MEMORY_BASE_PATH가 memory_dir로 교체된 dispatch 모듈_MEMORY_BASE_PATH)r   setattr)r    mods     r   dispatch_modr%   7   s     
 CC$j1Jr   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)TestCheckBrainstormingGateu)   _check_brainstorming_gate() 동작 검증c                    |dz  }|j                  dd       |j                  t        j                  d      5  |j	                  ddd       d	d	d	       |j
                  D cg c]/  }|j                  t        j                  k\  rd
|j                  v r|1 }}t        |      dk\  sJ d       y	# 1 sw Y   cxY wc c}w )um   UX 키워드 + Lv.3 + brainstorming 파일 없음 → warning 로그 1개 이상 (brainstorming-gate 포함).meetingsTr   r   loggerz	task-9001   UX 개선 작업criticalNzbrainstorming-gate   uB   UX 키워드 + Lv.3 + 파일 없음인데 warning 로그가 없음)
r   at_levelloggingDEBUG_check_brainstorming_gaterecordslevelnoWARNINGmessagelen)selfr%   r    caplogmeetings_dirrwarning_recordss          r   &test_ux_keyword_critical_no_file_warnszATestCheckBrainstormingGate.test_ux_keyword_critical_no_file_warnsH   s     "J.4$7__W]]:_> 	`22;@RT^_	` ~~
yyGOO+0D		0Q 
 
 ?#q(n*nn(	` 	`
s   B0$4B<0B9c                 <   |j                  t        j                  d      5  |j                  dddd       ddd       |j                  D cg c]"  }|j
                  t        j                  k\  s!|$ }}t        |      d	k(  sJ d
       y# 1 sw Y   VxY wc c}w )uH   skip_brainstorming=True이면 warning 로그 없이 즉시 반환한다.r   r*   z	task-9002r,   r-   T)skip_brainstormingNr   u@   --skip-brainstorming 플래그인데 warning 로그가 발생함r/   r0   r1   r2   r3   r4   r5   r7   r8   r%   r9   r;   r<   s        r   'test_skip_brainstorming_flag_no_warningzBTestCheckBrainstormingGate.test_skip_brainstorming_flag_no_warningX   s    __W]]:_> 	22/PT 3 	
 '-nnU		W__8T1UU?#q(l*ll(	 	
 Vs   B"B1BBc                 8   |j                  t        j                  d      5  |j                  ddd       ddd       |j                  D cg c]"  }|j
                  t        j                  k\  s!|$ }}t        |      dk(  sJ d       y# 1 sw Y   VxY wc c}w )	uW   비UX 키워드 + Lv.3 → brainstorming 체크를 하지 않아 warning 로그 없음.r   r*   z	task-9003u   CI 파이프라인 수정r-   Nr   u1   비UX 키워드인데 warning 로그가 발생함r@   rA   s        r   'test_non_ux_keyword_critical_no_warningzBTestCheckBrainstormingGate.test_non_ux_keyword_critical_no_warningc   s    __W]]:_> 	i22;@[]gh	i '-nnU		W__8T1UU?#q(]*]](		i 	i V   B"B/BBc                 8   |j                  t        j                  d      5  |j                  ddd       ddd       |j                  D cg c]"  }|j
                  t        j                  k\  s!|$ }}t        |      dk(  sJ d       y# 1 sw Y   VxY wc c}w )	uY   level='normal'(Lv.2)이면 Lv.3 미만이므로 brainstorming 체크를 하지 않는다.r   r*   z	task-9004u   UI 버그 수정normalNr   u4   normal level(Lv.2)인데 warning 로그가 발생함r@   rA   s        r   test_normal_level_no_warningz7TestCheckBrainstormingGate.test_normal_level_no_warningl   s    __W]]:_> 	^22;@RT\]	^ '-nnU		W__8T1UU?#q(`*``(		^ 	^ VrE   c                 B   |dz  }|j                  dd       |dz  }|j                  dd       |j                  t        j                  d	      5  |j                  d
dd       ddd       |j                  D cg c]"  }|j                  t        j                  k\  s!|$ }}t        |      dk(  sJ d       |j                  D cg c]"  }|j                  t        j                  k(  s!|$ }}t        d |D              sJ d       y# 1 sw Y   xY wc c}w c c}w )u^   brainstorming 파일이 존재하면 warning 없음, info 로그에 '파일 확인됨' 포함.r)   Tr   zbrainstorming-task-9005.mdu>   # 브레인스토밍 결과
- 아이디어 1
- 아이디어 2
zutf-8)encodingr   r*   z	task-9005u   화면 레이아웃 변경r-   Nr   u=   brainstorming 파일이 있는데 warning 로그가 발생함c              3   8   K   | ]  }d |j                   v   yw)u   brainstorming 파일 확인됨N)r6   ).0r;   s     r   	<genexpr>z]TestCheckBrainstormingGate.test_ux_keyword_critical_file_exists_no_warning.<locals>.<genexpr>   s     WQ3qyy@Ws   uU   brainstorming 파일 존재 시 info 로그에 '파일 확인됨' 메시지가 없음)r   
write_textr/   r0   r1   r2   r3   r4   r5   r7   INFOany)	r8   r%   r    r9   r:   brainstorming_filer;   r<   info_recordss	            r   /test_ux_keyword_critical_file_exists_no_warningzJTestCheckBrainstormingGate.test_ux_keyword_critical_file_exists_no_warningu   s   !J.4$7),HH%%&it{%|__W]]:_> 	j22;@\^hi	j '-nnU		W__8T1UU?#q(i*ii(#)>>OaQYY',,5NOOW,WW 	dc	dW	j 	j V Ps$   D<"DD"D+DDN)	__name__
__module____qualname____doc__r=   rB   rD   rH   rS    r   r   r'   r'   D   s#    3o m^adr   r'   )rW   r0   r   r   typespathlibr   pytest
ModuleTyper   fixturer    r%   r'   rX   r   r   <module>r^      s     	 
   e.. ( D    @d @dr   