
    `i
                         d Z ddlZddlmc mZ ddlmZm	Z	 ddl
Z
ddlmZmZmZmZ  G d d      Z G d d      Z G d	 d
      Z G d d      Zy)u   drive_uploader 모듈 테스트    N)	MagicMockpatch)_safe_filenamebuild_summary_markdownbuild_transcript_markdownupload_markdownc                       e Zd Zd Zd Zy)TestSafeFilenamec                    d}d}t        |      }||v}|st        j                  d|fd||f      t        j                  |      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}d	}d}t        |      }||v}|st        j                  d|fd||f      t        j                  |      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )
N/za/b\c:d*e?f)not in)z4%(py1)s not in %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}r   )py1py3py5py7zassert %(py9)spy9\)	r   
@pytest_ar_call_reprcompare	_saferepr@py_builtinslocals_should_repr_global_nameAssertionError_format_explanation)self@py_assert0@py_assert4@py_assert6@py_assert2@py_format8@py_format10s          Q/home/jay/projects/insuwiki/scripts/youtube-pipeline/tests/test_drive_uploader.pytest_removes_special_charsz+TestSafeFilename.test_removes_special_chars   s   88.88s88888s8888s888888.888.888888888888889.9>.99t99999t9999t999999>999>999.99999999999    c           	         d}t        |      }t        |      }d}||k(  }|sSt        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                  t               rt        j                  t               nddt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )Ndxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2   )==)zN%(py6)s
{%(py6)s = %(py0)s(%(py4)s
{%(py4)s = %(py1)s(%(py2)s)
})
} == %(py9)slenr   
long_title)py0r   py2py4py6r   zassert %(py11)spy11)
r   r*   r   r   r   r   r   r   r   r   )r   r+   @py_assert3@py_assert5@py_assert8@py_assert7r"   @py_format12s           r#   test_truncates_to_50z%TestSafeFilename.test_truncates_to_50   s    
!*-4s-.4"4."4444."444444s444s444444>444>444444*444*444-444.444"4444444r%   N)__name__
__module____qualname__r$   r6    r%   r#   r
   r
      s    :5r%   r
   c                       e Zd Zd Zy)TestBuildSummaryMarkdownc           
         t        dddddddd	      }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}}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}}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 )Nu   요약 내용u   테스트 영상u   보험채널vid123z2026-03-27T00:00:00ZPT10Myoutube_captioni  )summarytitlechannel_namevideo_idpublished_atdurationtranscription_sourcetranscript_lengthinz%(py1)s in %(py3)smdr   r   assert %(py5)sr   z5,000)	r   r   r   r   r   r   r   r   r   r   rL   r   r    @py_format4@py_format6s         r#   test_contains_metadataz/TestBuildSummaryMarkdown.test_contains_metadata   s   ##$'/!2"	
 "'!R''''!R'''!''''''R'''R'''''''#~####~###~################x2~x2x22w"}w"w""$"$$$$"$$$$$$$$$"$$$"$$$$$$$r%   N)r7   r8   r9   rR   r:   r%   r#   r<   r<      s    %r%   r<   c                       e Zd Zd Zy)TestBuildTranscriptMarkdownc           	         t        ddddddd      }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 )Nu   전사 원문 내용u	   테스트   채널vid1
2026-03-27PT5Mwhisper_stt)
transcriptrB   rC   rD   rE   rF   rG   rI   rK   rL   rM   rN   r   u   전사 원문)	r   r   r   r   r   r   r   r   r   rO   s         r#   test_contains_transcriptz4TestBuildTranscriptMarkdown.test_contains_transcript-   s    &-!%!.
 &+%++++%+++%++++++++++++++++$"$$$$"$$$$$$$$$"$$$"$$$$$$$r%   N)r7   r8   r9   r\   r:   r%   r#   rT   rT   ,   s    %r%   rT   c                   (    e Zd Z ed      d        Zy)TestUploadMarkdownz2youtube_pipeline.drive_uploader._get_drive_servicec                 B   t               }||_        t               }t               }dddigidddigiddddgig|j                  _        ||j                  _        ||j
                  _        t        dd	d
dd      }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 )Nfilesidfolder1folder2existingz!https://drive.google.com/existing)ra   webViewLinku   내용rV   u   제목rX   u   _요약rI   rK   resultrM   rN   r   )r   return_valueexecuteside_effectlistr`   r   r   r   r   r   r   r   r   r   )
r   mock_service_fnmock_service
mock_files	mock_listrf   r   r    rP   rQ   s
             r#   test_skips_duplicatez'TestUploadMarkdown.test_skips_duplicate<   s     {'3$ [
K	i()*i()*('J)
	% (1
$*4' 8X|YW#zV####zV###z######V###V#######r%   N)r7   r8   r9   r   ro   r:   r%   r#   r^   r^   ;   s    
?@$ A$r%   r^   )__doc__builtinsr   _pytest.assertion.rewrite	assertionrewriter   unittest.mockr   r   pytestyoutube_pipeline.drive_uploaderr   r   r   r   r
   r<   rT   r^   r:   r%   r#   <module>rx      sE    %    *  5 5% %&% %$ $r%   