github.com/operandinc/gqlgen@v0.16.1/codegen/testserver/singlefile/enums_test.go (about)

     1  package singlefile
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/operandinc/gqlgen/client"
     8  	"github.com/operandinc/gqlgen/graphql/handler"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestEnumsResolver(t *testing.T) {
    13  	resolvers := &Stub{}
    14  	resolvers.QueryResolver.EnumInInput = func(ctx context.Context, input *InputWithEnumValue) (EnumTest, error) {
    15  		return input.Enum, nil
    16  	}
    17  
    18  	c := client.New(handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolvers})))
    19  
    20  	t.Run("input with valid enum value", func(t *testing.T) {
    21  		var resp struct {
    22  			EnumInInput EnumTest
    23  		}
    24  		c.MustPost(`query {
    25  			enumInInput(input: {enum: OK})
    26  		}
    27  		`, &resp)
    28  		require.Equal(t, resp.EnumInInput, EnumTestOk)
    29  	})
    30  
    31  	t.Run("input with invalid enum value", func(t *testing.T) {
    32  		var resp struct {
    33  			EnumInInput EnumTest
    34  		}
    35  		err := c.Post(`query {
    36  			enumInInput(input: {enum: INVALID})
    37  		}
    38  		`, &resp)
    39  		require.EqualError(t, err, `http 422: {"errors":[{"message":"Expected type EnumTest!, found INVALID.","locations":[{"line":2,"column":30}],"extensions":{"code":"GRAPHQL_VALIDATION_FAILED"}}],"data":null}`)
    40  	})
    41  
    42  	t.Run("input with invalid enum value via vars", func(t *testing.T) {
    43  		var resp struct {
    44  			EnumInInput EnumTest
    45  		}
    46  		err := c.Post(`query ($input: InputWithEnumValue) {
    47  			enumInInput(input: $input)
    48  		}
    49  		`, &resp, client.Var("input", map[string]interface{}{"enum": "INVALID"}))
    50  		require.EqualError(t, err, `http 422: {"errors":[{"message":"INVALID is not a valid EnumTest","path":["variable","input","enum"],"extensions":{"code":"GRAPHQL_VALIDATION_FAILED"}}],"data":null}`)
    51  	})
    52  }