package service import ( "testing" "github.com/stretchr/testify/require" "github.com/tidwall/gjson" ) func TestApplyGrokImagineImageGeometryMapsOpenAISize(t *testing.T) { t.Parallel() out, err := applyGrokImagineImageGeometry([]byte(`{"model":"grok-imagine-image-2.0","prompt":"hi","size":"1152x1536"}`)) require.NoError(t, err) require.False(t, gjson.GetBytes(out, "size").Exists()) require.Equal(t, "2k", gjson.GetBytes(out, "resolution").String()) require.Equal(t, "3:4", gjson.GetBytes(out, "aspect_ratio").String()) } func TestApplyGrokImagineImageGeometryKeepsClientGeometry(t *testing.T) { t.Parallel() out, err := applyGrokImagineImageGeometry([]byte(`{"size":"1024x1024","resolution":"2K","aspect_ratio":"16:9"}`)) require.NoError(t, err) require.False(t, gjson.GetBytes(out, "size").Exists()) require.Equal(t, "2k", gjson.GetBytes(out, "resolution").String()) require.Equal(t, "16:9", gjson.GetBytes(out, "aspect_ratio").String()) } func TestSanitizeGrokMediaForwardBodyConvertsImageSize(t *testing.T) { t.Parallel() out, contentType, err := sanitizeGrokMediaForwardBody( GrokMediaEndpointImagesGenerations, []byte(`{"model":"grok-imagine-image","prompt":"hi","size":"1024x1024"}`), "application/json", ) require.NoError(t, err) require.Equal(t, "application/json", contentType) require.False(t, gjson.GetBytes(out, "size").Exists()) require.Equal(t, "1k", gjson.GetBytes(out, "resolution").String()) require.Equal(t, "1:1", gjson.GetBytes(out, "aspect_ratio").String()) } func TestParseGrokMediaRequestKeepsImageResolutionOutOfVideoNormalize(t *testing.T) { t.Parallel() info := ParseGrokMediaRequest("application/json", []byte(`{"model":"grok-imagine-image-2.0","resolution":"2K","aspect_ratio":"16:9"}`)) require.Equal(t, "2k", info.ImageResolution) require.Equal(t, "16:9", info.AspectRatio) require.Equal(t, VideoBillingResolution480P, info.Resolution) } func TestGrokImagineAspectRatioFromSize(t *testing.T) { t.Parallel() require.Equal(t, "1:1", grokImagineAspectRatioFromSize("1024x1024")) require.Equal(t, "3:4", grokImagineAspectRatioFromSize("1152x1536")) require.Equal(t, "4:3", grokImagineAspectRatioFromSize("1536x1152")) require.Equal(t, "16:9", grokImagineAspectRatioFromSize("1792x1024")) }