Files
carinha-control-panel/tests/test_treinamento.py

31 lines
1.8 KiB
Python

import unittest,tempfile
from pathlib import Path
from treinamento import Treinamento,validar_receita
class TestTreinamento(unittest.TestCase):
def test_automatico_so_gera_apos_hora_com_atividade_nova(self):
with tempfile.TemporaryDirectory() as d:
t=Treinamento(Path(d)/'treino.db',iniciar=False);inicio=t.last
with t.db() as db:db.execute("INSERT INTO config VALUES ('automatico','true')")
calls=[];t.gerar=lambda:calls.append(True)
self.assertFalse(t.verificar_hora(inicio+3601))
t.registrar('user','Uma nova conversa')
self.assertFalse(t.verificar_hora(inicio+3599))
self.assertTrue(t.verificar_hora(inicio+3601))
self.assertFalse(t.verificar_hora(inicio+7202))
self.assertEqual(len(calls),1)
def test_receita_rejeita_codigo_e_movimentos_fora_limite(self):
step=dict(olhos='feliz',boca='sorriso',cor='#5cd6ff',dx=0,dy=0,escala=1,duracao=.5)
recipe=dict(nome='Alegria',motivo='Conquista',simbolo='estrela',legenda='Boa!',passos=[step])
self.assertEqual(validar_receita(recipe)['nome'],'Alegria')
with self.assertRaises(ValueError):validar_receita(dict(recipe,codigo='alert(1)'))
step['dx']=1000
with self.assertRaises(ValueError):validar_receita(recipe)
def test_rotina_diario_persistem(self):
with tempfile.TemporaryDirectory() as d:
t=Treinamento(Path(d)/'treino.db',iniciar=False)
t.rotina('Gosto de música');t.registrar('user','Ouvi uma música')
saved=Treinamento(Path(d)/'treino.db',iniciar=False).status()
self.assertEqual(saved['rotina'][0]['texto'],'Gosto de música')
self.assertEqual(saved['diario'][0]['texto'],'Ouvi uma música')