package gemini import ( "context" "testing" "github.com/tidwall/gjson" ) func TestConvertCodexResponseToGemini_StreamEmptyOutputUsesOutputItemDoneMessageFallback(t *testing.T) { ctx := context.Background() originalRequest := []byte(`{"tools":[]}`) var param any chunks := [][]byte{ []byte("data: {\"type\":\"response.output_item.done\",\"item\":{\"type\":\"message\",\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"ok\"}]},\"output_index\":0}"), []byte("data: {\"type\":\"response.completed\",\"response\":{\"usage\":{\"input_tokens\":1,\"output_tokens\":1}}}"), } var outputs [][]byte for _, chunk := range chunks { outputs = append(outputs, ConvertCodexResponseToGemini(ctx, "gemini-2.5-pro", originalRequest, nil, chunk, ¶m)...) } found := false for _, out := range outputs { if gjson.GetBytes(out, "candidates.0.content.parts.0.text").String() == "ok" { found = true break } } if !found { t.Fatalf("expected fallback content from response.output_item.done message; outputs=%q", outputs) } }