
    ;i                          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                   e	d      j                          d       G d d             Zy)	u   task-1096.1: org-details dev*-team.json 구조 검증 테스트

dev1~4-team.json 파일이 올바른 구조로 생성되었는지 검증합니다.
    NPathz5/home/jay/workspace/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      }|dz  |dz  |dz  |dz  dS )u   팀 설정 파일 경로.z&/home/jay/workspace/memory/org-detailszdev1-team.jsonzdev2-team.jsonzdev3-team.jsonzdev4-team.jsonz	dev1-teamz	dev2-teamz	dev3-teamz	dev4-teamr   )self	base_paths     =/home/jay/workspace/tests/test_task_1096_1_report_template.py
team_filesz!TestDevTeamDetailFiles.team_files   s=     AB	"%55"%55"%55"%55	
 	
    r   Nc                    |j                         D ]  \  }}|j                  } |       }|st        j                  | d|       dz   dt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }t        t        j                  |            dx}} y)u-   모든 팀 설정 파일이 존재해야 함.u    파일 없음: zC
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}filepath)py0py2py4N)
itemsexists
@pytest_ar_format_assertmsg@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)r   r   	team_namer   @py_assert1@py_assert3@py_format5s          r   test_all_team_files_existz0TestDevTeamDetailFiles.test_all_team_files_exist   s    #-#3#3#5 	OIx??N?$N$NN3CH:&NNNNNNN8NNN8NNN?NNN$NNNN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 ]!  \  }}t        |d      5 }t        j                  |      }ddd       |D ]  }|v }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      nddt        j                         v st	        j                  |      rt	        j                  |      ndd	z  }	t	        j                  | d
|       dz   d|	iz  }
t        t	        j                  |
            d} $ y# 1 sw Y   xY w)u-   각 파일에 필수 필드가 있어야 함.)team_idr   extracted_fromstatustypeleadmembers_detailr%   r&   N)in)z%(py0)s in %(py2)sfielddatar   r   u   에 필수 필드 없음: 
>assert %(py4)sr   r   r(   r)   r*   r   _call_reprcomparer   r   r   r   r   r   r   )r   r   required_fieldsr   r   r.   r:   r9   r    @py_format3r"   s              r   test_has_required_fieldsz/TestDevTeamDetailFiles.test_has_required_fields,   s    
 $.#3#3#5 	VIxh1 $Qyy|$( V}UUUuUUUUUUuUUUuUUUUUUUUUUUUU3MeW&UUUUUUUV	V$ $s   D;;E	c                 0   |j                         D ]  \  }}t        |d      5 }t        j                  |      }d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  }t	        j                  | d	|d          d
z   d|iz  }	t        t	        j                  |	            dx}} y# 1 sw Y   xY w)u7   각 파일의 team_id가 파일명과 일치해야 함.r%   r&   Nr2   ==)z%(py1)s == %(py3)sr   )py1py3u.    파일의 team_id가 파일명과 불일치: z
>assert %(py5)spy5)r   r(   r)   r*   r   r>   r   r   r   r   r   r   r   )
r   r   r   r   r.   r:   @py_assert0@py_assert2@py_format4@py_format6s
             r   test_team_ids_match_filenamez3TestDevTeamDetailFiles.test_team_ids_match_filename=   s    #-#3#3#5 	Ixh1 $Qyy|$	?~?i/~~~?i~~~?~~~~~~i~~~i~~~~I;>lmqr{m|l}1~~~~~~~	$ $s   DD	c                    ddddd}|j                         D ]+  \  }}t        |d      5 }t        j                  |      }ddd       d	   d
   }||   }||k(  }	|	st	        j
                  d|	fd||f      dt        j                         v st	        j                  |      rt	        j                  |      nddt        j                         v st	        j                  |      rt	        j                  |      nddz  }
t	        j                  | d| d|       dz   d|
iz  }t        t	        j                  |            d}	. y# 1 sw Y   xY w)u9   각 팀 리드의 id가 올바르게 설정되어야 함.hermesodindagdavishnur
   r%   r&   Nr6   idrC   )z%(py0)s == %(py2)sactual_lead_idexpected_lead_idr;   u-   의 lead.id가 올바르지 않음: expected=z	, actual=r<   r   r=   )r   r   expected_leadsr   r   r.   r:   rS   rT   r    r@   r"   s               r   test_leads_are_correctz-TestDevTeamDetailFiles.test_leads_are_correctD   sL    " !	
 $.#3#3#5 	Ixh1 $Qyy|$!&\$/N-i8!%55  >%5  v   "  I "  v   &6  I &6    +NO_N``ijxiyz    	$ $s   EE	c                    |j                         D ]`  \  }}t        |d      5 }t        j                  |      }ddd       d   }t	        |      }d}||k\  }	|	st        j                  d|	fd||f      dt        j                         v st        j                  t              rt        j                  t              ndd	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      d
z  }
t        j                  | d      dz   d|
iz  }t        t        j                  |            dx}x}	}c y# 1 sw Y   =xY w)u@   members_detail에 최소 1개 이상의 멤버가 있어야 함.r%   r&   Nr7      )>=)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)slenmembers)r   rE   rF   py6u"   의 members_detail이 비어있음z
>assert %(py8)spy8)r   r(   r)   r*   rZ   r   r>   r   r   r   r   r   r   r   )r   r   r   r   r.   r:   r[   rI   @py_assert5@py_assert4@py_format7@py_format9s               r   test_members_detail_not_emptyz4TestDevTeamDetailFiles.test_members_detail_not_emptyU   s    #-#3#3#5 	WIxh1 $Qyy|$+,Gw<V1V<1$VVV<1VVVVVV3VVV3VVVVVVwVVVwVVV<VVV1VVV3U&VVVVVVVV		W$ $s   E66F 	)__name__
__module____qualname____doc__r,   fixturedictstrr   r   r#   r0   rA   rL   rV   rb    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   )rf   builtinsr   _pytest.assertion.rewrite	assertionrewriter   r)   pathlibr   r,   markskipifr   r   rj   r   r   <module>rr      sd   
     DELLNNE  KW KW	KWr   