
    iY                     4   d Z ddlZddlZddlmZ  ee      j                  j                  Zej                  j                  dedz        Zeej                  J ej                  j                  e      Zeej                  d<   ej                  j!                  e       ej"                  Zej$                  Zej&                  Zej(                  Zej*                  Z G d d      Z G d d	      Z G d
 d      Z G d d      Z G d d      Z G d d      Zy)u   hook_scorer.py 단위 테스트    N)Pathhook_scorerzhook_scorer.pyc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestDetectEmotionsc                 0    d}t        |      }|d   du sJ y)u0   분노 키워드 포함 텍스트 → anger=TrueuB   이게 말이 됩니까? 도대체 왜 이러면 안 되는 건지angerTNdetect_emotionsselftextresults      X/home/jay/workspace/.worktrees/task-2116-dev1/content-pipeline/tests/test_hook_scorer.pytest_detect_angerz$TestDetectEmotions.test_detect_anger   s#    S &g$&&&    c                 0    d}t        |      }|d   du sJ y)u,   놀라움 키워드 포함 → surprise=Trueu,   진짜? 이게 실화냐 완전 충격이다surpriseTNr	   r   s      r   test_detect_surprisez'TestDetectEmotions.test_detect_surprise   s$    = &j!T)))r   c                 0    d}t        |      }|d   du sJ y)u(   공감 키워드 포함 → empathy=Trueu*   나도 겪어본 적 있어. 공감 백배empathyTNr	   r   s      r   test_detect_empathyz&TestDetectEmotions.test_detect_empathy$   s$    ; &i D(((r   c                 0    d}t        |      }|d   du sJ y)u(   두려움 키워드 포함 → fear=Trueu3   안 하면 진짜 큰일 나고 모르면 손해다fearTNr	   r   s      r   test_detect_fearz#TestDetectEmotions.test_detect_fear*   s#    D &f~%%%r   c                 0    d}t        |      }|d   du sJ y)u-   호기심 키워드 포함 → curiosity=Trueu+   아무도 안 알려주는 비밀이 있다	curiosityTNr	   r   s      r   test_detect_curiosityz(TestDetectEmotions.test_detect_curiosity0   s$    < &k"d***r   c                 x    d}t        |      }|d   du sJ |d   du sJ |d   du sJ |d   du sJ |d   du sJ y)	u2   감정 없는 평범한 텍스트 → 모두 Falseu8   오늘 날씨가 맑습니다. 기온은 20도입니다.r   Fr   r   r   r   Nr	   r   s      r   test_no_emotionsz#TestDetectEmotions.test_no_emotions6   sn    I &g%'''j!U***i E)))f~&&&k"e+++r   N)	__name__
__module____qualname__r   r   r   r   r   r    r   r   r   r      s     '*)&+,r   r   c                       e Zd Zd Zd Zy)TestMinEmotionsc                 `    d}t        |      }|j                  du sJ |j                  dk\  sJ y)u3   2개 이상 감정 포함 → has_min_emotions=TrueuF   도대체 왜 이러면 안 되는 건지, 안 하면 진짜 큰일남T   Nscorehas_min_emotionsemotion_countr   s      r   test_min_two_emotions_passz*TestMinEmotions.test_min_two_emotions_passD   s;     Xt&&$...##q(((r   c                 `    d}t        |      }|j                  du sJ |j                  dk  sJ y)u0   1개만 감정 포함 → has_min_emotions=FalseuH   나도 그런 경험이 있었어. 정말 공감이 가는 이야기야.Fr'   Nr(   r   s      r   test_min_two_emotions_failz*TestMinEmotions.test_min_two_emotions_failL   s;     Zt&&%///##a'''r   N)r    r!   r"   r,   r.   r#   r   r   r%   r%   C   s    )(r   r%   c                       e Zd Zd Zd Zy)TestNumberPatternsc                 &    t        d      }|du sJ y)uB   '47,382명' 같은 구체적 숫자 → has_non_round_numbers=Trueu7   아직도 모르는 설계사가 47,382명이나 된다TN)check_non_round_numbersr   r   s     r   test_non_round_numberz(TestNumberPatterns.test_non_round_numberX   s    ()bc~~r   c                 &    t        d      }|du sJ y)u=   '약 5만' 같은 라운드 숫자 → has_round_numbers=Trueu#   약 5만 명이 영향을 받는다TN)check_round_numbersr3   s     r   test_round_number_warningz,TestNumberPatterns.test_round_number_warning]   s    $%JK~~r   N)r    r!   r"   r4   r7   r#   r   r   r0   r0   W   s    
r   r0   c                       e Zd Zd Zd Zy)TestCompanyMentionsc                 Z    t        d      }|j                  du sJ d|j                  v sJ y)u2   '삼성생명' 포함 → has_company_mention=TrueuF   삼성생명 상품이 바뀌었다는데 진짜? 안 하면 큰일남Tu   삼성Nr)   has_company_mentionmentioned_companiesr3   s     r   test_company_mentionz(TestCompanyMentions.test_company_mentionf   s5    _`))T111655555r   c                 \    t        d      }|j                  du sJ |j                  g k(  sJ y)u.   회사명 없음 → has_company_mention=FalseuC   수수료 구조가 바뀌었다는데 진짜? 안 하면 큰일남FNr;   r3   s     r   test_no_company_mentionz+TestCompanyMentions.test_no_company_mentionl   s5    \]))U222))R///r   N)r    r!   r"   r>   r@   r#   r   r   r9   r9   e   s    60r   r9   c                       e Zd Zd Zd Zy)TestLengthCheckc                 `    d}t        |      }|j                  du sJ |j                  dk(  sJ y)u'   500자 이내 → is_within_length=Trueu  가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가Ti  Nr)   is_within_length
char_countr   s      r   test_within_lengthz"TestLengthCheck.test_within_lengthv   s8    t&&$...  C'''r   c                 `    d}t        |      }|j                  du sJ |j                  dk(  sJ y)u(   501자 이상 → is_within_length=Falseu  가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가가Fi  NrD   r   s      r   test_over_lengthz TestLengthCheck.test_over_length}   s8    t&&%///  C'''r   N)r    r!   r"   rG   rI   r#   r   r   rB   rB   u   s    ((r   rB   c                       e Zd Zd Zd Zy)TestScoreResultc                     d}t        |      }|j                  du sJ |j                  du sJ |j                  du sJ |j                  du sJ y)uC   2감정 이상, 회사 언급 없음, 500자 이내 → passed=Trueuo   도대체 왜 이런 제도가 바뀌는지, 안 하면 진짜 큰일남. 아직 모르는 사람이 많다니.TFN)r)   r*   r<   rE   passedr   s      r   test_score_passzTestScoreResult.test_score_pass   sa     At&&$...))U222&&$...}}$$$r   c                 `    d}t        |      }|j                  dk  sJ |j                  du sJ y)u   1감정만 → passed=Falseu7   나도 공감이 가는 이야기야. 정말 그렇지.r'   FN)r)   r+   rM   r   s      r   test_score_fail_one_emotionz+TestScoreResult.test_score_fail_one_emotion   s6    Ht##a'''}}%%%r   N)r    r!   r"   rN   rP   r#   r   r   rK   rK      s    %&r   rK   )__doc__importlib.util	importlibsyspathlibr   __file__parentPIPELINE_DIRutilspec_from_file_locationspecloadermodule_from_specr   modulesexec_moduler
   r2   r6   check_company_mentionsr)   r   r%   r0   r9   rB   rK   r#   r   r   <module>ra      s   %  
  H~$$++~~--m\L\=\]DKK3 33nn--d3(M     $--%== !55 $;; 
', ',X( ((	 	0 0 ( ($& &r   