31 lines
1.8 KiB
Python
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')
|