Files
MonicaAgentIA/test_response_fix.py
T
2026-09-03 15:34:28 -03:00

86 lines
3.5 KiB
Python
Executable File

import asyncio
import sys
import os
sys.path.insert(0, "/home/marco/MonicaAgentIA/app")
os.environ["TELEGRAM_BOT_TOKEN"] = "test"
os.environ["TELEGRAM_CHAT_ID"] = "123"
from monica_agent import _force_min_lines, _split_message_for_telegram, MAX_TELEGRAM_MESSAGE_LENGTH
def test_force_min_lines_no_truncation():
print("=== Testando _force_min_lines nao trunca ===")
text = "A. B. C. D. E. F. G. H. I. J."
result = _force_min_lines(text, 5)
assert "F." in result, f"Conteudo foi truncado! Resultado: {result}"
assert "G." in result, f"Conteudo foi truncado! Resultado: {result}"
assert "H." in result, f"Conteudo foi truncado! Resultado: {result}"
assert "I." in result, f"Conteudo foi truncado! Resultado: {result}"
assert "J." in result, f"Conteudo foi truncado! Resultado: {result}"
print(f"✅ _force_min_lines preservou todo o conteudo")
print(f" Resultado: {result}")
def test_force_min_lines_preserves_long_text():
print("\n=== Testando _force_min_lines com texto longo ===")
sentences = " ".join([f"Sentenca{i}." for i in range(1, 26)])
result = _force_min_lines(sentences, 10)
assert "Sentenca20." in result
assert "Sentenca25." in result
print("✅ _force_min_lines nao truncou texto longo")
def test_split_message_short():
print("\n=== Testando _split_message_for_telegram mensagem curta ===")
text = "Ola, tudo bem?"
parts = _split_message_for_telegram(text)
assert len(parts) == 1
assert parts[0] == text
print("✅ Mensagem curta nao foi dividida")
def test_split_message_exactly_at_limit():
print("\n=== Testando _split_message_for_telegram no limite ===")
text = "A" * MAX_TELEGRAM_MESSAGE_LENGTH
parts = _split_message_for_telegram(text)
assert len(parts) == 1
assert len(parts[0]) == MAX_TELEGRAM_MESSAGE_LENGTH
print(f"✅ Mensagem com {MAX_TELEGRAM_MESSAGE_LENGTH} chars nao foi dividida")
def test_split_message_long():
print("\n=== Testando _split_message_for_telegram mensagem longa ===")
paragraph = "Esta é uma fraselonga. " * 500
text = paragraph + "\n\n" + paragraph
parts = _split_message_for_telegram(text)
assert len(parts) > 1
for part in parts:
assert len(part) <= MAX_TELEGRAM_MESSAGE_LENGTH, f"Parte muito longa: {len(part)}"
print(f"✅ Mensagem longa dividida em {len(parts)} partes, todas <= {MAX_TELEGRAM_MESSAGE_LENGTH} chars")
def test_split_message_preserves_content():
print("\n=== Testando _split_message_for_telegram preserva conteudo ===")
text = "Paragrafo um.\n\nParagrafo dois.\n\nParagrafo tres."
parts = _split_message_for_telegram(text)
joined = "\n\n".join(parts)
assert joined == text
print("✅ Conteudo preservado apos split")
def test_split_message_very_long_single_paragraph():
print("\n=== Testando _split_message_for_telegram paragrafo muito longo ===")
text = "A. " * 5000
parts = _split_message_for_telegram(text)
assert len(parts) > 1
for part in parts:
assert len(part) <= MAX_TELEGRAM_MESSAGE_LENGTH
print(f"✅ Paragrafo longo dividido em {len(parts)} partes")
def main():
test_force_min_lines_no_truncation()
test_force_min_lines_preserves_long_text()
test_split_message_short()
test_split_message_exactly_at_limit()
test_split_message_long()
test_split_message_preserves_content()
test_split_message_very_long_single_paragraph()
print("\n=== Todos os testes de correcao de resposta concluidos ===")
if __name__ == "__main__":
main()