
    8j	                         d Z ddlZddlmZmZmZ ddlmZ ddlmZ ej                  j                  ej                  j                  e            Zej                  j                  eddd      Zd	 Zed
k(  r e        yy)zTest del proveedor 'syndication' SIN red.

Valida el parseo contra una respuesta REAL de X guardada como fixture, y que el
registry devuelve el proveedor. El fetch en vivo se prueba con run_real.py.

Ejecuta:  .venv/bin/python test_syndication.py
    N)datetime	timedeltatimezone)SyndicationProvider)get_providertestsfixtureszsyndication_sample.htmlc                     t        di       } t        | t              sJ d       t        d| j	                                t        t        d      5 }|j                         }d d d        t        dddt        j                        }| j                  d	|d
      sJ d       t        dt                      d   }|j                  r|j                  r|j                  sJ d       t        |j                   t"              rt        |j$                  t"              sJ d       |j&                  j)                  d      sJ d       t        dd|j                   d|j                   d|j$                  d|j*                  xs dd d        t-        fdt/        t              dz
        D              sJ d       t        d       t        dddt        j                        }| j                  |d	|d
      g k(  sJ d       t        d       | j1                  |d	      d   j                  }| j3                  |      sJ d        | j3                  t        j4                  t        j                        t7        d!"      z
        rJ d#       | j3                  d       sJ d$       t        d%|j9                          d&       t        d'       y # 1 sw Y   mxY w)(Nsyndicationz(registry no devuelve SyndicationProviderzregistry OK ->zutf-8)encodingi     )tzinfokarpathy2   )sincelimitu   no se parseó ningún tweetztweets parseados: r   u   faltan campos básicosu   métricas no son intzhttps://x.com/zURL mal formadaz
ejemplo ->@u   ❤u   🔁| 7   c              3   b   K   | ]&  }|   j                   |d z      j                   k\   ( yw)r   N)
created_at).0itweetss     test_syndication.py	<genexpr>zmain.<locals>.<genexpr>(   s3      BXQq	q1u 8 88BXs   ,/u   no está ordenado por fechazorden por fecha OKi  zel filtro de ventana no filtrazfiltro de ventana OKu&   no detecta el caché viejo del fixture   )hourszmarca como viejo algo recienteu   None debería contar como viejou   detección stale OK -> newest=z marcado como viejoz
SYNDICATION_PARSE_OK)r   
isinstancer   printnameopenFIXTUREreadr   r   utc
parse_htmllenidauthorr   likesintretweetsurl
startswithtextallrange
_parse_allis_stalenowr   date)pfhtmlr   tfuturenewestr   s          @r   mainr=      sz   ]B'Aa,-Y/YY-	
AFFH% 
g	(Avvx 
)T1a5E\\$
%r\BF0006	s6{m
,-q	A44AHHG/GG-aggs#
1::s(C[E[[C55,-@/@@-	,!AHH:qww

CRSRXRXR^\^`cacQde  BGFVWBX  %$%  

 dAq6F<<jb<ARGiIiiG	
 ! \\$
+A.99F::fGGGzz(,,x||4yq7IIJlLllJ::d>>>	*6;;=/9L
MN	
"#? 
)	(s   KK__main__)__doc__osr   r   r   agent.providers.syndicationr   agent.registryr   pathdirnameabspath__file__HEREjoinr$   r=   __name__     r   <module>rL      sm    
 2 2 ; '	wwrwwx01
'',,tWj2K
L&$R zF rK   