22 lines
1.5 KiB
Python
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':[]})
|