
    ^Cj)                        d dl Zd dlmc mZ 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  e	d          Zd	ed
edefdZd
edededefdZd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)dS )    N)datedatetime)ZoneInfo)Sessionselect)engineinit_db)Child)child_timelineget_afternoon_leave_home_time get_first_afternoon_school_blockget_next_external_activityEurope/Zurichsessionnamereturnc                     |                      t          t                                        t          j        |k                                                        }|S )N)execr   r
   wherer   one)r   r   childs      P/home/agent/projects/FamilyDashboard/backend/tests/test_dashboard_lunch_modes.pychild_by_namer      s?    LL,,UZ4-?@@AAEEGGEL    targethourminutec           	         t                       t          t                    5 }t          ||           }t	          |j        |j        |j        ||t                    }t          |||d|          cd d d            S # 1 swxY w Y   d S )Ntzinfor   now)
r	   r   r   r   r   yearmonthdayTZr   )r   r   r   r   r   r   r"   s          r   timeline_forr'      s    III	 PGgt,,v{FL&*dFSUVVVgufo3OOOP P P P P P P P P P P P P P P P P Ps   AA==BBc                     t          dt          ddd          dd          } t          dt          ddd          dd          }| d         }d	}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d	}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d S )NEmilia           %   ValeriedayPhasemorning==z%(py1)s == %(py4)spy1py4assert %(py6)spy6primaryMessageu   Zähneputzen in 18 Min.remaining_minutes   morningTeethStartz07:55nextDepartureTime12:40minutesUntilNextDeparturei/  13:15iR  r'   r   
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanation)emiliavalerie@py_assert0@py_assert3@py_assert2@py_format5@py_format7s          r   Gtest_morning_countdown_uses_teeth_before_departure_not_afternoon_targetrO      sD   (Dq"$5$5q"==F9d4B&7&7B??G*************************************************"#@'@@#'@@@@@@@@@@@#'@@@@@@#@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@@%&,",&",,,,,,,,,,&",,,,,&,,,,",,,,,,,,,,,,,,,,,,,,,,,,,,,%&1'1&'1111111111&'11111&1111'111111111111111111111111111%&1'1&'1111111111&'11111&1111'111111111111111111111111111-.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555555555555555555:+)+)++++++++++)+++++++++)+++++++++++++++++++++++++++#$A(AA$(AAAAAAAAAAA$(AAAAAA$AAAA(AAAAAAAAAAAAAAAAAAAAAAAAAAAA&'-2-'2----------'2-----'----2---------------------------&'272'72222222222'722222'22227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&'272'72222222222'722222'22227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./636/36666666666/366666/66663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6r   c                  r   t          dt          ddd          dd          } | d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}| }||k    }|slt          j        d	|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}x}}d S )Nr)   r*   r+   r,   r-   :   r0   r1   r2   r4   r5   r8   r9   r:   zLoslaufen in 7 Min.r;   minutesUntilTeeth   )z%(py1)s == -%(py4)sassert %(py7)spy7rB   )	timelinerJ   rK   rL   rM   rN   @py_assert5@py_format6@py_format8s	            r   7test_morning_after_teeth_start_counts_down_to_departurerZ   2   s   Hd4B&7&7B??HJ,9,9,,,,,,,,,,9,,,,,,,,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,$%>)>>%)>>>>>>>>>>>%)>>>>>>%>>>>)>>>>>>>>>>>>>>>>>>>>>>>>>>>>'(-A-(A----------(A-----(----A---------------------------'(.Q.QB.(B..........(B.....(....Q...............................r   c                  <   t          dt          ddd          dd          } | d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}t          d | d         D                       }t          d | d         D                       }|d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d }||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d!         }d"}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d#         }d$}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d%         }d&}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d#         }d&}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d%         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d!         }d'}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d S )(Nr)   r*   r+         
   r0   lunch_breakr2   r4   r5   r8   r9   statusLevelcalmminutesUntilLeaveHomeA   afternoonLeaveHomeTimerA   afternoonSchoolStart13:30r:   zLoslaufen in 65 Min.c              3   2   K   | ]}|d          dk    |V  dS keylunchN .0steps     r   	<genexpr>zOtest_lunch_break_with_afternoon_school_at_1210_has_countdown.<locals>.<genexpr>D   s1      [[tDKSZDZDZdDZDZDZDZ[[r   timelineStepsc              3   2   K   | ]}|d          dk    |V  dS )ri   teeth_lunchNrk   rl   s     r   ro   zOtest_lunch_break_with_afternoon_school_at_1210_has_countdown.<locals>.<genexpr>E   s1      ccd5kUbFbFbFbFbFbFbccr   kindrangelabelMittagessen
shortLabelMittagicon   🍽️time11:50endTime13:00   🪥🚽 👟)r'   r   rC   rD   rE   rF   rG   next)rV   rJ   rK   rL   rM   rN   
lunch_stepprepare_steps           r   <test_lunch_break_with_afternoon_school_at_1210_has_countdownr   ;   sX
   Hd4B&7&7R@@HJ0=0=0000000000=000000000=000000000000000000000000000M",f,"f,,,,,,,,,,"f,,,,,",,,,f,,,,,,,,,,,,,,,,,,,,,,,,,,,+,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222222222222222222222,-88-8888888888-88888-8888888888888888888888888888888*+6w6+w6666666666+w66666+6666w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$%?)??%)???????????%)??????%????)????????????????????????????[[x'@[[[[[Jcc/)BcccccLf((((((((((((((((((((((((((((((((((((((((((((((((g/-/-//////////-/////////-///////////////////////////l#/x/#x//////////#x/////#////x///////////////////////////f************************************************f((((((((((((((((((((((((((((((((((((((((((((((((i +G+ G++++++++++ G+++++ ++++G+++++++++++++++++++++++++++*7*7**********7*********7***************************	"-g-"g----------"g-----"----g---------------------------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22222222222222222222222r   c                  h   t          dt          ddd          dd          } | d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }ddh}||v }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d S )Nr)   r*   r+   r\      r^   r0   r_   r2   r4   r5   r8   r9   r`   urgentrb      r:   zJetzt bereit machenzLoslaufen in 5 Min.inz%(py1)s in %(py4)srB   rV   rJ   rK   rL   rM   rN   s         r   "test_lunch_break_at_1310_is_urgentr   Q   s   Hd4B&7&7R@@HJ0=0=0000000000=000000000=000000000000000000000000000M".h."h.........."h....."....h...........................+,11,1111111111,11111,1111111111111111111111111111111$%W*?AV)WW%)WWWWWWWWWWW%)WWWWWW%WWWW)WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWr   c                  `   t          dt          ddd          dd          } | d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d S )Nr)   r*   r+   r\   r      r0   r_   r2   r4   r5   r8   r9   r`   later:   zJetzt loslaufenrB   r   s         r   0test_after_leave_before_school_is_late_now_leaver   Z   s'   Hd4B&7&7R@@HJ0=0=0000000000=000000000=000000000000000000000000000M",f,"f,,,,,,,,,,"f,,,,,",,,,f,,,,,,,,,,,,,,,,,,,,,,,,,,,$%:)::%):::::::::::%)::::::%::::)::::::::::::::::::::::::::::::r   c                  p   t          dt          ddd          dd          } | d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d S )Nr)   r*   r+   r\   r      r0   afternoon_schoolr2   r4   r5   r8   r9   r:   zNoch 94 Min.secondaryMessageu   Schule läuft bis 15:05minutesUntilSchoolEnd^   schoolEndTimez15:05rB   r   s         r   3test_after_afternoon_school_start_is_school_runningr   b   s   Hd4B&7&7R@@HJ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5555555555555555555555$%77%7777777777%77777%7777777777777777777777777777777&'D+DD'+DDDDDDDDDDD'+DDDDDD'DDDD+DDDDDDDDDDDDDDDDDDDDDDDDDDDD+,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222222222222222222222O$//$//////////$/////$/////////////////////////////////r   c                  ~   t          dt          ddd          dd          } | d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d |D             }d}||v}|st          j        d|fd||f          t          j        |          dt          j                    v st          j	        |          rt          j        |          nddz  }dd|iz  }	t          t          j        |	                    d x}}d |D             }
t          |
          }|sddt          j                    v st          j	        t                    rt          j        t                    ndt          j        |
          t          j        |          dz  }t          t          j        |                    d x}
}|d         d         }|d         d         }||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d         }d }||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d!         }d"}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d#         }d$}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d%}||v}|st          j        d|fd||f          t          j        |          dt          j                    v st          j	        |          rt          j        |          nddz  }dd|iz  }	t          t          j        |	                    d x}}|d         d         }|d&         d         }||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d&         d#         }d'}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d&         d         }|d(         d         }||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d(         d         }|d)         d         }||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d*         }d+}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d)         d*         }d,}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d- |D             }
t          |
          }|sddt          j                    v st          j	        t                    rt          j        t                    ndt          j        |
          t          j        |          dz  }t          t          j        |                    d x}
}t          d.t          ddd          dd          }d/ |d         D             }|d         d*         }d0}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d S )1Nr/   r*   r+   r   r^   r   r0   school_runningr2   r4   r5   r8   r9   rp   c                      i | ]}|d          |S ri   rk   rl   s     r   
<dictcomp>zZtest_school_running_today_timeline_keeps_lunch_teeth_and_no_end_marker.<locals>.<dictcomp>q   s    222Dd5k4222r   
school_endnot inz%(py1)s not in %(py3)sby_keyr6   py3assert %(py5)spy5c              3   .   K   | ]}|d          dk    V  dS )rw   EndeNrk   rl   s     r   ro   zYtest_school_running_today_timeline_keeps_lunch_teeth_and_no_end_marker.<locals>.<genexpr>s   s,      >>tL!V+>>>>>>r   ,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}allpy0py2r7   morning_schoolr}   rj   r{   ru   rv   rw   rx   ry   rz   r_   rr   r   way_to_schoolr   detailzHeute Morgen: SchulezHeute Nachmittag: Turnenc              3   .   K   | ]}|d          dk    V  dS ri   homeworkNrk   rl   s     r   ro   zYtest_school_running_today_timeline_keeps_lunch_teeth_and_no_end_marker.<locals>.<genexpr>   s+      ;;TtE{j(;;;;;;r   r)   c                      i | ]}|d          |S r   rk   rl   s     r   r   zZtest_school_running_today_timeline_keeps_lunch_teeth_and_no_end_marker.<locals>.<dictcomp>   s    TTT4T%[$TTTr   zHeute Morgen: Turnen)r'   r   rC   rD   rE   rF   rG   @py_builtinslocals_should_repr_global_namer   )rV   rJ   rK   rL   rM   rN   stepsr   @py_format4rX   @py_assert1emilia_timelineemilia_by_keys                r   Ftest_school_running_today_timeline_keeps_lunch_teeth_and_no_end_markerr   l   s   ItD!R'8'8"a@@HJ3#33#33333333333#3333333333#3333333333333333333333333333_%E22E222F%<v%%%%%%%%%%<v%%%%%<%%%%%%%%%%%v%%%%%v%%%%%%%%%%%%%%%%%%%%%%%%%%%>>>>>>3>>>>>>>>>>>>>>>>3>>>>>3>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"#I.I&/&2II.2IIIIIIIIIII.2IIIIII.IIII2IIIIIIIIIIIIIIIIIIIIIIIIIIII'?7#4}4#}4444444444#}44444#4444}444444444444444444444444444'?<(4H4(H4444444444(H44444(4444H444444444444444444444444444'?6"/i/"i//////////"i/////"////i///////////////////////////&=&&&&&&&&&&=&&&&&=&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'?9%F)>v)FF%)FFFFFFFFFFF%)FFFFFF%FFFF)FFFFFFFFFFFFFFFFFFFFFFFFFFFF- (;O;(O;;;;;;;;;;(O;;;;;(;;;;O;;;;;;;;;;;;;;;;;;;;;;;;;;;- +Nvo/Fv/NN+/NNNNNNNNNNN+/NNNNNN+NNNN/NNNNNNNNNNNNNNNNNNNNNNNNNNNN/"9-S8J1KF1SS-1SSSSSSSSSSS-1SSSSSS-SSSS1SSSSSSSSSSSSSSSSSSSSSSSSSSSS"#H-G1GG-1GGGGGGGGGGG-1GGGGGG-GGGG1GGGGGGGGGGGGGGGGGGGGGGGGGGGG$%h/M3MM/3MMMMMMMMMMM/3MMMMMM/MMMM3MMMMMMMMMMMMMMMMMMMMMMMMMMMM;;U;;;;3;;;;;;;;;;;;;;;;3;;;;;3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"8T$2->->AFFOTT??3STTTM)*84N8NN48NNNNNNNNNNN48NNNNNN4NNNN8NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNr   c                     t          dt          ddd          dd          } | d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }ddh}||v }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||u }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         d         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}t          d  | d!         D                       }t          d" | d!         D                       }|d#         }d$}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d%         }d&}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d#         }d}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d'         }d(}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d)         }d*}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d%         }d+}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d,         }d-}||k    }|slt          j        d	|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d. | d!         D             }t          |          }|sd/d0t          j
                    v st          j        t                    rt          j        t                    nd0t          j        |          t          j        |          d1z  }t          t          j        |                    d x}}d S )2Nr)   r*   r+   r   r]   r^   r0   r_   r2   r4   r5   r8   r9   r`   ra   soonr   r   r:   zLoslaufen in 30 Min.nextDepartureTargetGitarrer>   r?   hasAfternoonSchoolFisz%(py1)s is %(py4)snextExternalActivitytitleGitarre ZI 205c              3   2   K   | ]}|d          dk    |V  dS rh   rk   rl   s     r   ro   zZtest_child_without_afternoon_school_is_afternoon_free_and_external_hint.<locals>.<genexpr>   s0      VV$tE{g?U?U?U?U?U?UVVr   rp   c              3   2   K   | ]}|d          dk    |V  dS )ru   r   Nrk   rl   s     r   ro   zZtest_child_without_afternoon_school_is_afternoon_free_and_external_hint.<locals>.<genexpr>   s1      bb4WQa@a@a$@a@a@a@abbr   ru   rv   ry   rz   r{   z12:50r}   rA   u   🎸r   z Heute Nachmittag: Gitarre ZI 205c              3   .   K   | ]}|d          dk    V  dS r   rk   rl   s     r   ro   zZtest_child_without_afternoon_school_is_afternoon_free_and_external_hint.<locals>.<genexpr>   s+      OOTtE{j(OOOOOOr   r   r   r   )r'   r   rC   rD   rE   rF   rG   r   r   r   r   r   )	rV   rJ   rK   rL   rM   rN   rj   guitarr   s	            r   Gtest_child_without_afternoon_school_is_afternoon_free_and_external_hintr      sp
   Hd4B&7&7R@@HJ0=0=0000000000=000000000=000000000000000000000000000M"6vv&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66666666666666666666666$%?)??%)???????????%)??????%????)????????????????????????????)*7i7*i7777777777*i77777*7777i777777777777777777777777777'(3G3(G3333333333(G33333(3333G333333333333333333333333333()2U2)U2222222222)U22222)2222U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*+G4H8HH48HHHHHHHHHHH48HHHHHH4HHHH8HHHHHHHHHHHHHHHHHHHHHHHHHHHHVV(?";VVVVVEbb8O#<bbbbbF>*]*>]**********>]*****>****]***************************=%I%=I%%%%%%%%%%=I%%%%%=%%%%I%%%%%%%%%%%%%%%%%%%%%%%%%%%'?...?...........?......?................................&>$W$>W$$$$$$$$$$>W$$$$$>$$$$W$$$$$$$$$$$$$$$$$$$$$$$$$$$)''''''''''''''''''''''''''''''''''''''''''''''''&>#V#>V##########>V#####>####V###########################(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOOXo5NOOOO3OOOOOOOOOOOOOOOO3OOOOO3OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOr   c                  	   t          dt          ddd          dd          } | d         }d}||k    }|slt          j        d|fd	||f          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j        |                    d x}x}}| d         }d}||k    }|slt          j        d|fd	||f          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j        |                    d x}x}}| d         }t          d |D                       }t          d |D                       }|d         }d}||k    }|slt          j        d|fd	||f          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d|fd	||f          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j        |                    d x}x}}d t          ||dd                    D             }	t          |	          }| }
|
sddt          j                    v st          j        t                    rt          j        t                    ndt          j        |	          t          j        |          dz  }t          t          j        |                    d x}	x}}
|d         }d}||k    }|slt          j        d|fd	||f          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d|fd	||f          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d|fd	||f          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j        |                    d x}x}}d S )Nr)   r*   r+   r   r   r0   afternoon_freer2   r4   r5   r8   r9   r:   zNachmittag freirp   c              3   J   K   | ]}|d          dk    |d         dk    |V  dS )ru   Freir{   rA   Nrk   rl   s     r   ro   zJtest_emilia_after_guitar_is_free_with_dinner_far_target.<locals>.<genexpr>   s?      ^^$w-6*A*Ad6lV]F]F]F]F]F]F]^^r   c              3   2   K   | ]}|d          dk    |V  dS )ri   dinnerNrk   rl   s     r   ro   zJtest_emilia_after_guitar_is_free_with_dinner_far_target.<locals>.<genexpr>   s0      DD4DK8,C,C$,C,C,C,CDDr   ry   u   🌿r}   z18:00c              3      K   | ]e\  }}|                     d           dk    oD|                     d          |                     d          k    o|                     d           dk    V  fdS )ru   r   r}   r{   N)get)rm   rn   	next_steps      r   ro   zJtest_emilia_after_guitar_is_free_with_dinner_far_target.<locals>.<genexpr>   s        D) 	V#y(;(;y}}V?T?T(TyYbYfYfgnYoYosyYy     r      z0assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}anyr   ru   
Nachtessenr{   rz   )r'   r   rC   rD   rE   rF   rG   r   zipr   r   r   r   )rV   rJ   rK   rL   rM   rN   r   freer   r   rW   rX   s               r   7test_emilia_after_guitar_is_free_with_dinner_far_targetr      sI   Hd4B&7&7R@@HJ3#33#33333333333#3333333333#3333333333333333333333333333$%:)::%):::::::::::%)::::::%::::)::::::::::::::::::::::::::::_%E^^^^^^^DDD5DDDDDF<!6!<6!!!!!!!!!!<6!!!!!<!!!!6!!!!!!!!!!!!!!!!!!!!!!!!!!!	?%g%?g%%%%%%%%%%?g%%%%%?%%%%g%%%%%%%%%%%%%%%%%%%%%%%%%%% "5%)44   s                                                  '?*l*?l**********?l*****?****l***************************&>$W$>W$$$$$$$$$$>W$$$$$>$$$$W$$$$$$$$$$$$$$$$$$$$$$$$$$$&>&Y&>Y&&&&&&&&&&>Y&&&&&>&&&&Y&&&&&&&&&&&&&&&&&&&&&&&&&&&&&r   c                  f   t          dt          ddd          dd          } d | d         D             }|d	         d
         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d	         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d}||v}|st          j        d|fd||f          t          j        |          dt          j                    v st          j	        |          rt          j        |          nddz  }dd|iz  }t          t          j        |                    d x}}|d         d
         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d
         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d          d
         }d!}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d          d         }d"}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d S )#Nr/   r*   r+   r   r]   r^   c                      i | ]}|d          |S r   rk   rl   s     r   r   zPtest_valerie_tuesday_lunch_has_no_pause_gap_and_school_icons.<locals>.<dictcomp>   s    FFFDd5k4FFFr   rp   rj   r{   r|   r2   r4   r5   r8   r9   r}   r~   r_   r   r   r   r   r   r   rr   rA   ry   r   r   u   🚶r   rf   u   🏫)
r'   r   rC   rD   rE   rF   rG   r   r   r   )	rV   r   rJ   rK   rL   rM   rN   r   rX   s	            r   <test_valerie_tuesday_lunch_has_no_pause_gap_and_school_iconsr      s   ItD!R'8'8"bAAHFFH_,EFFFF'?6"-g-"g----------"g-----"----g---------------------------'?9%00%0000000000%00000%0000000000000000000000000000000&=&&&&&&&&&&=&&&&&=&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&- (3G3(G3333333333(G33333(3333G333333333333333333333333333- +6w6+w6666666666+w66666+6666w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- (;O;(O;;;;;;;;;;(O;;;;;(;;;;O;;;;;;;;;;;;;;;;;;;;;;;;;;;/"6*5g5*g5555555555*g55555*5555g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/"6*4f4*f4444444444*f44444*4444f444444444444444444444444444$%f-88-8888888888-88888-8888888888888888888888888888888$%f-77-7777777777-77777-777777777777777777777777777777777r   c                     t                       t          t                    5 } t          | d          }t	          ddd          }|j        }t          | ||          }d }||u }|st          j        d|fd||f          dt          j
                    v st          j        t                    rt          j        t                    nddt          j
                    v st          j        |           rt          j        |           ndd	t          j
                    v st          j        |          rt          j        |          nd	t          j        |          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}x}}t          | ||          }	d }
|	|
u }|snt          j        d|fd|	|
f          dt          j
                    v st          j        t                    rt          j        t                    nddt          j
                    v st          j        |           rt          j        |           ndd	t          j
                    v st          j        |          rt          j        |          nd	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}}
t!          | |j        |          }|j        }d}	||	k    }|st          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}}	t	          ddd          }t          | ||          }	|	j        }d} ||          }d}||k    }|st          j        d|fd||f          dt          j
                    v st          j        t                    rt          j        t                    nddt          j
                    v st          j        |           rt          j        |           ndd	t          j
                    v st          j        |          rt          j        |          nd	dt          j
                    v st          j        |          rt          j        |          ndt          j        |	          t          j        |          t          j        |          t          j        |          t          j        |          d 	z  }d!d"|iz  }t          t          j        |                    d x}	x}x}x}x}}d d d            d S # 1 swxY w Y   d S )#Nr)   r*   r+   r   r   )z[%(py7)s
{%(py7)s = %(py0)s(%(py1)s, %(py4)s
{%(py4)s = %(py2)s.id
}, %(py5)s)
} is %(py10)sr   r   rH   r   )r   r6   r   r7   r   rU   py10zassert %(py12)spy12)zB%(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py2)s, %(py3)s)
} is %(py8)sr   )r   r6   r   r   r   py8zassert %(py10)sr   r   r2   )z-%(py2)s
{%(py2)s = %(py0)s.title
} == %(py5)sexternal)r   r   r   rT   rU   r\   minutes)timespecrA   )z%(py11)s
{%(py11)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py2)s, %(py3)s)
}.isoformat
}(timespec=%(py9)s)
} == %(py14)smonday)	r   r6   r   r   r   rU   py9py11py14zassert %(py16)spy16)r	   r   r   r   r   idr   rC   rD   r   r   r   rE   rF   rG   r   r   r   	isoformat)r   rH   r   rK   @py_assert6@py_assert9@py_assert8@py_format11@py_format13@py_assert4@py_assert7@py_format9r   r   rX   rY   r   @py_assert10@py_assert13@py_assert12@py_format15@py_format17s                         r   Itest_external_activity_does_not_count_as_school_and_commute_is_15_minutesr      s   III	 	oGw11dAr""9?S/FKKStSKtSSSSSSSSSSKtSSSSSSSSSSSS/SSSSS/SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSFSSSSSFSSSSSSKSSSStSSSSSSSSSSSSSSSSSSSSSSSSSSSSS,WffEEMMEMMMMMMMMMMEMMMMMMMMMMMM,MMMMM,MMMMMMMMMMMMMWMMMMMWMMMMMMMMMMMMMfMMMMMfMMMMMMMMMMMMMfMMMMMfMMMMMMEMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-gvy&II~1!11~!11111111111~!1111111111111x11111x111111~1111!1111111111111111111111111111dAr"",WffEEnEOnYbnOOYbcccngnncgnnnnnnnnnnncgnnnnnnnnnnnnn,nnnnn,nnnnnnnnnnnnnWnnnnnWnnnnnnnnnnnnnfnnnnnfnnnnnnnnnnnnnfnnnnnfnnnnnnEnnnnOnnnnYbnnnncnnnngnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	os   X&YYYc                  |   t                       t          ddd          } t          dddddt                    }t	          t
                    5 }t          |d          }t          |d          }t          ||| d	|
          }t          ||| d	|
          }d d d            n# 1 swxY w Y   |d         }d}||k    }	|	slt          j	        d|	fd||f          t          j
        |          t          j
        |          dz  }
dd|
iz  }t          t          j        |                    d x}x}	}|d         }d}||k    }	|	slt          j	        d|	fd||f          t          j
        |          t          j
        |          dz  }
dd|
iz  }t          t          j        |                    d x}x}	}|d         }d}||k    }	|	slt          j	        d|	fd||f          t          j
        |          t          j
        |          dz  }
dd|
iz  }t          t          j        |                    d x}x}	}|d         }d}||u }	|	slt          j	        d|	fd||f          t          j
        |          t          j
        |          dz  }
dd|
iz  }t          t          j        |                    d x}x}	}d S )Nr*   r+   r   r]   r^   r   r)   r/   r   r!   r0   r_   r2   r4   r5   r8   r9   r   r   r   Tr   r   )r	   r   r   r&   r   r   r   r   rC   rD   rE   rF   rG   )r   r"   r   rH   rI   r   valerie_timelinerJ   rK   rL   rM   rN   s               r   7test_different_children_can_have_different_lunch_phasesr      s   III$2F
4BBr
2
2
2C	 ^Gw1133(&&/WZ[[[)'7FOY\]]]	^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ :&7-7&-7777777777&-77777&7777-77777777777777777777777777701>Y>1Y>>>>>>>>>>1Y>>>>>1>>>>Y>>>>>>>>>>>>>>>>>>>>>>>>>>>J'8=8'=8888888888'=88888'8888=888888888888888888888888888019T91T99999999991T9999919999T99999999999999999999999999999s   A	B##B'*B'c                     t          dt          ddd          dd          } t          d | d         D                       }|d         }d	}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d
|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d S )Nr)   r*   r+   r\      c              3   2   K   | ]}|d          dk    |V  dS )ri   r   Nrk   rl   s     r   ro   zNtest_external_activity_renders_as_time_range_with_real_name.<locals>.<genexpr>   s1      \\T$u+Q[B[B[DB[B[B[B[\\r   rp   rs   rt   r2   r4   r5   r8   r9   rw   u   Mädchenrieger{   z17:30r}   z19:00emphasisr   )r'   r   r   rC   rD   rE   rF   rG   )rV   r   rJ   rK   rL   rM   rN   s          r   ;test_external_activity_renders_as_time_range_with_real_namer     s   Hd4B&7&7R@@H\\Xo%>\\\\\HF&w&w&&&&&&&&&&w&&&&&&&&&w&&&&&&&&&&&&&&&&&&&&&&&&&&&L!4_4!_4444444444!_44444!4444_444444444444444444444444444F&w&w&&&&&&&&&&w&&&&&&&&&w&&&&&&&&&&&&&&&&&&&&&&&&&&&I)')'))))))))))')))))))))')))))))))))))))))))))))))))J-:-:----------:---------:-----------------------------r   c                  l	   t                       t          ddd          } t          dddddt                    }t	          t
                    5 }t          |d          }t          ||| d	|
          }d d d            n# 1 swxY w Y   d |d         D             }|d         }d}||k    }|slt          j	        d|fd||f          t          j
        |          t          j
        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}|d         }d}||k    }|slt          j	        d|fd||f          t          j
        |          t          j
        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}d}||v }|st          j	        d|fd||f          t          j
        |          dt          j                    v st          j        |          rt          j
        |          nddz  }dd|iz  }t          t          j        |                    d x}}d}||v }|st          j	        d|fd||f          t          j
        |          dt          j                    v st          j        |          rt          j
        |          nddz  }dd|iz  }t          t          j        |                    d x}}d}||v }|st          j	        d|fd||f          t          j
        |          dt          j                    v st          j        |          rt          j
        |          nddz  }dd|iz  }t          t          j        |                    d x}}|d         }d}||k    }|slt          j	        d|fd||f          t          j
        |          t          j
        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}d }||v }|st          j	        d|fd||f          t          j
        |          dt          j                    v st          j        |          rt          j
        |          nddz  }dd|iz  }t          t          j        |                    d x}}d S )!Nr*   r+   r   r\      r   r   r/   r   r!   c                     g | ]
}|d          S )rw   rk   rl   s     r   
<listcomp>zWtest_future_day_shows_full_day_from_wake_to_sleep_without_los_label.<locals>.<listcomp>   s    GGGTd< GGGr   rp   nowLabelz
Ganzer Tagr2   r4   r5   r8   r9   AufSchuler   )z%(py1)s in %(py3)slabelsr   r   r   rx   r   SchlafenLos)r	   r   r   r&   r   r   r   r   rC   rD   rE   rF   rG   r   r   r   )r   r"   r   rI   rV   r  rJ   rK   rL   rM   rN   r   rX   s                r   Ctest_future_day_shows_full_day_from_wake_to_sleep_without_los_labelr     s   III$2F
4BAb
1
1
1C	 VG33!'7FOQTUUUV V V V V V V V V V V V V V V HGXo-FGGGFJ/</<//////////</////////<///////////////////////////!99998v8v8vv8v8v8vv6V6V6VV":##:##########:#####:###############################5F?5F5FFs   %A??BB)*builtinsr   _pytest.assertion.rewrite	assertionrewriterC   r   r   zoneinfor   sqlmodelr   r   app.db.sessionr   r	   
app.modelsr
   app.services.dashboardr   r   r   r   r&   strr   intr'   rO   rZ   r   r   r   r   r   r   r   r   r   r   r  r  rk   r   r   <module>r     s"                 # # # # # # # #       $ $ $ $ $ $ $ $ * * * * * * * *                  Xo7 # %    
Ps PD P PS P P P P7 7 7&/ / /3 3 3,X X X; ; ;0 0 0O O O4P P P,' ' '&8 8 8 o o o: : : . . .    r   