package bedrock_support import ( "testing" "github.com/stretchr/testify/assert" ) func TestCohereResponse_ParseResponse(t *testing.T) { response := &CohereResponse{} rawResponse := []byte(`{"completion": "Test completion", "stop_reason": "max_tokens"}`) result, err := response.ParseResponse(rawResponse) assert.NoError(t, err) assert.Equal(t, "Test completion", result) invalidResponse := []byte(`{"completion": "Test completion", "invalid_json":]`) _, err = response.ParseResponse(invalidResponse) assert.Error(t, err) } func TestAI21Response_ParseResponse(t *testing.T) { response := &AI21Response{} rawResponse := []byte(`{"completions": [{"data": {"text": "AI21 test"}}], "id": "123"}`) result, err := response.ParseResponse(rawResponse) assert.NoError(t, err) assert.Equal(t, "AI21 test", result) invalidResponse := []byte(`{"completions": [{"data": {"text": "AI21 test"}}, "invalid_json":]`) _, err = response.ParseResponse(invalidResponse) assert.Error(t, err) } func TestAmazonResponse_ParseResponse(t *testing.T) { response := &AmazonResponse{} rawResponse := []byte(`{"inputTextTokenCount": 10, "results": [{"tokenCount": 20, "outputText": "Amazon test", "completionReason": "stop"}]}`) result, err := response.ParseResponse(rawResponse) assert.NoError(t, err) assert.Equal(t, "Amazon test", result) invalidResponse := []byte(`{"inputTextTokenCount": 10, "results": [{"tokenCount": 20, "outputText": "Amazon test", "invalid_json":]`) _, err = response.ParseResponse(invalidResponse) assert.Error(t, err) } func TestNovaResponse_ParseResponse(t *testing.T) { response := &NovaResponse{} rawResponse := []byte(`{"output": {"message": {"content": [{"text": "Nova test"}]}}, "stopReason": "stop", "usage": {"inputTokens": 10, "outputTokens": 20, "totalTokens": 30, "cacheReadInputTokenCount": 5}}`) result, err := response.ParseResponse(rawResponse) assert.NoError(t, err) assert.Equal(t, "Nova test", result) rawResponseEmptyContent := []byte(`{"output": {"message": {"content": []}}, "stopReason": "stop", "usage": {"inputTokens": 10, "outputTokens": 20, "totalTokens": 30, "cacheReadInputTokenCount": 5}}`) resultEmptyContent, errEmptyContent := response.ParseResponse(rawResponseEmptyContent) assert.NoError(t, errEmptyContent) assert.Equal(t, "", resultEmptyContent) invalidResponse := []byte(`{"output": {"message": {"content": [{"text": "Nova test"}}, "invalid_json":]`) _, err = response.ParseResponse(invalidResponse) assert.Error(t, err) }