feat: initial commit - Carinha Control Panel v1.0 com UI glassmorphism, watch-bar, emojis, braco robotico e conversa IA
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
import unittest,tempfile,sqlite3,json
|
||||
from pathlib import Path
|
||||
from treinamento import Treinamento,validar_receita
|
||||
class BibliotecaTest(unittest.TestCase):
|
||||
def test_criar_editar_excluir_desfazer_persistente(self):
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
p=Path(d)/'treino.db';t=Treinamento(p,iniciar=False)
|
||||
t.alterar_reacao('criar',dados=dict(nome='Ideia',motivo='Uma ideia',caractere='💡',local='olhos'))
|
||||
row=t.status()['reacoes'][0];ident=row['id']
|
||||
t.alterar_reacao('editar',ident,dict(nome='Treino',motivo='Musculação',caractere='💪',local='olhos'))
|
||||
self.assertEqual(t.status()['reacoes'][0]['receita']['emoji']['caractere'],'💪')
|
||||
t=Treinamento(p,iniciar=False);t.alterar_reacao('desfazer')
|
||||
self.assertEqual(t.status()['reacoes'][0]['receita']['nome'],'Ideia')
|
||||
t.alterar_reacao('ativar',ident,dict(ativa=False));self.assertFalse(t.status()['reacoes'][0]['ativa'])
|
||||
t.alterar_reacao('desfazer');self.assertTrue(t.status()['reacoes'][0]['ativa'])
|
||||
t.alterar_reacao('feedback',ident,dict(valor=-1));self.assertEqual(t.status()['reacoes'][0]['feedback'],-1)
|
||||
t.alterar_reacao('desfazer');self.assertEqual(t.status()['reacoes'][0]['feedback'],0)
|
||||
t.alterar_reacao('duplicar',ident);self.assertEqual(len(t.status()['reacoes']),2)
|
||||
t.alterar_reacao('desfazer');self.assertEqual(len(t.status()['reacoes']),1)
|
||||
t.alterar_reacao('excluir',ident);self.assertEqual(t.status()['reacoes'],[])
|
||||
t.alterar_reacao('desfazer');self.assertEqual(t.status()['reacoes'][0]['id'],ident)
|
||||
def test_migracao_preserva_svg(self):
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
p=Path(d)/'treino.db'
|
||||
recipe=dict(nome='Desenho',motivo='Original',simbolo='nenhum',legenda='',passos=[dict(olhos='aberto',boca='sorriso',cor='#5cd6ff',dx=0,dy=0,escala=1,duracao=2)],figurinha=dict(nome='SVG',local='olhos',formas=[dict(caminho='M 10 10 L 90 90 Z',cor='#123456')]))
|
||||
with sqlite3.connect(p) as db:
|
||||
db.execute('CREATE TABLE reacoes(id INTEGER PRIMARY KEY,horario REAL,receita TEXT,feedback INTEGER DEFAULT 0)');db.execute('INSERT INTO reacoes VALUES (1,0,?,1)',(json.dumps(recipe),))
|
||||
db.close()
|
||||
t=Treinamento(p,iniciar=False);self.assertEqual(t.status()['reacoes'][0]['receita'],recipe)
|
||||
t.alterar_reacao('editar',1,dict(nome='Emoji',motivo='Mudança',caractere='💡',local='olhos'))
|
||||
t.alterar_reacao('desfazer');self.assertEqual(t.status()['reacoes'][0]['receita'],recipe)
|
||||
def test_edicao_invalida_nao_modifica(self):
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
t=Treinamento(Path(d)/'treino.db',iniciar=False)
|
||||
with self.assertRaises(ValueError):t.alterar_reacao('criar',dados=dict(nome='Teste',motivo='Teste',caractere='<script>',local='olhos'))
|
||||
self.assertEqual(t.status()['reacoes'],[])
|
||||
Reference in New Issue
Block a user