Ë
    ò9jÛ  ã                   óª   — d Z ddlZddlmc mZ ddlmZ ddlZddl	m
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)zTests for data contracts.é    N)Údatetime)ÚValidationError)ÚMatchResultÚOfferÚ	PartQueryÚPostc                   ó   — e Zd Zd„ Zd„ Zy)ÚTestPostc                 óÒ  — t        dddddt        dddd	d
«      d¬«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      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}}y )NÚ123u   TIR czÄ™Å›cizJan Kowalskizhttps://facebook.com/janzSzukam pompy wody do Volvo FH13ié  é   é   é
   é   z)https://facebook.com/groups/tir/posts/123)Úpost_idÚgroupÚauthor_nameÚauthor_profile_urlÚtextÚ	timestampÚpost_url©ú==)z/%(py2)s
{%(py2)s = %(py0)s.post_id
} == %(py5)sÚp©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7)r   r   r   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)Úselfr   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8s          ú4/var/www/html/agent.samochodowy/tests/test_models.pyÚtest_valid_postzTestPost.test_valid_post   s�   € ÜØØ Ø&Ø9Ø2Ü˜t Q¨¨B°Ó3Ø@ô
ˆð �y‰yÐ!˜EÐ!ˆy˜EÑ!×!×!Õ!ˆy˜E×!×!×!×!×!Ñ!ˆq×!×!Ó!ˆq×!×!Ô!ˆy×!×!Ò!˜E×!×!×!×!×!×!Ô!ó    c                 ó~   — t        j                  t        «      5  t        dddd¬«       d d d «       y # 1 sw Y   y xY w)Nr   ÚgÚaÚt)r   r   r   r   )ÚpytestÚraisesr   r   ©r)   s    r/   Útest_missing_required_fieldz$TestPost.test_missing_required_field   s5   € Ü�]‰]œ?Ó+ñ 	FÜ˜ c°sÀÕE÷	F÷ 	Fñ 	Fúó   š3³<N)Ú__name__Ú
__module__Ú__qualname__r0   r9   © r1   r/   r
   r
      s   „ ò
"óFr1   r
   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú	TestOfferc                 ó¼  — t        ddddddg¬«      }|j                  }dd	g}||k(  }|s­t        j                  d
|fd||f«      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}}y )NÚ1Úallegrozhttps://allegro.pl/1z
Pompa wodyz06B 115 105za-b.c©Úoffer_idÚplatformÚurlÚtitleÚ
oe_numbersÚ	06B115105ÚABCr   ©z2%(py2)s
{%(py2)s = %(py0)s.oe_numbers
} == %(py5)sÚor   r   r    ©
r   rI   r!   r"   r#   r$   r%   r&   r'   r(   ©r)   rM   r*   r+   r,   r-   r.   s          r/   Útest_oe_normalizationzTestOffer.test_oe_normalization   s—   € ÜØØØ&ØØ% wÐ/ô
ˆð �|‰|Ð3 ¨UÐ3Ð3ˆ|Ð3Ñ3×3×3Õ3ˆ|Ð3×3×3×3×3×3Ñ3ˆq×3×3Ó3ˆq×3×3Ô3ˆ|×3×3Ò3Ð3×3×3×3×3×3×3Ô3r1   c                 óº  — t        ddddg d¢¬«      }|j                  }dg}||k(  }|s­t        j                  d|fd	||f«      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}}y )NrB   Úebayzhttps://ebay.com/1ÚFilter)rK   z  Ú rD   rK   r   rL   rM   r   r   r    rN   rO   s          r/   Útest_empty_oe_strippedz TestOffer.test_empty_oe_stripped(   sŒ   € ÜØØØ$ØÚ(ô
ˆð �|‰|Ð& ˜wÐ&ˆ|˜wÑ&×&×&Õ&ˆ|˜w×&×&×&×&×&Ñ&ˆq×&×&Ó&ˆq×&×&Ô&ˆ|×&×&Ò&˜w×&×&×&×&×&×&Ô&r1   c                 ó~   — t        j                  t        «      5  t        dddd¬«       d d d «       y # 1 sw Y   y xY w)NrB   ÚamazonÚur5   ©rE   rF   rG   rH   )r6   r7   r   r   r8   s    r/   Útest_invalid_platformzTestOffer.test_invalid_platform2   s7   € Ü�]‰]œ?Ó+ñ 	ÜØØ!ØØõ	÷	÷ 	ñ 	úr:   c                 óÐ  — t        dddd¬«      }|j                  }d}||u }|s­t        j                  d|fd||f«      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}}|j                  }d}||k(  }|s­t        j                  d|fd||f«      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}}|j                  }d}||k(  }|s­t        j                  d|fd||f«      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}}y )NrB   rC   rX   r5   rY   T©Úis)z/%(py2)s
{%(py2)s = %(py0)s.is_part
} is %(py5)srM   r   r   r    r   r   )z+%(py2)s
{%(py2)s = %(py0)s.qty
} == %(py5)sÚPLN)z0%(py2)s
{%(py2)s = %(py0)s.currency
} == %(py5)s)r   Úis_partr!   r"   r#   r$   r%   r&   r'   r(   ÚqtyÚcurrencyrO   s          r/   Útest_defaultszTestOffer.test_defaults;   sX  € Ü˜3¨¸À3ÔGˆØ�y‰yÐ ˜DÐ ˆy˜DÐ × × Õ ˆy˜D× × × × × Ñ ˆq× × Ó ˆq× × Ô ˆy× × Ò ˜D× × × × × × Ó Ø�u‰uÐ˜Ðˆu˜‰z××Õˆu˜×××××Ñˆq××Óˆq××Ôˆu××Ò˜××××××ÓØ�z‰zÐ"˜UÐ"ˆz˜UÑ"×"×"Õ"ˆz˜U×"×"×"×"×"Ñ"ˆq×"×"Ó"ˆq×"×"Ô"ˆz×"×"Ò"˜U×"×"×"×"×"×"Ô"r1   N)r;   r<   r=   rP   rU   rZ   rb   r>   r1   r/   r@   r@      s   „ ò4ò'òó#r1   r@   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestPartQueryc                 ó<  — t        dd¬«      }|j                  }d }||u }|s­t        j                  d|fd||f«      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}}|j                  }g }||k(  }|s­t        j                  d
|fd||f«      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}}y )NFzsprzedam opony)Úis_part_requestÚraw_textr\   )z-%(py2)s
{%(py2)s = %(py0)s.brand
} is %(py5)sÚqr   r   r    r   rL   )r   Úbrandr!   r"   r#   r$   r%   r&   r'   r(   rI   ©r)   rh   r*   r+   r,   r-   r.   s          r/   Útest_minimal_queryz TestPartQuery.test_minimal_queryC   sè   € Ü eÐ6FÔGˆØ�w‰wÐ˜$Ðˆw˜$ˆ××Õˆw˜$×××××Ñˆq××Óˆq××Ôˆw××Ò˜$××××××ÓØ�|‰|Ð!˜rÐ!ˆ|˜rÑ!×!×!Õ!ˆ|˜r×!×!×!×!×!Ñ!ˆq×!×!Ó!ˆq×!×!Ô!ˆ|×!×!Ò!˜r×!×!×!×!×!×!Ô!r1   c                 ó´  — t        dddg¬«      }|j                  }dg}||k(  }|s­t        j                  d|fd||f«      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}}y )NTÚszukamz51.06500-6408©rf   rg   rI   Ú51065006408r   rL   rh   r   r   r    ©
r   rI   r!   r"   r#   r$   r%   r&   r'   r(   rj   s          r/   rP   z#TestPartQuery.test_oe_normalizationH   s‰   € ÜØ ØØ'Ð(ô
ˆð
 �|‰|Ð. ˜Ð.ˆ|˜Ñ.×.×.Õ.ˆ|˜×.×.×.×.×.Ñ.ˆq×.×.Ó.ˆq×.×.Ô.ˆ|×.×.Ò.˜×.×.×.×.×.×.Ô.r1   c                 ó@  — t        ddddg¬«      }d}|j                  }||v}|s­t        j                  d|fd||f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      d	œz  }d
d|iz  }t        t        j                  |«      «      ‚dx}x}}d}|j                  }||v }|s­t        j                  d|fd||f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      d	œz  }d
d|iz  }t        t        j                  |«      «      ‚dx}x}}y)z0VIN numbers should be filtered out from OE list.Trm   ÚWDB96340310075897Ú20744939rn   ©únot in©z6%(py1)s not in %(py5)s
{%(py5)s = %(py3)s.oe_numbers
}rh   ©Úpy1Úpy3r   r   r    N©Úin©z2%(py1)s in %(py5)s
{%(py5)s = %(py3)s.oe_numbers
}©
r   rI   r!   r"   r&   r#   r$   r%   r'   r(   ©r)   rh   Ú@py_assert0r+   Ú@py_assert2r-   r.   s          r/   Útest_oe_rejects_vinz!TestPartQuery.test_oe_rejects_vinP   sù   € äØ ØØ+¨ZÐ8ô
ˆð
 #Ð6¨!¯,©,Ð6Ð"¨,Ð6×6×6Õ6Ð"¨,×6×6Ó6Ð"×6×6×6×6×6Ð6¨!×6×6Ó6¨!×6×6Ô6¨,×6×6×6×6×6×6Ó6ØÐ)˜QŸ\™\Ð)ˆz˜\Ð)×)×)Õ)ˆz˜\×)×)Ó)ˆz×)×)×)×)×)Ð)˜Q×)×)Ó)˜Q×)×)Ô)˜\×)×)×)×)×)×)Ô)r1   c                 ó@  — t        ddddg¬«      }d}|j                  }||v}|s­t        j                  d|fd||f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      d	œz  }d
d|iz  }t        t        j                  |«      «      ‚dx}x}}d}|j                  }||v }|s­t        j                  d|fd||f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      d	œz  }d
d|iz  }t        t        j                  |«      «      ‚dx}x}}y)z8German postal codes like DE59302 should be filtered out.Trm   ÚDE59302Ú81508206039rn   rt   rv   rh   rw   r   r    Nrz   r|   r}   r~   s          r/   Útest_oe_rejects_postal_codez)TestPartQuery.test_oe_rejects_postal_codeZ   sö   € äØ ØØ! =Ð1ô
ˆð
 Ð, §¡Ð,ˆy Ð,×,×,Õ,ˆy ×,×,Ó,ˆy×,×,×,×,×,Ð, ×,×,Ó, ×,×,Ô, ×,×,×,×,×,×,Ó,ØÐ, §¡Ð,ˆ} Ð,×,×,Õ,ˆ} ×,×,Ó,ˆ}×,×,×,×,×,Ð, ×,×,Ó, ×,×,Ô, ×,×,×,×,×,×,Ô,r1   c                 ó´  — t        dddg¬«      }|j                  }dg}||k(  }|s­t        j                  d|fd||f«      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}}y )NTrm   ÚAE4800rn   r   rL   rh   r   r   r    rp   rj   s          r/   Útest_oe_keeps_valid_shortz'TestPartQuery.test_oe_keeps_valid_shortd   sˆ   € ÜØ ØØ �zô
ˆð
 �|‰|Ð) ˜zÐ)ˆ|˜zÑ)×)×)Õ)ˆ|˜z×)×)×)×)×)Ñ)ˆq×)×)Ó)ˆq×)×)Ô)ˆ|×)×)Ò)˜z×)×)×)×)×)×)Ô)r1   N)r;   r<   r=   rk   rP   r�   r…   rˆ   r>   r1   r/   rd   rd   B   s   „ ò"ò
/ò*ò-ó*r1   rd   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestMatchResultc                 ó°  — t        ddd¬«      }|j                  }g }||k(  }|s­t        j                  d|fd||f«      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}}y )Ngffffffî?ÚoeT)Ú
confidenceÚmethodÚmatchedr   )z.%(py2)s
{%(py2)s = %(py0)s.offers
} == %(py5)sÚrr   r   r    )
r   Úoffersr!   r"   r#   r$   r%   r&   r'   r(   )r)   r�   r*   r+   r,   r-   r.   s          r/   Útest_valid_resultz!TestMatchResult.test_valid_resultn   s|   € Ü 4°¸dÔCˆØ�x‰xÐ˜2Ðˆx˜2‰~××Õˆx˜2×××××Ñˆq××Óˆq××Ôˆx××Ò˜2××××××Ôr1   c                 óz   — t        j                  t        «      5  t        dd¬«       d d d «       y # 1 sw Y   y xY w)Ng      ø?rŒ   ©r�   rŽ   ©r6   r7   r   r   r8   s    r/   Útest_confidence_out_of_rangez,TestMatchResult.test_confidence_out_of_ranger   s-   € Ü�]‰]œ?Ó+ñ 	5Ü 3¨tÕ4÷	5÷ 	5ñ 	5úó   š1±:c                 óz   — t        j                  t        «      5  t        dd¬«       d d d «       y # 1 sw Y   y xY w)Ngš™™™™™¹¿Úbrakr”   r•   r8   s    r/   Útest_negative_confidencez(TestMatchResult.test_negative_confidencev   s-   € Ü�]‰]œ?Ó+ñ 	8Ü 4°Õ7÷	8÷ 	8ñ 	8úr—   c                 óz   — t        j                  t        «      5  t        dd¬«       d d d «       y # 1 sw Y   y xY w)Ng      à?Úmagicr”   r•   r8   s    r/   Útest_invalid_methodz#TestMatchResult.test_invalid_methodz   s-   € Ü�]‰]œ?Ó+ñ 	8Ü 3¨wÕ7÷	8÷ 	8ñ 	8úr—   N)r;   r<   r=   r’   r–   rš   r�   r>   r1   r/   rŠ   rŠ   m   s   „ òò5ò8ó8r1   rŠ   )Ú__doc__Úbuiltinsr#   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter!   r   r6   Úpydanticr   Úagent_samochodowy.modelsr   r   r   r   r
   r@   rd   rŠ   r>   r1   r/   ú<module>r¥      sH   ðÙ ç  „ Õ ã Ý $ç HÓ H÷Fñ F÷$"#ñ "#÷J(*ñ (*÷V8ò 8r1   