
    2j!                         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 d dlmZ d dlmZmZmZmZmZ d dlmZ  e
e          Zd	efd
Zd Zd Zd Zd Z d Z!d Z"d Z#dS )    N)date	timedelta)
TestClient)Sessionselect)engine)app)ChildExamStudyPlanItemTaskInstance
TaskStatus)admin_headersreturnc                     t          t                    5 } |                     t          t                                        t          j                                                            j        cd d d            S # 1 swxY w Y   d S N)	r   r   execr   r
   order_by
sort_orderfirstid)sessions    C/home/agent/projects/FamilyDashboard/backend/tests/test_calendar.pyfirst_child_idr      s    	 QG||F5MM2253CDDEEKKMMPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs   AA==BBc                  ^   t                      } t          ddd          }t                              dt	          t                    | dd|                                ddd	
          }|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}}|                                d         d         t!          t"                    5 }|                    t'          t(                                        t(          j        k                                  t(          j                                                            }	d |	D             }
t          ddd          t          ddd          t          ddd          g}|
|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             }t3          |          }|sddt          j
                    v st          j        t2                    rt          j        t2                    nddt          j
                    v st          j        |          rt          j        |          ndt          j        |          d z  }t          t          j        |                    d }|                    t'          t4                                        t4          j                            |                                                              }d! |D             }
d"h}|
|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            n# 1 swxY w Y   t                              d#d$dd%&          }|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}}|                                d)         }t=          |          }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)t          j        |          t          j        |          d-z  }d.d/|iz  }t          t          j        |                    d x}x}}d0 |D             }t?          |          }|sd1d2t          j
                    v st          j        t>                    rt          j        t>                    nd2t          j        |          t          j        |          d3z  }t          t          j        |                    d x}}fd4|D             }tA          |          }d}||k    }|st          j        d|fd5||f          d6t          j
                    v st          j        t@                    rt          j        t@                    nd6t          j        |          t          j        |          t          j        |          d7z  }d8d9|iz  }t          t          j        |                    d x}x}x}}d S ):N        /api/admin/examsMathe
Einmaleins   Fchild_idsubjecttopic	exam_datestudy_sessionsinclude_weekendsheadersjson   ==z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sresponsepy0py2py5assert %(py7)spy7examr   c                     g | ]	}|j         
S  
study_date.0items     r   
<listcomp>zNtest_exam_generates_three_study_items_and_calendar_entries.<locals>.<listcomp>(       222D222             z%(py1)s == %(py4)spy1py4assert %(py6)spy6c                     g | ]	}|j         
S r:   task_instance_idr=   s     r   r@   zNtest_exam_generates_three_study_items_and_calendar_entries.<locals>.<listcomp>)       <<<dD)<<<rB   z,assert %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
}alltask_ids)r3   rH   py3c                     h | ]	}|j         
S r:   )kindr>   tasks     r   	<setcomp>zMtest_exam_generates_three_study_items_and_calendar_entries.<locals>.<setcomp>,   s    ,,,d	,,,rB   study/api/calendar
2026-06-15startweeksparams   calendardays   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slen)r3   rH   rR   rK   zassert %(py8)spy8c              3   d   K   | ]+}|d          ot          d |d          D                       V  ,dS )examsc              3   F   K   | ]}|d          dk    o|d         dk    V  dS )r%   r    r&   r!   Nr:   )r>   r8   s     r   	<genexpr>zWtest_exam_generates_three_study_items_and_calendar_entries.<locals>.<genexpr>.<genexpr>2   s;      #z#zeiDOw$>$`4=T`C`#z#z#z#z#z#zrB   N)anyr>   days     r   ri   zMtest_exam_generates_three_study_items_and_calendar_entries.<locals>.<genexpr>2   sf        L  L  @Cs7|z#z#zmpqxmy#z#z#z z z  L  L  L  L  L  LrB   ,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}rj   r3   r4   rI   c              3   J   K   | ]}|d          D ]}|d         k    dV  dS )study_itemsexam_id   Nr:   r>   rl   r?   rq   s      r   ri   zMtest_exam_generates_three_study_items_and_calendar_entries.<locals>.<genexpr>3   sD      ^^SS-?^^T4	?V]C]C]qC]C]C]C]C]^^rB   z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)ssumr3   r4   rI   r7   assert %(py9)spy9)!r   r   clientpostr   	isoformatstatus_code
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr,   r   r   r   r   r   whererq   r   r<   rP   r   r   in_getrd   rj   ru   )r$   r'   r1   @py_assert1@py_assert4@py_assert3@py_format6@py_format8r   items@py_assert0@py_assert2@py_format5@py_format7rQ   @py_format4tasksra   rb   @py_assert5@py_format9@py_assert6@py_format10rq   s                          @r   :test_exam_generates_three_study_items_and_calendar_entriesr      s	   HT1b!!I{{f%% !",,.. %
 
   H &3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&mmoof%d+G	 :GVM22889NRY9YZZccdqd|}}~~  C  C  E  E22E222otD!R7H7H$tUVXZJ[J[]abfhikm]n]n6oo26ooooooooooo26oooooo2oooo6o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<<e<<<8}}}ss88}VL11778K8KH8U8UVVWW[[]],,e,,,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99999999999999999999: : : : : : : : : : : : : : : zz/LST2U2UzVVH&3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&==??6"Dt999?933tt9 L  L  GK  L  L  L  L3  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L3  L  L  L  L  L3  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L  L^^^^D^^^c3^^^cbcc^bccccccccccc^bccccccccccccc3ccccc3cccccc^cccc^ccccbccccccccccccccccccccccccccccccccs   LQ++Q/2Q/c                     t                      } t                              dt          t                    | dddddd          }|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}}|                                d         d         }t          t                    5 }|                    t#          t$                                        t$          j        |k                                  t$          j                                                            }	d |	D             }
t1          ddd          t1          ddd          t1          ddd          g}|
|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 S # 1 swxY w Y   d S )Nr   DeutschDiktatrZ   r"   Tr#   r*   r-   r.   r0   r1   r2   r6   r7   r8   r   c                     g | ]	}|j         
S r:   r;   r=   s     r   r@   z8test_study_plan_can_include_weekends.<locals>.<listcomp>H   rA   rB   r   r            rF   rG   rJ   rK   r   ry   rz   r   r|   r}   r~   r   r   r   r   r   r   r,   r   r   r   r   r   r   rq   r   r<   rP   r   r$   r1   r   r   r   r   r   rq   r   r   r   r   r   r   s                 r   $test_study_plan_can_include_weekendsr   6   s	   H{{f%%  % $
 
   H &3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&mmoof%d+G	 pGVM22889NRY9YZZccdqd|}}~~  C  C  E  E22E222otD!R7H7H$tUVXZJ[J[]abfhikm]n]n6oo26ooooooooooo26oooooo2oooo6o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p p p p p p p p p p p p p p p p p p   :D0I77I;>I;c                     t                      } t                              dt          t                    | dddddd          }|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}}|                                d         d         }t          t                    5 }|                    t#          t$                                        t$          j        |k                                  t$          j                                                            }	d |	D             }
t1          ddd          t1          ddd          t1          ddd          g}|
|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 S # 1 swxY w Y   d S )Nr   r   r   rZ   r"   Fr#   r*   r-   r.   r0   r1   r2   r6   r7   r8   r   c                     g | ]	}|j         
S r:   r;   r=   s     r   r@   z5test_study_plan_excludes_weekends.<locals>.<listcomp>]   rA   rB   r   r   
      r   rF   rG   rJ   rK   r   r   s                 r   !test_study_plan_excludes_weekendsr   K   s	   H{{f%%  % %
 
   H &3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&mmoof%d+G	 pGVM22889NRY9YZZccdqd|}}~~  C  C  E  E22E222otD!R7H7H$tUVXZJ[J[]abfhikm]n]n6oo26ooooooooooo26oooooo2oooo6o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p p p p p p p p p p p p p p p p p pr   c                     t                      } t                              dt          t                    | dddddd          }|                                d	         d
         t                              d dt          t                              }|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          t                    5 }|                    t"                    }	|	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)          t*                                        t*          j        k                                                        }
d |
D             }t1          |          }|sddt          j	                    v st          j
        t0                    rt          j        t0                    ndt          j        |          t          j        |          dz  }t          t          j        |                    d x}}d |
D             }|                    t)          t2                                        t2          j                            |                                                              }d |D             }t1          |          }|sddt          j	                    v st          j
        t0                    rt          j        t0                    ndt          j        |          t          j        |          dz  }t          t          j        |                    d x}}d d d            n# 1 swxY w Y   t                              dddd                                           }fd!|d"         D             }t9          |          }| }|sd#d$t          j	                    v st          j
        t8                    rt          j        t8                    nd$t          j        |          t          j        |          dz  }t          t          j        |                    d x}x}}fd%|d"         D             }t9          |          }| }|sd#d$t          j	                    v st          j
        t8                    rt          j        t8                    nd$t          j        |          t          j        |          dz  }t          t          j        |                    d x}x}}d S )&Nr   NMGWasser
2026-06-19r"   Fr#   r*   r8   r   z/api/admin/exams/z/cancelr+   r`   r.   r0   r1   r2   r6   r7   	cancelled)z.%(py2)s
{%(py2)s = %(py0)s.status
} == %(py5)sc              3   $   K   | ]}|j         V  d S r   )r   r=   s     r   ri   zMtest_cancelled_exam_hides_calendar_and_cancels_study_tasks.<locals>.<genexpr>v   s$      44d4>444444rB   rm   rP   rn   c                     g | ]	}|j         
S r:   rM   r=   s     r   r@   zNtest_cancelled_exam_hides_calendar_and_cancels_study_tasks.<locals>.<listcomp>w   rO   rB   c              3   @   K   | ]}|j         t          j        k    V  d S r   )statusr   r   rU   s     r   ri   zMtest_cancelled_exam_hides_calendar_and_cancels_study_tasks.<locals>.<genexpr>y   s,      II44;*"66IIIIIIrB   rY   rZ   r[   r^   c              3   F   K   | ]}|d          D ]}|d         k    V  dS )rg   r   Nr:   )r>   rl   r8   rq   s      r   ri   zMtest_cancelled_exam_hides_calendar_and_cancels_study_tasks.<locals>.<genexpr>|   s@      ^^SQTU\Q]^^4:(^^^^^^^rB   rb   0assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}rj   c              3   F   K   | ]}|d          D ]}|d         k    V  dS )rp   rq   Nr:   rs   s      r   ri   zMtest_cancelled_exam_hides_calendar_and_cancels_study_tasks.<locals>.<genexpr>}   s@      ii#VYZgVhiid4	?g-iiiiiiirB   )r   ry   rz   r   r,   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   rP   r   r   r   rj   )r$   creater1   r   r   r   r   r   r   r8   r   r   rQ   r   ra   r   rq   s                   @r   :test_cancelled_exam_hides_calendar_and_cancels_study_tasksr   `   s   H[[f%% % %
 
   F kkmmF#D)G{{?w???W]I^I^{__H&3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&	 JG{{4)){)k){k)))))))))){k))))))))))))t)))))t)))))){))))k)))))))))))))))))))))))))))VM22889NRY9YZZ[[__aa44e4444s4444444444444444s44444s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<<e<<<VL11778K8KH8U8UVVWW[[]]II5IIIIsIIIIIIIIIIIIIIIIsIIIIIs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IIIIJ J J J J J J J J J J J J J J zz/LST2U2UzVV[[]]H^^^^HV4D^^^^s^^^^^^^^^^^^^^^^^^^s^^^^^s^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^iiii&9Iiiiisiiiiiiiiiiiiiiiiiiisiiiiis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iiiiiiiis   -LRRRc                      t                      } t                              dt          t                    | dddddd           t                              d	d
di          }|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}}d |                                d         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}}d S )Nr   r    	Geometrier   rr   Fr#   r*   z/api/dashboardr   z
2026-06-18r^   r`   r.   r0   	dashboardr2   r6   r7   c                 4    g | ]}|d          d         D ]}|S )r   openr:   )r>   childrV   s      r   r@   z8test_study_items_appear_on_home_todo.<locals>.<listcomp>   s0    bbb5QX>Z`Kabb4bbbbrB   childrenc              3   B   K   | ]}|d          dk    o	d|d         v V  dS )rT   rX   r   titleNr:   rU   s     r   ri   z7test_study_items_appear_on_home_todo.<locals>.<genexpr>   s9      ]]DtF|w&G;$w-+G]]]]]]rB   rm   rj   rn   )r   ry   rz   r   r   r|   r}   r~   r   r   r   r   r   r   r,   rj   )	r$   r   r   r   r   r   r   all_openr   s	            r   $test_study_items_appear_on_home_todor      s/   H
KKf%%  % %
 
     

+V\4J
KKI 'C' C'''''''''' C''''''''''''9'''''9'''''' ''''C'''''''''''''''''''''''''''bb).."2"2:">bbbH]]T\]]]]3]]]]]]]]]]]]]]]]3]]]]]3]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]rB   c            
         t                      } t                              dt          t                    ddd| dd          }|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}}|                                d         d         }t                              dddd                                          }t          d |d         D                       }	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}}d |d         D             }t#          |          }d}||k    }|st          j        d	|fd||f          dt          j                    v st          j	        t"                    rt          j
        t"                    ndt          j
        |          t          j
        |          t          j
        |          d z  }d!d"|iz  }t          t          j        |                    d x}x}x}}t                              d#| t          t                    d$d%d&d'd(          }|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d                                          }t          d+ |d         D                       }t          d, |d         D                       }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         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          t                    0          }|j        }d)}||k    }|st          j        d	|fd
||f          d1t          j                    v st          j	        |          rt          j
        |          nd1t          j
        |          t          j
        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|                                d2         }d3}||u }|slt          j        d4|fd5||f          t          j
        |          t          j
        |          d6z  }
d7d8|
iz  }t          t          j        |                    d x}x}}|                                d         d9         }d:}||u }|slt          j        d4|fd5||f          t          j
        |          t          j
        |          d6z  }
d7d8|
iz  }t          t          j        |                    d x}x}}t                              dddd                                          }t          d; |d         D                       }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 S )=Nz/api/admin/calendar-events
2026-06-16Informativ TestzKeine Timeline-Auswirkungu   📌)r   r   descriptionr$   iconr*   r-   r.   r0   r   r2   r6   r7   calendar_eventr   rY   rr   r[   r^   c              3   2   K   | ]}|d          dk    |V  dS r   r   Nr:   rk   s     r   ri   zKtest_calendar_events_are_informative_and_crud_persistent.<locals>.<genexpr>   s0      TTSF|8S8SS8S8S8S8STTrB   rb   c              3   .   K   | ]}|d          dk    V  dS r   r   Nr:   r=   s     r   ri   zKtest_calendar_events_are_informative_and_crud_persistent.<locals>.<genexpr>   s,      [[dtG} 11[[[[[[rB   calendar_eventsrm   rj   rn   c              3   @   K   | ]}t          |d                    V  dS )rp   N)rd   rk   s     r   ri   zKtest_calendar_events_are_informative_and_crud_persistent.<locals>.<genexpr>   s/      CC3s3}%&&CCCCCCrB   r   rt   ru   rv   rw   rx   z/api/admin/calendar-events/
2026-06-17Informativ Neu
Bearbeitetu   ⭐)r   r   r   r   r`   updatec              3   2   K   | ]}|d          dk    |V  dS r   r:   rk   s     r   ri   zKtest_calendar_events_are_informative_and_crud_persistent.<locals>.<genexpr>   0      RR3c&k\6Q6Q36Q6Q6Q6QRRrB   c              3   2   K   | ]}|d          dk    |V  dS r   r   Nr:   rk   s     r   ri   zKtest_calendar_events_are_informative_and_crud_persistent.<locals>.<genexpr>   r   rB   c              3   .   K   | ]}|d          dk    V  dS r   r:   r=   s     r   ri   zKtest_calendar_events_are_informative_and_crud_persistent.<locals>.<genexpr>   s,      ]]$4=$55]]]]]]rB   r   c              3   F   K   | ]}|d          dk    o|d         dk    V  dS )r   r   r   r   Nr:   r=   s     r   ri   zKtest_calendar_events_are_informative_and_crud_persistent.<locals>.<genexpr>   sT        A  A]atG} 00XT-5HL5X  A  A  A  A  A  ArB   r   deleteokT)is)z%(py1)s is %(py4)srG   rJ   rK   activeFc              3   2   K   | ]}|d          dk    |V  dS r   r:   rk   s     r   ri   zKtest_calendar_events_are_informative_and_crud_persistent.<locals>.<genexpr>   r   rB   c              3   .   K   | ]}|d          dk    V  dS )r   r   Nr:   r=   s     r   ri   zKtest_calendar_events_are_informative_and_crud_persistent.<locals>.<genexpr>   s,      \\4=$44\\\\\\rB   )r   ry   rz   r   r|   r}   r~   r   r   r   r   r   r   r,   r   nextrj   ru   patchr   )r$   r   r   r   r   r   r   event_idra   	first_dayr   r   r   r   r   old_daynew_dayr   r   r   r   s                        r   8test_calendar_events_are_informative_and_crud_persistentr      s
   H[[$f%%"->Oj  yA  KQ  R  R   F
 $$$$$$$$$$$$$$$$$$$$$$$$6$$$$$6$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$${{}}-.t4Hzz/LST2U2UzVV[[]]HTTHV$4TTTTTI[[iHY>Z[[[[3[[[[[[[[[[[[[[[[3[[[[[3[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[CC(62BCCCH3CCCHqHCqHHHHHHHHHHCqHHHHHHHHHHHH3HHHHH3HHHHHHCHHHHCHHHHq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HH\\0h00f%%"-=ldijj   F
 $$$$$$$$$$$$$$$$$$$$$$$$6$$$$$6$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$zz/LST2U2UzVV[[]]HRR(6"2RRRRRGRR(6"2RRRRRG]]'J[B\]]]]s]]]]]]]]]]]]]]]]]]]s]]]]]s]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] A  Aelm~e  A  A  A  A3  A  A  A  A  A  A  A  A  A  A  A  A  A  A  A  A3  A  A  A  A  A3  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]]CCC][aMbMb]ccF$$$$$$$$$$$$$$$$$$$$$$$$6$$$$$6$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;;==&$&$&&&&&&&&&&$&&&&&&&&&$&&&&&&&&&&&&&&&&&&&&&&&&&&&;;==)*84==4==========4=====4===============================zz/LST2U2UzVV[[]]HRR(6"2RRRRRG\\IZA[\\\\s\\\\\\\\\\\\\\\\\\\s\\\\\s\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\rB   c                  `   t                      } t                              dt          t                    | dddddd          }|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d                                          }t          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             }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 S )#Nr   r    Division
2026-06-26   Fr#   r*   r-   r.   r0   r1   r2   r6   r7   rY   z
2026-06-22rr   r[   r^   c              3   2   K   | ]}|d          dk    |V  dS )r   r   Nr:   rk   s     r   ri   zEtest_study_items_are_labelled_as_learning_not_exam.<locals>.<genexpr>   s0      SSCs6{l7R7RC7R7R7R7RSSrB   rb   c                 "    g | ]}|d          
|S )rp   r:   rk   s     r   r@   zFtest_study_items_are_labelled_as_learning_not_exam.<locals>.<listcomp>   s"    HHH#S5GH#HHHrB   rg   r   r%   rF   rG   rJ   rK   c              3   D   K   | ]}|d          D ]}|d         dk    V  dS )rp   r   zMathe lernenNr:   )r>   rl   r?   s      r   ri   zEtest_study_items_are_labelled_as_learning_not_exam.<locals>.<genexpr>   s?      dd3QTUbQcddtG}.dddddddrB   rm   rP   rn   )r   ry   rz   r   r|   r}   r~   r   r   r   r   r   r   r   r,   r   rP   )r$   r1   r   r   r   r   r   ra   exam_day
study_daysr   r   r   r   s                 r   2test_study_items_are_labelled_as_learning_not_examr      s   H{{f%%"wZfz{  RW  X  X   H
 &3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&zz/LST2U2UzVV[[]]HSS8F#3SSSSSHHH&!1HHHJGQ	*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dd*dddd3dddddddddddddddd3ddddd3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drB   )$builtinsr   _pytest.assertion.rewrite	assertionrewriter}   datetimer   r   fastapi.testclientr   sqlmodelr   r   app.db.sessionr   app.mainr	   
app.modelsr
   r   r   r   r   tests.conftestr   ry   intr   r   r   r   r   r   r   r   r:   rB   r   <module>r      s|                 $ $ $ $ $ $ $ $ ) ) ) ) ) ) $ $ $ $ $ $ $ $ ! ! ! ! ! !       K K K K K K K K K K K K K K ( ( ( ( ( (	CQ Q Q Q Q
 d  d  dFp p p*p p p*j j j@^ ^ ^*!] !] !]He e e e erB   