package services import "testing" // El bug real: whisper-asr-webservice devuelve texto plano (su parámetro es // `output`, no `response_format`), y exigir JSON hacía que una transcripción // buena se reportara como error con el texto correcto dentro del mensaje. func TestTextoDeRespuestaWhisper(t *testing.T) { casos := []struct { nombre string cuerpo string esperado string falla bool }{ {"texto plano", "Buenas tardes, respecto al punto uno...", "Buenas tardes, respecto al punto uno...", false}, {"texto plano con espacios", " hola mundo \n", "hola mundo", false}, {"json compatible con openai", `{"text":"hola mundo"}`, "hola mundo", false}, {"json con espacios en el texto", `{"text":" hola "}`, "hola", false}, {"json sin campo text cae a crudo", `{"resultado":"x"}`, `{"resultado":"x"}`, false}, {"json con text vacío cae a crudo", `{"text":""}`, `{"text":""}`, false}, {"respuesta vacía es error", " ", "", true}, // Un texto que empieza con { pero no es JSON no debe romper el parseo. {"texto que parece json roto", `{esto no es json`, `{esto no es json`, false}, } for _, cas := range casos { t.Run(cas.nombre, func(t *testing.T) { got, err := textoDeRespuestaWhisper([]byte(cas.cuerpo)) if cas.falla { if err == nil { t.Fatalf("esperaba error para %q", cas.cuerpo) } return } if err != nil { t.Fatalf("no esperaba error: %v", err) } if got != cas.esperado { t.Errorf("textoDeRespuestaWhisper(%q) = %q, esperaba %q", cas.cuerpo, got, cas.esperado) } }) } }