
    2jz                         d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZmZmZmZ d dlmZ d dlmZ  ee          Zd	efd
Zdded	efdZd Zd Zd Zd Zd Z dS )    )date	timedelta)
TestClient)Sessionselect)engineseed_database)app)CoinTransactionTaskInstanceTaskKind
TaskStatusTaskTemplate)finalize_day)admin_headersreturnc                      t                               dt          t                                                               d         d         d         S )N/api/admin/childrenheaderschildrenr   id)clientgetr   json     0backend/tests/test_task_template_deactivation.py	_child_idr      s?    ::+]65J5J:KKPPRRS]^_`abfggr   test-deactivate-taskTest Pflichtchild_idc                     t                               d| |||dddddd          }|j        d	k    sJ |                                d
         S )N/api/admin/task-templatesrequiredr   0,1,2,3,4,5,6Tr"   slugtitlekind
coin_valuepenalty_valueapplies_weekdaysactiver   r      task_template)r   poststatus_coder   )r   r"   r)   r*   responses        r   _create_templater6      si    {{6+	O 	O{ 	 	H 3&&&&==???++r   c                     t          j                    } t          t                    5 }t	          |          }|                    d|                                          d         d         d         }|                    d||ddd	dd
ddd                                          d         }|                    dd|                                 i          }t          d |                                d         D                       sJ |
                    d|d          |          }|                    dd|                                 i          }d d d            n# 1 swxY w Y   |j        dk    sJ |                                d         dk    sJ t          d |                                d         D                       rJ d S )Nr   r   r   r   r   r$   zhide-today-taskHeute ausblendenr%   r&   r'   Tr(   r0   r2   /api/dashboardr   paramsc              3   P   K   | ]!}|d          d         D ]}|d         dk    V  "dS tasksopenr*   r8   Nr   .0childtasks      r   	<genexpr>zItest_deactivate_template_hides_existing_today_instance.<locals>.<genexpr>,   sh        A  A5inoviwx~i  A  Aae4=$66  A  A  A  A  A  A  Ar   /api/admin/task-templates/   cancelled_instances   c              3   P   K   | ]!}|d          d         D ]}|d         dk    V  "dS r=   r   r@   s      r   rD   zItest_deactivate_template_hides_existing_today_instance.<locals>.<genexpr>1   sl        B  B5jopwjxy  kA  B  Bbf4=$66  B  B  B  B  B  B  Br   )r   todayr   r
   r   r   r   r3   	isoformatanydeleter4   )rJ   local_clientr   r"   templatefirstdeletedseconds           r   6test_deactivate_template_hides_existing_today_instancerS   "   sg   JLLE	C 
XL--##$97#KKPPRRS]^_`abfg$$%@' *;FXblboaeY
 Y
$   466/#   !165??CTCT:U VV  A  AEJJLLQ[D\  A  A  A  A  A  	A  	A  A%%&S8D>&S&S]d%ee!!"2FEOODUDU;V!WW
X 
X 
X 
X 
X 
X 
X 
X 
X 
X 
X 
X 
X 
X 
X #%%%%<<>>/0A5555  B  BFKKMMR\D]  B  B  B  B  B  B  B  B  B  Bs   D-E!!E%(E%c                  8   t          j                    t          d          z   } t          t                    5 }t          |          }|                    d|                                          d         d         d         }|                    d||d	d
dddddd                                          d         }|                    dd	                                i           |                    dd| 	                                i           |
                    d|d          |          }d d d            n# 1 swxY w Y   |j        dk    sJ t          t                    5 }|                    t          t                                         t           j        |d         k                                                        }t)          |          dk    sJ t'          fd|D                       sJ 	 d d d            d S # 1 swxY w Y   d S )NrH   daysr   r   r   r   r   r$   zcancel-open-futurezOffen cancelnr%   r&   r'   Tr(   r0   r2   r9   r   r:   rE   rF      c              3   X   K   | ]$}|j         k    |j        t          j        k    V  %d S )N)	task_datestatusr   	cancelled)rA   rowrJ   s     r   rD   zQtest_delete_template_cancels_open_current_and_future_instances.<locals>.<genexpr>E   s:      ``#Z_I_I_3:!55I_I_I_I_``r   )r   rJ   r   r   r
   r   r   r   r3   rK   rM   r4   r   r   execr   r   wheretask_template_idalllen)	tomorrowrN   r   r"   rO   r5   sessionrowsrJ   s	           @r   >test_delete_template_cancels_open_current_and_future_instancesre   4   s   JLLEya((((H	C 	gL--##$97#KKPPRRS]^_`abfg$$%@' *>blboaeY
 Y
$   466/# 	)65??;L;L2MNNN)68;M;M;O;O2PQQQ&&'THTN'T'T^e&ff	g 	g 	g 	g 	g 	g 	g 	g 	g 	g 	g 	g 	g 	g 	g 3&&&&	 aG||F<0066|7TX`aeXf7fgghhllnn4yyA~~~~`````````````a a a a a a a a a a a a a a a a a as%   C:EE	E.BHHHc                  r   t          j                    } t          t                    5 }t	          |          }|                    d|                                          d         d         d         }|                    d||ddd	d
dddd                                          d         }|                    dd|                                 i                                          }t          d |d         D                       }|                    d|d          dddi          }|j
        dk    sJ |                    d|d          |           d d d            n# 1 swxY w Y   t          t                    5 }|                    t          |d                   }	|	j        t           j        k    sJ |                    t'          t(                                        t(          j        |d         k                                                        J 	 d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r$   zdone-stays-doneErledigt bleibtbonusrW   r'   Tr(   r0   r2   r9   r   r:   c              3   T   K   | ]#}|d          d         D ]}|d         dk    |V  $dS )r>   r?   r*   rg   Nr   r@   s      r   rD   zMtest_done_instances_not_modified_when_template_deactivated.<locals>.<genexpr>R   s}        F  FUgW]H^  F  Fbfgnbo  tE  cE  cED  cE  cE  cE  cE  cE  F  Fr   z/api/tasks/z	/completeidempotency_key)r   rF   rE   )r   rJ   r   r
   r   r   r   r3   rK   nextr4   rM   r   r   r   rZ   r   doner]   r   r   r^   task_instance_idrP   )
rJ   rN   r   r"   rO   	dashboardrC   rl   rc   instances
             r   :test_done_instances_not_modified_when_template_deactivatedrp   H   s   JLLE	C \L--##$97#KKPPRRS]^_`abfg$$%@' *;FWaha_`dY
 Y
$   466/# !$$%5vuGXGX>Y$ZZ__aa	  F  Fi
&;  F  F  F  F  F  !DtDz!D!D!DL]_pKq rr3&&&&I$IISZ[[[\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 
 G;;|T$Z88*/1111||F?3399/:Z^bcg^h:hiijjpprr~~~~                 s%   D0E$$E(+E(BH,,H03H0c                  ,   t          j                    t          d          z
  } t          t                    5 }t          dddt          j        dddd	          }|                    |           |	                                 t          |j        d| dt          j        dt          j        
          }|                    |           |                                 t          || t          j                              }|                                 |                    t#          t$                                        t$          j        |j        k                                                        }d d d            n# 1 swxY w Y   |g k    sJ |J d S )NrH   rU   zinactive-requiredzInactive requiredr   Fr'   )r"   r)   r*   r+   r,   r-   r/   r.   )r_   r"   rY   r*   r+   r-   rZ   )r   rJ   r   r   r   r   r   r%   addflushr   r   r   r?   commitr   r]   r   r   r^   rm   rP   )	yesterdayrc   rO   rC   bookedtxs         r   1test_finalize_day_ignores_inactive_template_tasksry   \   s   
ya0000I	 	nG1DL_fnfw  EF  VX  af  yH  I  I  IHX[1PYat  |D  |M  ]_  hr  hw  x  x  xDgy$*,,??\\&11778X\`\c8cddeekkmm	n 	n 	n 	n 	n 	n 	n 	n 	n 	n 	n 	n 	n 	n 	n R<<<<:::::s   D8E==FFc            	         t          t                    5 } t          dddt          j        dd          }|                     |           |                                  |j        }d d d            n# 1 swxY w Y   t                       t          t                    5 } | 	                    t          |          }d d d            n# 1 swxY w Y   |j
        du sJ d S )NrH   zzaehneputzen-morgenu   Zähneputzen morgensFr&   )r"   r)   r*   r+   r/   r-   )r   r   r   r   r%   rs   ru   r   r	   r   r/   )rc   rO   template_idstoreds       r   7test_seed_does_not_reactivate_deactivated_toothbrushingr}   l   sQ   	 "G1FNdksk|  FK  []  ^  ^  ^Hk	" " " " " " " " " " " " " " "
 OOO	 8G\;778 8 8 8 8 8 8 8 8 8 8 8 8 8 8=E!!!!!!s$   AA11A58A5CC
C
N)r    r!   )!datetimer   r   fastapi.testclientr   sqlmodelr   r   app.db.sessionr   r	   app.mainr
   
app.modelsr   r   r   r   r   app.services.day_closer   tests.conftestr   r   intr   dictr6   rS   re   rp   ry   r}   r   r   r   <module>r      sr   $ $ $ $ $ $ $ $ ) ) ) ) ) ) $ $ $ $ $ $ $ $ 0 0 0 0 0 0 0 0       X X X X X X X X X X X X X X / / / / / / ( ( ( ( ( (	Ch3 h h h h, , ,cg , , , ,B B B$a a a(  (   	" 	" 	" 	" 	"r   