
    %i"                         S r SSKrSSKJs  Jr  SSKJr  SSK	J
r
JrJr  SSKrSSKJr  SSKJrJr   " S S5      r " S	 S
5      r " S S5      rg)z#Tests for the backfill CLI command.    N)date)	AsyncMock	MagicMockpatch)	CliRunner)_subtract_monthsclic                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)TestSubtractMonths   z&Tests for the _subtract_months helper.c           	         [        [        SSS5      S5      nSnSnSn[        X#U5      oQU:H  of(       Gd7  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OSS	[        R
                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS	[        R                  " U5      [        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=pEg )N              ==zD%(py0)s == %(py10)s
{%(py10)s = %(py2)s(%(py4)s, %(py6)s, %(py8)s)
}resultr   py0py2py4py6py8py10assert %(py12)spy12
r   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation	selfr   @py_assert3@py_assert5@py_assert7@py_assert9@py_assert1@py_format11@py_format13s	            8/root/tipsharks/tipsharks-elo-api/tests/test_backfill.pytest_subtract_one_month*TestSubtractMonths.test_subtract_one_month       !$tQ"3Q7"*A*r*dr********v******v****v*************d***A***r************    c           	         [        [        SSS5      S5      nSnSnSn[        X#U5      oQU:H  of(       Gd7  [        R                  " SU4SX45      S	[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	S
[        R
                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS
[        R                  " U5      [        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=pEg )Nr      
      i     r   r   r   r   r   r   r   r    r)   s	            r2   test_subtract_across_year,TestSubtractMonths.test_subtract_across_year   s    !$tQ"3Q7"+B++d++++++++v++++++v++++v+++++++++++++d+++B+++++++++++++++r6   c           	         [        [        SSS5      S5      nSnSnSn[        X#U5      oQU:H  of(       Gd7  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OSS	[        R
                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS	[        R                  " U5      [        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=pEg )Nr   r           r   r   r   r   r   r   r   r    r)   s	            r2   test_subtract_multiple_years/TestSubtractMonths.test_subtract_multiple_years   s    !$tQ"2B7")A)q)dq))))))))v))))))v))))v)))))))))))))d)))A)))q))))))))))))r6   c           	         [        [        SSS5      S5      nSnSnSn[        X#U5      oQU:H  of(       Gd7  [        R                  " SU4SX45      S	[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	S
[        R
                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS
[        R                  " U5      [        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=pEg )Nr   r:      r   r8      r   r   r   r   r   r   r   r    r)   s	            r2   test_clamp_day_to_month_length1TestSubtractMonths.test_clamp_day_to_month_length   r5   r6   c           	         [        [        SSS5      S5      nSnSnSn[        X#U5      oQU:H  of(       Gd7  [        R                  " SU4SX45      S	[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	S
[        R
                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS
[        R                  " U5      [        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=pEg )NrA   r:   rE   r   r8      r   r   r   r   r   r   r   r    r)   s	            r2   test_leap_year_february*TestSubtractMonths.test_leap_year_february   r5   r6   c           	         [        [        SSS5      S5      nSnSnSn[        X#U5      oQU:H  of(       Gd7  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OSS[        R
                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        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=pEg )Nr   r   r?   r   r   r   r   r   r   r   r   r    r)   s	            r2   test_zero_months#TestSubtractMonths.test_zero_months#   s    !$tQ"2A6")A)q)dq))))))))v))))))v))))v)))))))))))))d)))A)))q))))))))))))r6    N)__name__
__module____qualname____firstlineno____doc__r3   r<   rB   rG   rK   rN   __static_attributes__rP   r6   r2   r   r      s#    0+,*++*r6   r   c                       \ rS rSrSr\R                  " SS9S 5       rS rS r	\R                  R                  S/ S	Q5      S
 5       rS rS rS rS rS rS rS rS rSrg)TestBackfillCommand(   z%Tests for the 'backfill' CLI command.T)autousec           	   #     #    [        S5       n[        S5       n[        S5       n[        5       nXAR                  R                  l        SUR                  R                  l        [        5       n[        SS9Ul        SS0Ul        XRl        S	Ul        UUUUUS
.v   SSS5        SSS5        SSS5        g! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g= f7f)z3Mock heavy dependencies (DB, ingestion, recompute).z#apps.backend.worker.cli.get_sessionz(apps.backend.worker.cli.IngestionServicez1packages.core.ratings.recompute.recompute_ratingsN)r9   d   i  )return_valueerrorsr   i  )get_session	ingestion	recomputesessionservice_instance)r   r   r]   	__enter____exit__r   ingest_date_rangestats)r*   mock_get_sessionmock_ingestionmock_recomputemock_sessionmock_service_instances         r2   
_mock_depsTestBackfillCommand._mock_deps+   s      78<L<=C %;LCO))33@BF))22? %.K!6?+7!3 ,4Q-!'*?' +/N'  0++'$9 ) > 98  >= 98sK   C*CCA8B7C&C.	C*7
CC
C	C
C'#C*c                    [        5       nUR                  [        SS/5      nUR                  nSnXE: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[        R                  " SUR                   S	UR                   35      S
-   SU0-  n[        [        R                  " U5      5      eS=n=peSoR                  oYU;   o(       d  [        R
                  " SU
4SX45      [        R                  " U	5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n	=pSoR                  oYU;   o(       d  [        R
                  " SU
4SX45      [        R                  " U	5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n	=pg)z1Test backfill with default options (--skip-eval).backfill--skip-evalr   r   z1%(py2)s
{%(py2)s = %(py0)s.exit_code
} == %(py5)sr   r   r   py5CLI exited with code : 
>assert %(py7)spy7NBackfillinz.%(py1)s in %(py5)s
{%(py5)s = %(py3)s.output
}py1py3rt   assert %(py7)s5000)r   invoker	   	exit_coder!   r"   r#   r$   r%   r&   _format_assertmsgoutputr'   r(   r*   rm   runnerr   r/   @py_assert4r+   @py_format6@py_format8@py_assert0@py_assert2s              r2   test_backfill_defaults*TestBackfillCommand.test_backfill_defaultsM   s   sZ$?@ 	G !	G!	G 	G5F5F	G	G 	G@F	G 	G.F.F	G	G 	G=FY	G	G 	G=FY	G	G 	G=FY	G !	G 	G5F5F	G"6#3#3"4Bv}}oF	G 	G 	G3F3F	G 	G *]]*]*****z***z******V****V***]*******&&&&&&&v&&&v&&&&&&&&&&&&&&&&&&&&r6   c                    [        5       nUR                  [        / SQ5      nUR                  nSnXE: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[        R                  " SUR                   SUR                   35      S	-   S
U0-  n[        [        R                  " U5      5      eS=n=peUS   R                  5         US   R                  u  pU
R                   nSod" U5      nSoUL o(       d  [        R
                  " SU4SX45      S[        R                  " 5       ;   d  [        R                  " U
5      (       a  [        R                  " U
5      OS[        R                  " U5      [        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=pU
R                   nSod" U5      nSoUL o(       d  [        R
                  " SU4SX45      S[        R                  " 5       ;   d  [        R                  " U
5      (       a  [        R                  " U
5      OS[        R                  " U5      [        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=pg)z.Test backfill with all options explicitly set.)
rp   --months6
--categoryT--sourcetab--clear--learn-adjustmentsrq   r   r   rr   r   rs   ru   rv   rw   rx   Nra   clear_existingT)is)zI%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
} is %(py9)skwargs)r   r   r   r   py9assert %(py11)spy11learn_adjustments)r   r   r	   r   r!   r"   r#   r$   r%   r&   r   r   r'   r(   assert_called_once	call_argsget)r*   rm   r   r   r/   r   r+   r   r   _argsr   r,   @py_assert8r-   @py_format10@py_format12s                   r2   test_backfill_with_all_options2TestBackfillCommand.test_backfill_with_all_optionsX   s   
" 	G !	G!	G 	G5F5F	G	G 	G@F	G 	G.F.F	G	G 	G=FY	G	G 	G=FY	G	G 	G=FY	G !	G 	G5F5F	G"6#3#3"4Bv}}oF	G 	G 	G3F3F	G 	G
 	;224";/99zz3*3z*+3t3t33333+333333v3333v333z333*333+333t3333333zz6-6z-.6$6$66666.666666v6666v666z666-666.666$66666666r6   months)r   r   r@   c                 n   [        5       nUR                  [        SS[        U5      S/5      nUR                  nSnXV: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[
        R                  " S	UR                   S
UR                   35      S-   SU0-  n	[        [
        R                  " U	5      5      eS=n=pvg)z Test various valid month values.rp   r   rq   r   r   rr   r   rs   ru   rv   rw   rx   N)r   r   r	   strr   r!   r"   r#   r$   r%   r&   r   r   r'   r(   )
r*   rm   r   r   r   r/   r   r+   r   r   s
             r2   test_backfill_valid_months.TestBackfillCommand.test_backfill_valid_monthsu   s=    *j#f+}E
 	G !	G!	G 	G5F5F	G	G 	G@F	G 	G.F.F	G	G 	G=FY	G	G 	G=FY	G	G 	G=FY	G !	G 	G5F5F	G"6#3#3"4Bv}}oF	G 	G 	G3F3F	G 	G 	Gr6   c                    [        5       nUR                  [        / SQ5      nUR                  nSoTU:g  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
oR                  oYU;   o(       d  [        R
                  " SU
4SX45      [        R                  " U	5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n	=pg	)z/Test months outside 1-24 are rejected by Click.)rp   r   25r   !=z1%(py2)s
{%(py2)s = %(py0)s.exit_code
} != %(py5)sr   rs   r   rx   NInvalid valuerz   r|   r}   r   r   r	   r   r!   r"   r#   r$   r%   r&   r'   r(   r   r   s              r2   )test_backfill_invalid_months_out_of_range=TestBackfillCommand.test_backfill_invalid_months_out_of_range   s    s$BC$1$1$$$$$$$$$$$v$$$$v$$$$$$1$$$$$$$/--/-//////////////&////&///-///////r6   c                    [        5       nUR                  [        / SQ5      nUR                  nSoTU:g  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
oR                  oYU;   o(       d  [        R
                  " SU
4SX45      [        R                  " U	5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n	=pg	)z,Test months=0 is rejected by Click IntRange.)rp   r   0r   r   r   r   rs   r   rx   Nr   rz   r|   r}   r   r   s              r2   !test_backfill_invalid_months_zero5TestBackfillCommand.test_backfill_invalid_months_zero   s    s$AB$1$1$$$$$$$$$$$v$$$$v$$$$$$1$$$$$$$/--/-//////////////&////&///-///////r6   c                    [        5       nUR                  [        / SQ5      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=peg	)
zTest with harness category.)rp   r   Hrq   r   r   rr   r   rs   r   rx   Nr   r   r	   r   r!   r"   r#   r$   r%   r&   r'   r(   	r*   rm   r   r   r/   r   r+   r   r   s	            r2   test_backfill_with_category_h1TestBackfillCommand.test_backfill_with_category_h   s    s$RS$1$1$$$$$$$$$$$v$$$$v$$$$$$1$$$$$$$r6   c                    [        5       nUR                  [        / SQ5      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=peg	)
zTest with ingest source.)rp   r   ingestrq   r   r   rr   r   rs   r   rx   Nr   r   s	            r2    test_backfill_with_source_ingest4TestBackfillCommand.test_backfill_with_source_ingest   s    s$UV$1$1$$$$$$$$$$$v$$$$v$$$$$$1$$$$$$$r6   c                 n   US   n[        S[        S5      S/S9Ul        [        5       nUR	                  [
        / SQ5      nUR                  nSnXV: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[        R                  " SUR                   35      S-   SU0-  n	[        [        R                   " U	5      5      eS=n=pvUR                  oUR"                  nSoU
:  o(       d  [        R                  " SU4SXz4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=pg)zDTest that individual week ingestion failures are handled gracefully.rc   )r   2      zAPI Timeout)   P   i  side_effectrp   r   1rq   r   r   rr   r   rs   z!Should handle errors gracefully: rw   rx   Nr8   )>=)zY%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.ingest_date_range
}.call_count
} >= %(py7)ssvc)r   r   r   rx   zassert %(py9)sr   )r   	Exceptionrf   r   r   r	   r   r!   r"   r#   r$   r%   r&   r   r   r'   r(   
call_count)r*   rm   r   r   r   r/   r   r+   r   r   @py_assert6r,   r   s                r2   &test_backfill_ingestion_error_handling:TestBackfillCommand.test_backfill_ingestion_error_handling   s   +, )-(!
 s$PQ 	? !	?!	? 	?->->	?	? 	?8>	? 	?&>&>	?	? 	?5>Y	?	? 	?5>Y	?	? 	?5>Y	? !	? 	?->->	?.v}}o>	? 	? 	?+>+>	? 	? $$4//414144444/444444s4444s444$444/44414444444r6   c                 ~   US   n[        [        S5      S9Ul        [        5       nUR	                  [
        / SQ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S   R                  5         SoR                   ofR"                  o" 5       oU;   o(       d  [        R                  " SU4SX4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=pg)z9Test when all ingestion weeks fail, recompute is skipped.rc   zTotal failurer   r   r   r   rr   r   rs   r   rx   Nra   zskipping recomputerz   )z`%(py1)s in %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.output
}.lower
}()
})r~   r   rt   rx   r   r   r   )r   r   rf   r   r   r	   r   r!   r"   r#   r$   r%   r&   r'   r(   assert_not_calledr   lower)r*   rm   r   r   r   r/   r   r+   r   r   r   r   r   r   r   r   s                   r2   test_backfill_all_weeks_fail0TestBackfillCommand.test_backfill_all_weeks_fail   sX   +, )i6P Qs$PQ$1$1$$$$$$$$$$$v$$$$v$$$$$$1$$$$$$$;113#<}}<':':<':'<<'<<<<<<#<<<#<<<<<<v<<<<v<<<}<<<':<<<'<<<<<<<<<r6   c                    [        S5      US   l        [        5       nUR                  [        / SQ5      nUR
                  nSoTU:g  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oR                  oYU;   o(       d  [        R                  " SU
4SX45      [        R                  " U	5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS=n	=pg)z-Test that recompute failure exits with error.zRecompute errorra   r   r   r   r   r   rs   r   rx   NzRecompute failedrz   r|   r}   )r   r   r   r   r	   r   r!   r"   r#   r$   r%   r&   r'   r(   r   r   s              r2   test_backfill_recompute_failure3TestBackfillCommand.test_backfill_recompute_failure   s   .78I.J
;+s$PQ$1$1$$$$$$$$$$$v$$$$v$$$$$$1$$$$$$$!2]]2]22222!222!222222V2222V222]2222222r6   c                    [        5       nUR                  [        / SQ5      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=peUS
   R                  5         US
   R                  u  pU
R                  S5      nUc  [        U	5      S:  a  U	S   nSoU:H  oD(       d  [        R
                  " SU4SX45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=pLg	)z9Test IngestionService is created with the correct source.)rp   r   r   r   r   rq   r   r   rr   r   rs   r   rx   Nr`   sourcer8   r   r   )z%(py0)s == %(py3)s
source_arg)r   r   zassert %(py5)srt   )r   r   r	   r   r!   r"   r#   r$   r%   r&   r'   r(   assert_calledr   r   len)r*   rm   r   r   r/   r   r+   r   r   
_call_args_call_kwargsr   r   @py_format4s                 r2   3test_backfill_ingestion_service_created_with_sourceGTestBackfillCommand.test_backfill_ingestion_service_created_with_source   s;   N

 $1$1$$$$$$$$$$$v$$$$v$$$$$$1$$$$$$$;--/#-k#:#D#D 
!%%h/
#j/Q"6#AJ%%X%%%%%z%%%%%%z%%%%z%%%X%%%%%%%r6   rP   N)rQ   rR   rS   rT   rU   pytestfixturerm   r   r   markparametrizer   r   r   r   r   r   r   r   r   rV   rP   r6   r2   rX   rX   (   sz    /^^D! "B	'7: [[X{3G 4G00%%5,=3&r6   rX   c                       \ rS rSrSrS rSrg)TestBackfillHelp   zTests for backfill help text.c                    [        5       nUR                  [        S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oR                  oHU;   o(       d  [        R
                  " SU	4SX45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pSoR                  oHU;   o(       d  [        R
                  " SU	4SX45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pSoR                  oHU;   o(       d  [        R
                  " SU	4SX45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pSoR                  oHU;   o(       d  [        R
                  " SU	4SX45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pSoR                  oHU;   o(       d  [        R
                  " SU	4SX45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pSoR                  oHU;   o(       d  [        R
                  " SU	4SX45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pSoR                  oHU;   o(       d  [        R
                  " SU	4SX45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pg
)z"Test backfill command help output.rp   z--helpr   r   rr   r   rs   r   rx   NzBackfill historical datarz   r|   r}   r   r   r   r   r   rq   r   )
r*   r   r   r/   r   r+   r   r   r   r   s
             r2   test_backfill_help#TestBackfillHelp.test_backfill_help   s   sZ$:;$1$1$$$$$$$$$$$v$$$$v$$$$$$1$$$$$$$):]]:]:::::):::)::::::V::::V:::]:::::::*]]*]*****z***z******V****V***]*******,}},},,,,,|,,,|,,,,,,v,,,,v,,,},,,,,,,*]]*]*****z***z******V****V***]*******)MM)M)))))y)))y))))))F))))F)))M)))))))$5555555$555$55555555555555555555-------}---}--------------------r6   rP   N)rQ   rR   rS   rT   rU   r   rV   rP   r6   r2   r   r      s
    '.r6   r   )rU   builtinsr#   _pytest.assertion.rewrite	assertionrewriter!   datetimer   unittest.mockr   r   r   r   click.testingr   apps.backend.worker.clir   r	   r   rX   r   rP   r6   r2   <module>r      s@    )     5 5  # 9* *8p& p&f. .r6   