
    i>                         d Z ddlZddlZddlmZ ddlZ eej                  j                  dd            Zej                  j                  edz  j                          d       G d	 d
             Zy)u   task-1096.1: org-details dev*-team.json 구조 검증 테스트

dev1~4-team.json 파일이 올바른 구조로 생성되었는지 검증합니다.
    N)PathWORKSPACE_ROOTz/home/jay/workspacez!memory/org-details/dev1-team.jsonu8   org-details/dev*-team.json 파일이 존재하지 않음)reasonc                       e Zd ZdZej
                  deeef   fd       Z	deeef   ddfdZ
deeef   ddfdZdeeef   ddfdZdeeef   ddfd	Zdeeef   ddfd
Zdeeef   ddfdZy)TestDevTeamDetailFilesu0   org-details dev*-team.json 파일 구조 검증.returnc                 :    t         dz  }|dz  |dz  |dz  |dz  dS )u   팀 설정 파일 경로.zmemory/org-detailszdev1-team.jsonzdev2-team.jsonzdev3-team.jsonzdev4-team.jsonz	dev1-teamz	dev2-teamz	dev3-teamz	dev4-team)
_WORKSPACE)self	base_paths     S/home/jay/workspace/.worktrees/task-2116-dev1/tests/test_task_1096_1_org_details.py
team_filesz!TestDevTeamDetailFiles.team_files   s=     !55	"%55"%55"%55"%55	
 	
    r   Nc                 l    |j                         D ]!  \  }}|j                         rJ | d|         y)u-   모든 팀 설정 파일이 존재해야 함.u    파일 없음: N)itemsexists)r   r   	team_namefilepaths       r   test_all_team_files_existz0TestDevTeamDetailFiles.test_all_team_files_exist!   sB    #-#3#3#5 	OIx??$N3CH:&NN$	Or   c                    |j                         D ]1  \  }}	 t        |d      5 }t        j                  |       ddd       3 y# 1 sw Y   xY w# t        j                  $ r$}t        j                  | d|        Y d}~sd}~ww xY w)u-   모든 파일이 유효한 JSON이어야 함.utf-8encodingNu    JSON 파싱 실패: )r   openjsonloadJSONDecodeErrorpytestfail)r   r   r   r   fes         r   test_files_are_valid_jsonz0TestDevTeamDetailFiles.test_files_are_valid_json&   s    #-#3#3#5 	DIxD(W5 !IIaL!	D! !'' Dyk)>qcBCCDs-   AAAA	AB	%BB	c                     g d}|j                         D ]G  \  }}t        |d      5 }t        j                  |      }ddd       |D ]  }|v rJ | d|         I y# 1 sw Y   #xY w)u-   각 파일에 필수 필드가 있어야 함.)team_idr   extracted_fromstatustypeleadmembers_detailr   r   Nu   에 필수 필드 없음: r   r   r   r   )r   r   required_fieldsr   r   r!   datafields           r   test_has_required_fieldsz/TestDevTeamDetailFiles.test_has_required_fields/   s    
 $.#3#3#5 	VIxh1 $Qyy|$( V}U3MeW&UU}V	V$ $s   A  A)	c                     |j                         D ]G  \  }}t        |d      5 }t        j                  |      }ddd       d   |k(  r:J | d|d            y# 1 sw Y   #xY w)u7   각 파일의 team_id가 파일명과 일치해야 함.r   r   Nr%   u.    파일의 team_id가 파일명과 불일치: r+   )r   r   r   r   r!   r-   s         r   test_team_ids_match_filenamez3TestDevTeamDetailFiles.test_team_ids_match_filename@   sz    #-#3#3#5 	Ixh1 $Qyy|$	?i/~I;>lmqr{m|l}1~~/	$ $s   AA%	c                     ddddd}|j                         D ]Q  \  }}t        |d      5 }t        j                  |      }ddd       d	   d
   }||   }||k(  rDJ | d| d|         y# 1 sw Y   -xY w)u9   각 팀 리드의 id가 올바르게 설정되어야 함.hermesodindagdavishnur
   r   r   Nr)   idu-   의 lead.id가 올바르지 않음: expected=z	, actual=r+   )	r   r   expected_leadsr   r   r!   r-   actual_lead_idexpected_lead_ids	            r   test_leads_are_correctz-TestDevTeamDetailFiles.test_leads_are_correctG   s     " !	
 $.#3#3#5 	Ixh1 $Qyy|$!&\$/N-i8!%55 +NO_N``ijxiyz5	$ $s   A--A6	c                     |j                         D ]M  \  }}t        |d      5 }t        j                  |      }ddd       d   }t	        |      dk\  rEJ | d        y# 1 sw Y   )xY w)u@   members_detail에 최소 1개 이상의 멤버가 있어야 함.r   r   Nr*      u"   의 members_detail이 비어있음)r   r   r   r   len)r   r   r   r   r!   r-   memberss          r   test_members_detail_not_emptyz4TestDevTeamDetailFiles.test_members_detail_not_emptyX   sy    #-#3#3#5 	WIxh1 $Qyy|$+,Gw<1$V3U&VV$		W$ $s   A""A+	)__name__
__module____qualname____doc__r   fixturedictstrr   r   r   r#   r/   r1   r;   r@    r   r   r   r      s    
 ;^^
DdO 
 
ODdO O O
DDdO D DV4T	? Vt V"tCI 4 c4i T "WS$Y WD Wr   r   )rD   r   ospathlibr   r   environgetr   markskipifr   r   rH   r   r   <module>rO      s~   
  	  "**..!13HIJ
 	9	9AACCE  KW KW	KWr   