| package claude | |
| import "testing" | |
| func TestBuildMessageResponseSkipsThinkingFallbackWhenFinalTextExists(t *testing.T) { | |
| resp := BuildMessageResponse( | |
| "msg_1", | |
| "claude-sonnet-4-5", | |
| []any{map[string]any{"role": "user", "content": "hi"}}, | |
| `{"tool_calls":[{"name":"search","input":{"q":"go"}}]}`, | |
| "normal answer", | |
| []string{"search"}, | |
| ) | |
| if resp["stop_reason"] != "end_turn" { | |
| t.Fatalf("expected stop_reason=end_turn, got=%#v", resp["stop_reason"]) | |
| } | |
| content, _ := resp["content"].([]map[string]any) | |
| foundText := false | |
| foundTool := false | |
| for _, block := range content { | |
| if block["type"] == "text" && block["text"] == "normal answer" { | |
| foundText = true | |
| } | |
| if block["type"] == "tool_use" { | |
| foundTool = true | |
| } | |
| } | |
| if !foundText { | |
| t.Fatalf("expected text block with finalText, got=%#v", resp["content"]) | |
| } | |
| if foundTool { | |
| t.Fatalf("unexpected tool_use block when finalText exists, got=%#v", resp["content"]) | |
| } | |
| } | |