From a681640cfebe778d3bb94fa87f6fabd781f1e8f3 Mon Sep 17 00:00:00 2001 From: Rodney Osodo Date: Tue, 11 Feb 2025 23:52:46 +0300 Subject: [PATCH] fix: marshal input as the last option for generic scalar Signed-off-by: Rodney Osodo --- graphql/string.go | 7 ++++++- graphql/string_test.go | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/graphql/string.go b/graphql/string.go index 6622734e3e0..376d28d3cc1 100644 --- a/graphql/string.go +++ b/graphql/string.go @@ -64,6 +64,11 @@ func UnmarshalString(v any) (string, error) { case nil: return "", nil default: - return "", fmt.Errorf("%T is not a string", v) + payload, err := json.Marshal(v) + if err != nil { + return "", fmt.Errorf("failed to marshal value of type %T: %w", v, err) + } + + return string(payload), nil } } diff --git a/graphql/string_test.go b/graphql/string_test.go index 5ca1c36a4d3..76b5f6f62d1 100644 --- a/graphql/string_test.go +++ b/graphql/string_test.go @@ -31,6 +31,8 @@ func TestString(t *testing.T) { assert.Equal(t, "true", mustUnmarshalString(t, true)) assert.Equal(t, "false", mustUnmarshalString(t, false)) assert.Equal(t, "", mustUnmarshalString(t, nil)) + assert.Equal(t, `{"hello":"world"}`, mustUnmarshalString(t, map[string]interface{}{"hello": "world"})) + assert.Equal(t, `{"hello":123}`, mustUnmarshalString(t, map[string]interface{}{"hello": 123})) }) }