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')