
    Q1j                         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 d dlmZ d dlmZmZmZmZ  ee          Zd Zd Zd	 ZdS )
    N)
TestClient)Sessionselect)engine)app)CoinTransactionDailyPhraseDailyPhraseSlotAssignmentPhraseQuizSlotAttemptc                  !   t                               dddd          } t                               dddd          }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}}|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}||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             }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         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         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        } |            }|j        } |            }||k    }|st          j        d|fd!||f          d
t          j                    v st          j        |           rt          j        |           nd
t          j        |          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}x}}d% |                                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}	}t          t                    5 }|j        }	t          t                     } |	|          }|j        } |            }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        |	          d*t          j                    v st          j        t                    rt          j        t                    nd*d+t          j                    v st          j        t                     rt          j        t                     nd+t          j        |          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}x}x}}|j        }	t          t&                    }|j        }t&          j        }d}||k    } ||          } |	|          } | j        }! |!            }"t%          |"          }#d/}$|#|$k    }%|%st          j        d|fd0||f          d1t          j                    v st          j        t&                    rt          j        t&                    nd1t          j        |          t          j        |          d2z  }&t          j        d3|%fd4|#|$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        |	          d*t          j                    v st          j        t                    rt          j        t                    nd*d1t          j                    v st          j        t&                    rt          j        t&                    nd1t          j        |          t          j        |          |&t          j        |          t          j        |           t          j        |!          t          j        |"          t          j        |#          t          j        |$          d5z  }'d6d7|'iz  }(t          t          j
        |(                    d x}	x}x}x}x}x}x}x} x}!x}"x}#x}%}$|j        }	t          t&                    }|j        }t&          j        }d}||k    } ||          } |	|          } | j        }! |!            }"t%          |"          }#d/}$|#|$k    }%|%st          j        d|fd0||f          d1t          j                    v st          j        t&                    rt          j        t&                    nd1t          j        |          t          j        |          d2z  }&t          j        d3|%fd4|#|$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        |	          d*t          j                    v st          j        t                    rt          j        t                    nd*d1t          j                    v st          j        t&                    rt          j        t&                    nd1t          j        |          t          j        |          |&t          j        |          t          j        |           t          j        |!          t          j        |"          t          j        |#          t          j        |$          d5z  }'d6d7|'iz  }(t          t          j
        |(                    d x}	x}x}x}x}x}x}x} x}!x}"x}#x}%}$d d d            d S # 1 swxY w Y   d S )8Nz/api/daily-phrases
2026-06-1606:00dateslotparamsz11:00   ==z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sfirstpy0py2py5assert %(py7)spy7secondnoonr   )z%(py1)s == %(py4)spy1py4assert %(py6)spy6itemsc                     h | ]
}|d          S 
child_name .0items     H/home/agent/projects/FamilyDashboard/backend/tests/test_daily_phrases.py	<setcomp>z\test_daily_phrase_assignments_are_language_specific_stable_and_slot_based.<locals>.<setcomp>   s    1114D111    EmiliaValeriec                      i | ]}|d          |S r(   r*   r+   s     r.   
<dictcomp>z]test_daily_phrase_assignments_are_language_specific_stable_and_slot_based.<locals>.<dictcomp>   s    ;;;T\"D;;;r0   phraselanguageenfrforeign_text)!=)z%(py1)s != %(py4)s)zv%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.json
}()
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.json
}()
})r   r   r#   r%   py8py10zassert %(py12)spy12c                     h | ]
}|d          S )r   r*   r+   s     r.   r/   z\test_daily_phrase_assignments_are_language_specific_stable_and_slot_based.<locals>.<setcomp>   s    :::TDL:::r0      z%(py15)s
{%(py15)s = %(py0)s(%(py13)s
{%(py13)s = %(py11)s
{%(py11)s = %(py9)s
{%(py9)s = %(py3)s
{%(py3)s = %(py1)s.exec
}(%(py7)s
{%(py7)s = %(py4)s(%(py5)s)
})
}.all
}()
})
} == %(py18)slensessionr   r
   r   r"   py3r#   r   r   py9py11py13py15py18assert %(py20)spy20   )z4%(py12)s
{%(py12)s = %(py10)s.language
} == %(py15)sr	   )r<   r=   rH   )>=)z%(py27)s
{%(py27)s = %(py0)s(%(py25)s
{%(py25)s = %(py23)s
{%(py23)s = %(py21)s
{%(py21)s = %(py3)s
{%(py3)s = %(py1)s.exec
}(%(py19)s
{%(py19)s = %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py4)s(%(py5)s)
}.where
}(%(py17)s)
})
}.all
}()
})
} >= %(py30)s)r   r"   rD   r#   r   r   rE   py17py19py21py23py25py27py30zassert %(py32)spy32)clientgetstatus_code
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationjsonr   r   execr   r
   allrA   r	   wherer6   ))r   r   r    @py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert0@py_assert2@py_format5@py_format7r&   by_child@py_assert7@py_assert9@py_assert5@py_format11@py_format13rB   @py_assert6@py_assert8@py_assert10@py_assert12@py_assert14@py_assert17@py_assert16@py_format19@py_format21@py_assert11@py_assert13@py_assert18@py_assert20@py_assert22@py_assert24@py_assert26@py_assert29@py_assert28@py_format16@py_format31@py_format33s)                                            r.   Itest_daily_phrase_assignments_are_language_specific_stable_and_slot_basedr      s   JJ+\SZ4[4[J\\EZZ,lT[5\5\Z]]F::*LRY3Z3Z:[[D########################5#####5#####################################$$$$$$$$$$$$$$$$$$$$$$$$6$$$$$6$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"s"s""""""""""s""""""""""""4"""""4""""""""""s"""""""""""""""""""""""""""::<<*7*7**********7*********7***************************99;;v)')'))))))))))')))))))))')))))))))))))))))))))))))))JJLL!E115111Jh	5JJ15JJJJJJJJJJJ15JJJJJJ1JJJJ5J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;;U;;;HIx(4<<4<<<<<<<<<<4<<<<<4<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Hh'
3;t;3t;;;;;;;;;;3t;;;;;3;;;;t;;;;;;;;;;;;;;;;;;;;;;;;;;;Ix(8hHX<Nx<XYg<hh8<hhhhhhhhhhh8<hhhhhh8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hhh:(::<<(6;(;;==(<=((((((((((<=((((((((((((5(((((5((((((:((((<(((((((((((6(((((6((((((;((((=(((((((((((((((((((((((((((((((::TYY[[%9:::GwiG:iGGGGGGGGGG:iGGGGG:GGGGi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	 fG<N'@ A AN<< ABBNBFNFFHHNsHIINQNIQNNNNNNNNNNIQNNNNNNNNNNNNsNNNNNsNNNNNNNNNNNNN7NNNNN7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 ANNNNBNNNNFNNNNHNNNNINNNNQ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<e{ 3 3e 3 9e+:NeRVe:NRV:Ve 9 9e W We<< WXXeX\e\\^^es^__ecee_ceeeeeeeeeee:NRVeeeeeeeeeeee+eeeee+eeeeee:NeeeeRVeeeeeeeeeeee_ceeeeeeeeeeeeeseeeeeseeeeeeeeeeeee7eeeee7eeeeee<eeeeeeeeeeeeeeeeeeeeeeeeeeeee{eeeee{eeeeee 3eeee 9eeeee WeeeeXeeee\eeee^eeee_eeeeceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee<e{ 3 3e 3 9e+:NeRVe:NRV:Ve 9 9e W We<< WXXeX\e\\^^es^__ecee_ceeeeeeeeeee:NRVeeeeeeeeeeee+eeeee+eeeeee:NeeeeRVeeeeeeeeeeee_ceeeeeeeeeeeeeseeeeeseeeeeeeeeeeee7eeeee7eeeeee<eeeeeeeeeeeeeeeeeeeeeeeeeeeee{eeeee{eeeeee 3eeee 9eeeee WeeeeXeeee\eeee^eeee_eeeeceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeef f f f f f f f f f f f f f f f f fs   7bACCACCACc                     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         d         t          t                    5 }|                    t          d         d                   }|j        }d d d            n# 1 swxY w Y   t                               d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}|
|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}|
|u }|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         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!}|
|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}|
|u }|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d                                          }t#          fd#|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%         d&         }
|
|k    }|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}
}t          t                    5 }|j        }t'          t(                    } ||          }|j        } |            }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        |          d/t          j                    v st          j        t&                    rt          j        t&                    nd/d0t          j                    v st          j        t(                    rt          j        t(                    nd0t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          d1z  }d2d3|iz  }t          t          j
        |                    d x}x}x}x}x}x}x}}|                    t'          t.                                        t.          j        d         k                                                        }d4 |D             }t5          |          }d+}||k    }|st          j        d|fd5||f          d6t          j                    v st          j        t4                    rt          j        t4                    nd6t          j        |          t          j        |          t          j        |          d7z  }d8d9|iz  }t          t          j
        |                    d x}x}x}}d d d            d S # 1 swxY w Y   d S ):N/api/daily-phrases/quizr   z15:00r   r   r   r   r   quizr   r   r   r&   r   r5   id/api/daily-phrases/quiz-answerchild_idr   r   r   r   r   	phrase_idselected_answerra   responsecorrectTisz%(py1)s is %(py4)sr!   r$   r%   coin_awarded	duplicateF
idempotentc              3   @   K   | ]}|d          d          k    |V  dS )r   Nr*   )r,   rowr-   s     r.   	<genexpr>zMtest_daily_phrase_quiz_correct_answer_awards_one_coin_once.<locals>.<genexpr>A   s6      WW#3z?d:FV3V3V#3V3V3V3VWWr0   answeredattemptr   )z%(py1)s == %(py3)s)r"   rD   zassert %(py5)sr      r@   rA   rB   r   r   rC   rJ   rK   c              3   X   K   | ]%}|j                             d           |j        V  &dS zSatz des TagesN)comment
startswithamountr,   txs     r.   r   zMtest_daily_phrase_quiz_correct_answer_awards_one_coin_once.<locals>.<genexpr>G   s:      VVbj.C.CDT.U.UV29VVVVVVr0   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)ssum)r   r   r#   r   zassert %(py9)srE   )rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   r   r   r	   german_translationpostnextrb   r   r   rc   rA   r   rd   r   r   )r   re   rf   rg   rh   ri   rB   r5   r   r   rj   rk   rl   rm   r   againstored@py_format4rt   ru   rv   rw   rx   ry   rz   r{   r|   txsrq   @py_format10r-   s                                 @r.   :test_daily_phrase_quiz_correct_answer_awards_one_coin_oncer   #   s   ::/W^8_8_:``D"s"s""""""""""s""""""""""""4"""""4""""""""""s"""""""""""""""""""""""""""99;;w"D	 ,G[$x.*>??+, , , , , , , , , , , , , , , {{;$VV(^D)"C C{  H &3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&==??9%--%----------%-----%-------------------------------==??>*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<$VV(^D)"D D  I  'C' C'''''''''' C''''''''''''9'''''9'''''' ''''C'''''''''''''''''''''''''''>>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JJ0,X_9`9`JaaffhhEWWWWwWWWWWF*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%)./:/7::::::::::/7:::::/:::::::::::7:::::7:::::::::::::::::::::::::::	 \G<J'< = =J<< =>>J>BJBBDDJsDEEJJEJJJJJJJJJJEJJJJJJJJJJJJsJJJJJsJJJJJJJJJJJJJ7JJJJJ7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JJJJ'<JJJJJ'<JJJJJJ =JJJJ>JJJJBJJJJD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JJJJJJJJJJll6/22889QUYZdUe9effggkkmmVVsVVV[sVVV[Z[[VZ[[[[[[[[[[[VZ[[[[[[[[[[[[[s[[[[[s[[[[[[V[[[[V[[[[Z[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \s%   /EEENk++k/2k/c            	         t                               dddd          } |                                 d         d         }t          t                    5 }|                    t
          |d         d	                   }|j        }d d d            n# 1 swxY w Y   t                               d
|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}||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}||u }|slt          j
        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}t          t                    5 }|                    t%          t&                                        t&          j        |d         k                                                        }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            d S # 1 swxY w Y   d S )#Nr   z
2026-06-17r   r   r   r&   r   r5   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Fr   r   r!   r$   r%   r   c              3   J   K   | ]}|j                             d           V  dS r   )r   r   r   s     r.   r   zEtest_wrong_daily_phrase_answer_does_not_award_coin.<locals>.<genexpr>\   s3      MM2rz,,-=>>MMMMMMr0   z0assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}any)r   r   r#   )rV   rW   ra   r   r   r	   wrong_option_1r   rX   rY   rZ   r[   r\   r]   r^   r_   r`   rb   r   r   rd   r   rc   r   )r   r-   rB   r5   wrongr   re   rf   rg   rh   ri   rj   rk   rl   rm   r   rq   s                    r.   2test_wrong_daily_phrase_answer_does_not_award_coinr   J   s   ::/W^8_8_:``D99;;w"D	 &G[$x.*>??%& & & & & & & & & & & & & & & {{;$VV(^D) C C{  H &3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&==??9%..%..........%.....%...............................==??>*3e3*e3333333333*e33333*3333e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	 NGll6/22889QUYZdUe9effggkkmmMMMMMM3MMMMMMMMMMMMMMMMMMM3MMMMM3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MMN N N N N N N N N N N N N N N N N Ns%   /BBBDP  PP)builtinsr[   _pytest.assertion.rewrite	assertionrewriterY   fastapi.testclientr   sqlmodelr   r   app.db.sessionr   app.mainr   
app.modelsr   r	   r
   r   rV   r   r   r   r*   r0   r.   <module>r      s                  ) ) ) ) ) ) $ $ $ $ $ $ $ $ ! ! ! ! ! !       e e e e e e e e e e e e	Cf f f0$\ $\ $\NN N N N Nr0   