
    2j                         d dl Zd dlmc 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 d dlmZ d Zd	 Zd
 ZdS )    N)
TestClient)Sessionselect)engineinit_db)app)CoinTransactionDailyMathAssignment)admin_headersc            	      .	   t                       t          t                    5 } |                     d          }|                     d          }|                                d         d         }|                     d|d         |d         |d         d         |d         d	         d         d
          }|                     d          }d d d            n# 1 swxY w Y   |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}}|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         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}}|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}||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 )Nz$/api/daily-math/quiz?date=2026-06-17itemsr   /api/daily-math/quiz-answerchild_iddatetaskidoptionsr   r   task_idselected_answerjson   ==z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sfirstpy0py2py5assert %(py7)spy7secondpromptz%(py1)s == %(py4)spy1py4assert %(py6)spy6answeransweredTisz%(py1)s is %(py4)s)r   r   r   getr   poststatus_code
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)clientr   r$   itemr,   after@py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert0@py_assert2@py_format5@py_format7s                  E/home/agent/projects/FamilyDashboard/backend/tests/test_daily_math.py2test_daily_math_quiz_is_stable_and_persists_answerrI   
   s`   III	C 
CF

ABBBCCzz||G$Q':Z(LF|D)#F|I6q9	B
 B
   

ABB
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C 
C ########################5#####5#####################################$$$$$$$$$$$$$$$$$$$$$$$$6$$$$$6$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$::<< #F+H5dw9OPQ9RSY9Z[c9dd59ddddddddddd59dddddd5dddd9d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$$$$$$$$$$$$$$$$$$$$$$$$6$$$$$6$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$::<< #J/747/47777777777/477777/77774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7s   B&CCCc                  D   t                       t          t                    5 } t          |           }|                     d|                                          d         d         }|                     d|d          d|dd	d
          }|                     d|ddd          }|                     d|ddd          }|                     d          }d d d            n# 1 swxY w Y   |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}	||	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}}	|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}	}|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&}	||	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	}	||	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 )*Nz/api/admin/children)headerschildrenr   z/api/admin/children/r   z	/settings      )math_quiz_levellanguage_quiz_level)rK   r   z3/api/admin/settings/departure_warning_sound_enabledfalseTest)valuedescriptionz(/api/admin/settings/math_quiz_coin_value2z
Test Coinsz/api/admin/settings/publicr   r   r   updatedr   r"   r#   childsettingsrO   r&   r'   r*   r+   rP   sound	math_coindeparture_warning_sound_enabledFr.   r0   math_quiz_coin_value)r   r   r   r   r1   r   patchr3   r4   r5   r6   r7   r8   r9   r:   r;   )r<   rK   rW   rV   rY   rZ   publicr?   r@   rA   rB   rC   rD   rE   rF   rG   s                   rH   >test_admin_child_quiz_settings_update_and_public_sound_settingr_      s   III	C :F''

0'
BBGGII*UVWX,,LeDkLLLV]xy  ST  eU  eU,  V  VR\ct{  MS  kT  kT  U  ULL!KU\mp  BN  dO  dOL  P  P	899: : : : : : : : : : : : : : : %#%#%%%%%%%%%%#%%%%%%%%%%%%7%%%%%7%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%<<>>'":./@AFQFAQFFFFFFFFFFAQFFFFFAFFFFQ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<<>>'":./DEJJEJJJJJJJJJJEJJJJJEJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ########################5#####5##################################### 'C' C'''''''''' C''''''''''''9'''''9'''''' ''''C''''''''''''''''''''''''''';;==:;DuD;uDDDDDDDDDD;uDDDDD;DDDDu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;;==/05A50A55555555550A5555505555A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5s   B5C$$C(+C(c            
         t                       t          t                    5 } |                     d          }|                                d         d         }t          t                    5 }|                    t          t                    
                    t          j        |d         k    t          j        |d         k                                                        }|j        }d d d            n# 1 swxY w Y   |                     d|d         |d         |d         d         |d	
          }|                     d|d         |d         |d         d         |d	
          }|                     d                                          d         d         }t          t                    5 }|                    t          t                    
                    t          j        |d         k    t          j        |d         k                                                        }	|	j        }
d d d            n# 1 swxY w Y   |                     d|d         |d         |d         d         |
d	
          }d d d            n# 1 swxY w Y   |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  }t1          t%          j        |                    d x}x}}|                                d         }d}||u }|slt%          j        d|fd||f          t%          j        |          t%          j        |          dz  }dd|iz  }t1          t%          j        |                    d x}x}}|                                d         }d}||u }|slt%          j        d|fd||f          t%          j        |          t%          j        |          dz  }dd|iz  }t1          t%          j        |                    d x}x}}|                                d         }d}||u }|slt%          j        d|fd||f          t%          j        |          t%          j        |          dz  }dd|iz  }t1          t%          j        |                    d x}x}}|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  }t1          t%          j        |                    d x}x}}|                                d         }d}||u }|slt%          j        d|fd||f          t%          j        |          t%          j        |          dz  }dd|iz  }t1          t%          j        |                    d x}x}}t          t                    5 }|                    t          t4                                                              }d |D             }t9          |          }|                                d         }||k    }|st%          j        d|fd ||f          d!t)          j                    v st%          j        t8                    rt%          j        t8                    nd!t%          j        |          t%          j        |          t%          j        |          d"z  }d#d$|iz  }t1          t%          j        |                    d x}x}x}}d d d            d S # 1 swxY w Y   d S )%Nz$/api/daily-math/quiz?date=2026-06-18r   r   r   r   r   r   r   r   r   z$/api/daily-math/quiz?date=2026-06-19   r   r   r   responser   r"   r#   coin_awardedTr.   r0   r'   r*   r+   F
idempotentwrong_responsec              3   X   K   | ]%}|j                             d           |j        V  &dS )zRechnung des TagesN)comment
startswithamount).0txs     rH   	<genexpr>zXtest_daily_math_correct_answer_awards_coin_once_and_wrong_awards_none.<locals>.<genexpr>Z   s:      ZZbj.C.CDX.Y.YZ29ZZZZZZ    
coin_value)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)ssum)r   r    r)   r#   zassert %(py9)spy9)r   r   r   r1   r   r   r   execr   r
   wherer   dayonecorrect_answerr2   wrong_option_1r3   r4   r5   r6   r7   r8   r9   r:   r;   r	   allro   )r<   correct_quizcorrect_itemsessioncorrect_assignmentru   rb   	duplicate
wrong_itemwrong_assignmentwrongre   r?   r@   rA   rB   rC   rD   rE   rF   rG   txs@py_assert6@py_assert5@py_format10s                            rH   Etest_daily_math_correct_answer_awards_coin_once_and_wrong_awards_noner   2   s	   III	C Fzz"HII#((**73A6V__ 	?!(f5H.I.I.O.OPcPlp|  ~H  qI  QI  K^  Kb  fr  sy  fz  Kz  /{  /{  "|  "|  "@  "@  "B  "B/>N	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? ;;<$Z0 (#F+D1-	D
 D
;   KK =$Z0 (#F+D1-	E
 E
K  	 ZZ FGGLLNNwWXYZ
V__ 	4&||F3F,G,G,M,MNaNjnx  zD  oE  OE  GZ  G^  bl  ms  bt  Gt  -u  -u   v   v   z   z   |   |$3E	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4  %B":.v&!&)$/$	J
 J
  /              < &3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&==??>*2d2*d2222222222*d22222*2222d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>>N+4u4+u4444444444+u44444+4444u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>>L)1T1)T1111111111)T11111)1111T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%,,%,,,,,,,,,,%,,,,,,,,,,,,>,,,,,>,,,,,,%,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,  09E90E99999999990E9999909999E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	 |Gll6/22337799ZZsZZZ{sZZZ{^f^k^k^m^mnz^{{Z^{{{{{{{{{{{Z^{{{{{{{{{{{{{s{{{{{s{{{{{{Z{{{{Z{{{{^{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{| | | | | | | | | | | | | | | | | |sp   A
J-A=C6*J6C:	:J=C:	>B2J0A=H9-J9H=	=J H=	7JJJ5E___)builtinsr6   _pytest.assertion.rewrite	assertionrewriter4   fastapi.testclientr   sqlmodelr   r   app.db.sessionr   r   app.mainr   
app.modelsr	   r
   tests.conftestr   rI   r_   r    rm   rH   <module>r      s                  ) ) ) ) ) ) $ $ $ $ $ $ $ $ * * * * * * * *       ; ; ; ; ; ; ; ; ( ( ( ( ( (8 8 8*6 6 6&(| (| (| (| (|rm   