Files

22 lines
1.5 KiB
Python

import unittest
from gemini import payload_gemini, extrair_resposta
class TestGemini(unittest.TestCase):
def test_catalogo_limita_ids_da_reacao(self):
payload=payload_gemini([],[],'Vamos festejar!',[dict(id=7,receita=dict(nome='Festa',motivo='Conquista'))])
self.assertEqual(payload['generationConfig']['responseSchema']['properties']['reacao']['enum'],['0','7'])
def test_nao_envia_perguntas_sem_resposta_de_chamadas_falhas(self):
payload=payload_gemini([{'role':'user','content':'pergunta que falhou'}],[],'pergunta atual')
self.assertEqual(len(payload['contents']),1)
self.assertEqual(payload['contents'][0]['parts'][0]['text'],'pergunta atual')
def test_contexto_e_memoria_sem_chave_no_payload(self):
payload=payload_gemini([{'role':'user','content':'Está bravo?'},{'role':'assistant','content':'Não!'}],[{'texto':'Meu nome é Jullio'}],'Oi')
self.assertEqual(payload['contents'][-1]['parts'][0]['text'],'Oi')
self.assertEqual(payload['contents'][1]['role'],'model')
self.assertIn('Jullio',str(payload['systemInstruction']))
self.assertNotIn('api_key',str(payload))
def test_conteudo_ignora_thought_e_exige_json(self):
data={'candidates':[{'content':{'parts':[{'text':'segredo','thought':True},{'text':'{"texto":"Oi!","gesto":"feliz"}'}]}}]}
self.assertEqual(extrair_resposta(data),{'texto':'Oi!','gesto':'feliz'})
with self.assertRaises(ValueError):extrair_resposta({'candidates':[]})