ó
    HÀÍj¿  ã                   ó–   • S SK rS SKJs  Jr  S SKrS SKJrJ	r	  \R                  S 5       rS rS rS rS rS rS	 rS
 rS rS rS rg)é    N)Úadd_scheduled_postÚloginc                 óv   • U R                  SS 5        U R                  SS 5        U R                  SS 5        g )Nz,app.routes.account_routes.ensure_fresh_tokenc                 ó   • g©NÚtok© ©Úas    ÚMF:\Solutions\Thinkera\Publishers\TikTokManager\tests\routes\test_gui_posts.pyÚ<lambda>Úfresh_token.<locals>.<lambda>   s   € ÐRWó    z)app.routes.post_routes.ensure_fresh_tokenc                 ó   • gr   r	   r
   s    r   r   r   	   s   € Èur   z-app.routes.insights_routes.ensure_fresh_tokenc                 ó   • gr   r	   r
   s    r   r   r   
   s   € ÐSXr   )Úsetattr)Úmonkeypatchs    r   Úfresh_tokenr      s5   € à×ÑÐFÉÔXØ×ÑÐCÁ_ÔUØ×ÑÐGÉÕYr   c                 óê  • U R                  S5      nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCS	oqR                  nS
oƒ" US9o—U	;   oª(       dä  [        R                  " SU
4SXy45      [        R                  " U5      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      [        R                  " U	5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n
=n=p‰g )Nú/loginéÈ   ©ú==©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚr©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7zContinue with TikTokT©Úas_text©Úin©zV%(py1)s in %(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.get_data
}(as_text=%(py7)s)
}©Úpy1Úpy3r   r!   Úpy9úassert %(py11)sÚpy11)ÚgetÚstatus_codeÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚget_data)Úclientr   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert0Ú@py_assert6Ú@py_assert8Ú@py_assert2Ú@py_format10Ú@py_format12s                r   Útest_login_page_rendersrD      s  € Ø�
‰
�8Ó€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØ!Ð=§Z¡ZÐ=¸Ð= Z¸Ñ%=Ð=Ð%=Ñ=×=×=×=Ò=Ð!×=×=Ô=Ð!×=×=×=×=×=Ô= Q×=×=×=Ñ= Q×=×=Õ= Z×=×=Ó=¸×=×=Ó=Ð%=×=×=×=×=×=×=×=Ð=r   c                 óð  • U R                  S5      nUR                  nSoCU:H  oU(       dº  [        R                  " SU4SX445      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pTS	o‚R                  S
   oXU;   o™(       do  [        R                  " SU	4SX…45      [        R                  " U5      [        R                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=p•g )Nú
/dashboardi.  r   r   r   r   r    r!   r   ÚLocationr$   )z%(py1)s in %(py4)s)r(   Úpy4zassert %(py6)sÚpy6)r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   Úheaders)r8   Úaccountr   r9   r:   r;   r<   r=   r>   rA   Ú@py_format5Ú@py_format7s               r   Útest_gui_requires_loginrN      sÑ   € Ø�
‰
�<Ó €AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØÐ,—y‘y Ñ,Ð,Ð,Ñ,×,×,×,Ò,ˆ8×,×,Ô,ˆ8×,×,Ó,Ð,×,×,×,×,×,×,Ô,r   c                 ó(  • UR                  SS 5        UR                  SSS j5        [        X5        U R                  S5      nUR                  nSoeU:H  ow(       dº  [        R
                  " SU4SXV45      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	[        R                  " U5      [        R                  " U5      S
.-  nSSU0-  n	[        [        R                  " U	5      5      eS =n=pvUR                  SS9n
So»U
;   oÌ(       d¥  [        R
                  " SU4SXº45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U
5      (       a  [        R                  " U
5      OSS.-  nSSU0-  n[        [        R                  " U5      5      eS =p¼So»U
;   oÌ(       d¥  [        R
                  " SU4SXº45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U
5      (       a  [        R                  " U
5      OSS.-  nSSU0-  n[        [        R                  " U5      5      eS =p¼g )Nz'app.routes.account_routes.get_user_infoc                 ó   • SSS.$ )NúTest Accountéè  )Údisplay_nameÚfollower_countr	   ©Útokens    r   r   Ú(test_dashboard_renders.<locals>.<lambda>   s   € Ðbpð  EIò  RJr   z%app.routes.account_routes.list_videosc                 ó   • SSSSS./SSS.$ )	NÚv1Úhelloé   é   )ÚidÚtitleÚ
view_countÚ
like_countr   F©ÚvideosÚcursorÚhas_morer	   )rV   Ú	max_counts     r   r   rW      s"   € °dÀWÐ\]ÐmnÑ/oÐ.pÐ|}ð  LQò  $Rr   rF   r   r   r   r   r   r    r!   Tr"   rQ   r$   ©z%(py1)s in %(py3)sÚtext©r(   r)   úassert %(py5)sr   rZ   )é   ©r   r   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   ©r8   rK   r   r   r   r9   r:   r;   r<   r=   rg   r>   rA   Ú@py_format4s                 r   Útest_dashboard_rendersrn      s~  € Ø×ÑÐAñ  DJô  KØ×ÑØ/ó 	Rôô 
ˆ&ÔØ�
‰
�<Ó €AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØ�:‰:˜dˆ:Ð#€DØÐ!˜TÑ!×!×!×!Ò!ˆ>×!×!Ô!ˆ>×!×!×!×!×!Ô!˜T×!×!×!Ñ!˜T×!×!×!×!×!×!Ó!ØÐ�d‰?×××Òˆ7××Ôˆ7×××××Ô�d×××Ñ�d××××××Ôr   c                 ó*  • UR                  SSS j5        [        X5        U R                  S5      nUR                  nSoeU:H  ow(       dº  [        R
                  " SU4SXV45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nS	S
U0-  n	[        [        R                  " U	5      5      eS =n=pvSo¤R                  nSo¶" US9oÊU;   oÝ(       dä  [        R
                  " SU4SX¬45      [        R                  " U
5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n
=n=n=p¼g )Nz"app.routes.post_routes.list_videosc           	      ó"   • SSSSSSSSS	./SS
S.$ )NrY   úa videoé	   é   r   r\   é ñSeé   )r]   r^   r_   r`   Úcomment_countÚshare_countÚcreate_timeÚvideo_durationFra   r	   ©rV   re   rc   s      r   r   Ú)test_posts_page_renders.<locals>.<lambda>*   sI   € ÀÐPYÐijÐz{ð  OPð  abð  s}ð  QSñ  ;Tð  :Uð  abð  può  /vr   z/postsr   r   r   r   r   r    r!   rq   Tr"   r$   r&   r'   r+   r,   )é   r   rk   )r8   rK   r   r   r   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   s                   r   Útest_posts_page_rendersr}   '   s7  € Ø×ÑØ,ó 	vôô 
ˆ&ÔØ�
‰
�8Ó€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØÐ0Ÿ
™
Ð0¨4Ð0˜
¨4Ñ0Ð0Ð0Ñ0×0×0×0Ò0ˆ9×0×0Ô0ˆ9×0×0×0×0×0Ô0˜×0×0×0Ñ0˜×0×0Õ0˜
×0×0Ó0¨4×0×0Ó0Ð0×0×0×0×0×0×0×0Ð0r   c                 óÐ  ^• / mUR                  SSU4S jj5        UR                  SS 5        [        X5        U R                  SSSS.S	S
9nUR                  nSoeU:H  ow(       dº  [        R
                  " SU4SXV45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n	[        [        R                  " U	5      5      eS =n=pvS/n
TU
:H  oU(       d¦  [        R
                  " SU4STU
45      S[        R                  " 5       ;   d  [        R                  " T5      (       a  [        R                  " T5      OS[        R                  " U
5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =pZSoÄR                  nS	oÖ" US9oìU;   oª(       dä  [        R
                  " SU
4SXÎ45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n
=n=pÞg )Nz"app.services.posts.init_video_pullc                 ó<   >• TR                  U5      =(       d    SS0$ )NÚ
publish_idÚpub_1)Úappend)rV   Úurlr^   Úprivacy_levelÚmodeÚcallss        €r   r   Ú-test_new_post_publishes_now.<locals>.<lambda>4   sI   ø€ ð  }B÷  }Iñ  }Ið  JMó  }N÷  }ið  S_ð  ahð  Rið  }ir   z#app.services.posts.wait_for_publishc                 ó   • SSS.$ )NÚPUBLISH_COMPLETEÚv_1)Úpublish_statusÚvideo_idr	   )rV   Úpids     r   r   r‡   5   s   € Ðewð  FKò  SLr   ú
/posts/newúhttps://x/v.mp4zui post)Ú	video_urlr^   T©ÚdataÚfollow_redirectsr   r   r   r   r   r    r!   )z%(py0)s == %(py3)sr†   )r   r)   ri   r   zPost sent to TikTokr"   r$   r&   r'   r+   r,   )NNN)r   r   Úpostr.   r/   r0   r1   r2   r3   r4   r5   r6   r7   )r8   rK   r   r   r   r9   r:   r;   r<   r=   rA   rm   r>   r?   r@   rB   rC   r†   s                    @r   Útest_new_post_publishes_nowr•   2   sÊ  ø€ Ø€EØ×ÑÐ<ö  ?iô  jØ×ÑÐ=ñ  @Lô  MÜ	ˆ&ÔØ�‰�LÐ5FÐQZÑ'[ÐnrˆÐs€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØ&Ð'Ð'ˆ5Ð'Ñ'×'×'×'Ò'ˆ5Ð'×'×'×'×'×'Õ'ˆ5×'×'×'Ñ'ˆ5×'×'Õ'Ð'×'×'×'×'×'×'Ñ'Ø Ð<§J¡JÐ<°tÐ< J°tÑ$<Ð<Ð$<Ñ<×<×<×<Ò<Ð ×<×<Ô<Ð ×<×<×<×<×<Ô< A×<×<×<Ñ< A×<×<Õ< J×<×<Ó<°t×<×<Ó<Ð$<×<×<×<×<×<×<×<Ð<r   c                 ó|  • SSK J nJnJn  [        X5        UR	                  UR
                  5      U" SS9-   R                  5       nU R                  SSUS.SS	9nUR                  nS
o˜U	:H  oª(       dº  [        R                  " SU
4SX‰45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U	5      S.-  nSSU0-  n[        [        R                   " U5      5      eS =n=p©So×R"                  n	Soé" US9oýU;   nU(       dä  [        R                  " SU4SXß45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U	5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                   " U5      5      eS =n=n=n	=pïg )Nr   ©ÚdatetimeÚ	timedeltaÚtimezoners   ©ÚhoursrŽ   r�   )r�   Úscheduled_atTr‘   r   r   r   r   r   r    r!   Ú	Scheduledr"   r$   r&   r'   r+   r,   )r˜   r™   rš   r   ÚnowÚutcÚ	isoformatr”   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   )r8   rK   r   r˜   r™   rš   r�   r   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   s                      r   Útest_new_post_schedulesr¢   =   sW  € ß6Ñ6Ü	ˆ&ÔØ—L‘L §¡Ó.±ÀÑ1CÑC×NÑNÓP€LØ�‰�LÐ5FÐXdÑ'eÐx|ˆÐ}€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØÐ2Ÿ*™*Ð2¨TÐ2˜*¨TÑ2Ð2Ð2Ñ2×2×2×2Ó2ˆ;×2×2Ô2ˆ;×2×2×2×2×2Ô2˜!×2×2×2Ñ2˜!×2×2Õ2˜*×2×2Ó2¨T×2×2Ó2Ð2×2×2×2×2×2×2×2Ð2r   c                 ó   • [        X5        U R                  S0 SS9nUR                  nSoTU:H  of(       dº  [        R                  " SU4SXE45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS =n=peSo“R                  nSo¥" U
S9o¹U;   oÌ(       dä  [        R                  " SU4SX›45      [        R                  " U	5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U
5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n	=n=n=p«g )NrŽ   Tr‘   r   r   r   r   r   r    r!   z(a post needs a video_url or a video filer"   r$   r&   r'   r+   r,   )r   r”   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   )r8   rK   r   r   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   s                  r   Ú&test_new_post_flashes_validation_errorr¤   F   s&  € Ü	ˆ&ÔØ�‰�L r¸DˆÐA€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØ5ÐQ¿¹ÐQÈDÐQ¸ÈDÑ9QÐQÐ9QÑQ×Q×Q×QÒQÐ5×Q×QÔQÐ5×Q×Q×Q×Q×QÔQ¸×Q×Q×QÑQ¸×Q×QÕQ¸×Q×QÓQÈD×Q×QÓQÐ9Q×Q×Q×Q×Q×Q×Q×QÐQr   c           	      ó@  • SSK J nJnJn  [        XUR	                  UR
                  5      U" SS9-   S9  [        X5        U R                  S5      nUR                  nSo‡U:H  o™(       dº  [        R                  " SU	4S	Xx45      S
[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS
[        R                  " U5      [        R                  " U5      S.-  n
SSU
0-  n[        [        R                   " U5      5      eS =n=p˜UR#                  SS9nSoÝU;   oî(       d¥  [        R                  " SU4SXÜ45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OSS.-  nSSU0-  n
[        [        R                   " U
5      5      eS =pÞSoÝU;   oî(       d¥  [        R                  " SU4SXÜ45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OSS.-  nSSU0-  n
[        [        R                   " U
5      5      eS =pÞg )Nr   r—   r\   r›   ©r�   z/posts/scheduledr   r   r   r   r   r    r!   Tr"   zscheduled titler$   rf   rg   rh   ri   r   ÚPending)r˜   r™   rš   r   rŸ   r    r   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   )r8   ÚapprK   r˜   r™   rš   r   r9   r:   r;   r<   r=   rg   r>   rA   rm   s                   r   Útest_scheduled_page_rendersr©   M   sx  € ß6Ñ6Ü�s°(·,±,¸x¿|¹|Ó2LÉyÐ_`ÑOaÑ2aÒbÜ	ˆ&ÔØ�
‰
Ð%Ó&€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØ�:‰:˜dˆ:Ð#€DØÐ$ Ñ$×$×$×$Ò$Ð×$×$Ô$Ð×$×$×$×$×$Ô$ ×$×$×$Ñ$ ×$×$×$×$×$×$Ó$ØÐ˜Ñ×××Òˆ9××Ôˆ9×××××Ô˜×××Ñ˜××××××Ôr   c           	      ón  • SSK J nJnJn  [        XUR	                  UR
                  5      U" SS9-   S9n[        X5        U R                  SU-  SS9nUR                  nS	o˜U	:H  oª(       dº  [        R                  " S
U
4SX‰45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U	5      S.-  nSSU0-  n[        [        R                   " U5      5      eS =n=p©So×R"                  n	Soé" US9oýU;   nU(       dä  [        R                  " SU4SXß45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U	5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                   " U5      5      eS =n=n=n	=pïg )Nr   r—   r\   r›   r¦   z/scheduled/%s/deleteT)r“   r   r   r   r   r   r    r!   zScheduled post deleted.r"   r$   r&   r'   r+   r,   )r˜   r™   rš   r   rŸ   r    r   r”   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   )r8   r¨   rK   r˜   r™   rš   Úpost_idr   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   s                      r   Útest_delete_scheduled_router¬   X   sU  € ß6Ñ6Ü  ¸H¿L¹LÈÏÉÓ<VÑYbÐijÑYkÑ<kÑl€GÜ	ˆ&ÔØ�‰Ð*¨WÑ4ÀtˆÐL€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØ$Ð@¯
©
Ð@¸4Ð@¨
¸4Ñ(@Ð@Ð(@Ñ@×@×@×@Ó@Ð$×@×@Ô@Ð$×@×@×@×@×@Ô@¨×@×@×@Ñ@¨×@×@Õ@¨
×@×@Ó@¸4×@×@Ó@Ð(@×@×@×@×@×@×@×@Ð@r   c                 ó(  • UR                  SS 5        UR                  SSS j5        [        X5        U R                  S5      nUR                  nSoeU:H  ow(       dº  [        R
                  " SU4SXV45      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	[        R                  " U5      [        R                  " U5      S
.-  nSSU0-  n	[        [        R                  " U	5      5      eS =n=pvUR                  SS9n
So»U
;   oÌ(       d¥  [        R
                  " SU4SXº45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U
5      (       a  [        R                  " U
5      OSS.-  nSSU0-  n[        [        R                  " U5      5      eS =p¼So»U
;   oÌ(       d¥  [        R
                  " SU4SXº45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U
5      (       a  [        R                  " U
5      OSS.-  nSSU0-  n[        [        R                  " U5      5      eS =p¼g )Nz(app.routes.insights_routes.get_user_infoc                 ó   • SSS.$ )NrR   iˆ  )rT   Úlikes_countr	   rU   s    r   r   Ú$test_insights_page.<locals>.<lambda>b   s   € ÐeiÐz~ÒRr   z&app.routes.insights_routes.list_videosc                 ó    • SSSSSSSS./S	S
S.$ )NrY   ú	top videoéc   rr   r\   rs   rt   )r]   r^   r_   r`   rv   rw   rx   r   Fra   r	   rz   s      r   r   r°   e   sB   € ÀÐP[ÐkmÐ}~ð  RSð  deð  v@ñ  ;Að  :Bð  NOð  ]bò  /cr   z	/insightsr   r   r   r   r   r    r!   Tr"   r²   r$   rf   rg   rh   ri   r   zTop Videos by Views)é2   r   rk   rl   s                 r   Útest_insights_pagerµ   a   s}  € Ø×ÑÐBÑDô  AØ×ÑØ0ó 	côô 
ˆ&ÔØ�
‰
�;Ó€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØ�:‰:˜dˆ:Ð#€DØÐ˜$Ñ×××Òˆ;××Ôˆ;×××××Ô˜$×××Ñ˜$××××××ÓØ Ð( DÑ(×(×(×(Ò(Ð ×(×(Ô(Ð ×(×(×(×(×(Ô( D×(×(×(Ñ( D×(×(×(×(×(×(Ô(r   )Úbuiltinsr1   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter/   ÚpytestÚtests.conftestr   r   Úfixturer   rD   rN   rn   r}   r•   r¢   r¤   r©   r¬   rµ   r	   r   r   Ú<module>r½      s]   ðß  „ ƒç 4ð ‡�ñZó ðZò>ò-òò1ò=ò3òRòòAó)r   