github.com/apipluspower/gqlgen@v0.15.2/graphql/coercion_test.go (about)

     1  package graphql
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestCoerceList(t *testing.T) {
    11  
    12  	mapInput := map[string]interface{}{
    13  		"test": "value",
    14  		"nested": map[string]interface{}{
    15  			"nested": true,
    16  		},
    17  	}
    18  
    19  	jsonNumber := json.Number("12")
    20  
    21  	assert.Equal(t, []interface{}{"test", "values"}, CoerceList([]interface{}{"test", "values"}))
    22  	assert.Equal(t, []interface{}{"test"}, CoerceList("test"))
    23  	assert.Equal(t, []interface{}{"test"}, CoerceList([]string{"test"}))
    24  	assert.Equal(t, []interface{}{3}, CoerceList([]int{3}))
    25  	assert.Equal(t, []interface{}{3}, CoerceList(3))
    26  	assert.Equal(t, []interface{}{int32(3)}, CoerceList([]int32{3}))
    27  	assert.Equal(t, []interface{}{int64(2)}, CoerceList([]int64{2}))
    28  	assert.Equal(t, []interface{}{float32(3.14)}, CoerceList([]float32{3.14}))
    29  	assert.Equal(t, []interface{}{3.14}, CoerceList([]float64{3.14}))
    30  	assert.Equal(t, []interface{}{jsonNumber}, CoerceList([]json.Number{jsonNumber}))
    31  	assert.Equal(t, []interface{}{jsonNumber}, CoerceList(jsonNumber))
    32  	assert.Equal(t, []interface{}{true}, CoerceList([]bool{true}))
    33  	assert.Equal(t, []interface{}{mapInput}, CoerceList(mapInput))
    34  	assert.Equal(t, []interface{}{mapInput}, CoerceList([]interface{}{mapInput}))
    35  	assert.Equal(t, []interface{}{mapInput}, CoerceList([]map[string]interface{}{mapInput}))
    36  	assert.Empty(t, CoerceList(nil))
    37  
    38  }