Ë
    U#,j!  ã                   óf   — d Z ddlZddlmc mZ ddlZddlZddl	m
Z
 ddlZddlmZ  G d„ d«      Zy)zTests for CSV/JSON post source.é    N)ÚPath)Ú	CsvSourcec                   ó0   — e Zd Zd„ Zdefd„Zd„ Zdefd„Zy)ÚTestCsvSourcec                 óô  — t        d«      }t        |j                  «       «      }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  }dd	|iz  }t        t	        j                  |«      «      ‚d x}x}}|d
   }|j                  }d}||k(  }|s€t	        j
                  d|fd||f«      t	        j                  |«      t	        j                  |«      t	        j                  |«      dœz  }dd	|iz  }t        t	        j                  |«      «      ‚d x}x}x}}|d
   }|j                  }d}||k(  }|s€t	        j
                  d|fd||f«      t	        j                  |«      t	        j                  |«      t	        j                  |«      dœz  }dd	|iz  }t        t	        j                  |«      «      ‚d x}x}x}}y )Nzdata/samples/posts.jsoné   ©ú==©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenÚposts©Úpy0Úpy1Úpy3Úpy6úassert %(py8)sÚpy8r   Úpost_001)z/%(py3)s
{%(py3)s = %(py1)s.post_id
} == %(py6)s©r   r   r   zJan Kowalski)z3%(py3)s
{%(py3)s = %(py1)s.author_name
} == %(py6)s)r   ÚlistÚfetch_postsr   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚpost_idÚauthor_name)	ÚselfÚsourcer   Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9Ú@py_assert0s	            ú:/var/www/html/agent.samochodowy/tests/test_ingestor_csv.pyÚtest_read_jsonzTestCsvSource.test_read_json   sz  € ÜÐ4Ó5ˆÜ�V×'Ñ'Ó)Ó*ˆÜ�5‹zÐ˜RÐˆz˜RÑ××Õˆz˜R×××××ÑŒs××ÓŒs×××××Ò�5××Ó�5××Ôˆz××Ò˜R××××××ÓØ�Q‰xÐ-ˆx×ÑÐ- :Ð-Ð :Ñ-×-×-Õ-Ð :×-×-Ó-ˆx×-×-Ò-Ð×-×-Ò- :×-×-×-×-×-×-Õ-Ø�Q‰xÐ5ˆx×#Ñ#Ð5 ~Ð5Ð# ~Ñ5×5×5Õ5Ð# ~×5×5Ó5ˆx×5×5Ò5Ð#×5×5Ò5 ~×5×5×5×5×5×5Ö5ó    Útmp_pathc                 óî  — |dz  }|j                  d«       t        t        |«      «      }t        |j	                  «       «      }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  }d	d
|iz  }	t        t        j                  |	«      «      ‚d x}x}}|d   }
|
j                  }d}||k(  }|s€t        j                  d|fd||f«      t        j                  |
«      t        j                  |«      t        j                  |«      dœz  }d	d
|iz  }	t        t        j                  |	«      «      ‚d x}
x}x}}y )Nz	posts.csvz™post_id,group,author_name,author_profile_url,text,timestamp,post_url
p1,grp,Author,https://fb.com/a,"Szukam pompy",2025-01-01T00:00:00,https://fb.com/p1
é   r	   r   r   r   r   r   r   r   zSzukam pompy)z,%(py3)s
{%(py3)s = %(py1)s.text
} == %(py6)sr   )Ú
write_textr   Ústrr   r   r   r   r   r   r   r   r   r   r    Útext)r#   r.   Úcsv_filer$   r   r%   r&   r'   r(   r)   r*   s              r+   Útest_read_csvzTestCsvSource.test_read_csv   s0  € Ø˜kÑ)ˆØ×Ñðdô	
ô œ3˜x›=Ó)ˆÜ�V×'Ñ'Ó)Ó*ˆÜ�5‹zÐ˜QÐˆz˜Q‰××Õˆz˜Q×××××ÑŒs××ÓŒs×××××Ò�5××Ó�5××Ôˆz××Ò˜Q××××××ÓØ�Q‰xÐ.ˆx�}‰}Ð. Ð.ˆ} Ñ.×.×.Õ.ˆ} ×.×.Ó.ˆx×.×.Ò.ˆ}×.×.Ò. ×.×.×.×.×.×.Ö.r-   c                 óv   — t        j                  t        «      5  t        d«       d d d «       y # 1 sw Y   y xY w)Nz/nonexistent/file.json)ÚpytestÚraisesÚFileNotFoundErrorr   )r#   s    r+   Útest_file_not_foundz!TestCsvSource.test_file_not_found   s-   € Ü�]‰]Ô,Ó-ñ 	0ÜÐ.Ô/÷	0÷ 	0ñ 	0ús   š/¯8c                 óê   — |dz  }|j                  d«       t        t        |«      «      }t        j                  t
        d¬«      5  t        |j                  «       «       d d d «       y # 1 sw Y   y xY w)Nzdata.xmlz<data/>ÚUnsupported)Úmatch)r1   r   r2   r7   r8   Ú
ValueErrorr   r   )r#   r.   Úfr$   s       r+   Útest_unsupported_formatz%TestCsvSource.test_unsupported_format#   sZ   € Ø�zÑ!ˆØ	�‰�YÔÜœ3˜q›6Ó"ˆÜ�]‰]œ:¨]Ô;ñ 	'Ü�×#Ñ#Ó%Ô&÷	'÷ 	'ñ 	'ús   ÁA)Á)A2N)Ú__name__Ú
__module__Ú__qualname__r,   r   r5   r:   r@   © r-   r+   r   r      s$   „ ò6ð	/ dó 	/ò0ð'°ô 'r-   r   )Ú__doc__Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   ÚjsonÚtempfileÚpathlibr   r7   Ú%agent_samochodowy.ingestor.csv_sourcer   r   rD   r-   r+   ú<module>rN      s%   ðÙ %ç  „ ƒÛ Ý ã å ;÷'ò 'r-   