github.com/luciferinlove/gqlgen@v0.17.16-bzc.1/codegen/testserver/followschema/primitive_objects_test.go (about)

     1  package followschema
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/luciferinlove/gqlgen/client"
     8  	"github.com/luciferinlove/gqlgen/graphql/handler"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestPrimitiveObjects(t *testing.T) {
    13  	resolvers := &Stub{}
    14  	resolvers.QueryResolver.PrimitiveObject = func(ctx context.Context) (out []Primitive, e error) {
    15  		return []Primitive{2, 4}, nil
    16  	}
    17  
    18  	resolvers.PrimitiveResolver.Value = func(ctx context.Context, obj *Primitive) (i int, e error) {
    19  		return int(*obj), nil
    20  	}
    21  
    22  	c := client.New(handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolvers})))
    23  
    24  	t.Run("can fetch value", func(t *testing.T) {
    25  		var resp struct {
    26  			PrimitiveObject []struct {
    27  				Value   int
    28  				Squared int
    29  			}
    30  		}
    31  		c.MustPost(`query { primitiveObject { value, squared } }`, &resp)
    32  
    33  		assert.Equal(t, 2, resp.PrimitiveObject[0].Value)
    34  		assert.Equal(t, 4, resp.PrimitiveObject[0].Squared)
    35  		assert.Equal(t, 4, resp.PrimitiveObject[1].Value)
    36  		assert.Equal(t, 16, resp.PrimitiveObject[1].Squared)
    37  	})
    38  }
    39  
    40  func TestPrimitiveStringObjects(t *testing.T) {
    41  	resolvers := &Stub{}
    42  	resolvers.QueryResolver.PrimitiveStringObject = func(ctx context.Context) (out []PrimitiveString, e error) {
    43  		return []PrimitiveString{"hello", "world"}, nil
    44  	}
    45  
    46  	resolvers.PrimitiveStringResolver.Value = func(ctx context.Context, obj *PrimitiveString) (i string, e error) {
    47  		return string(*obj), nil
    48  	}
    49  
    50  	resolvers.PrimitiveStringResolver.Len = func(ctx context.Context, obj *PrimitiveString) (i int, e error) {
    51  		return len(string(*obj)), nil
    52  	}
    53  
    54  	c := client.New(handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolvers})))
    55  
    56  	t.Run("can fetch value", func(t *testing.T) {
    57  		var resp struct {
    58  			PrimitiveStringObject []struct {
    59  				Value   string
    60  				Doubled string
    61  				Len     int
    62  			}
    63  		}
    64  		c.MustPost(`query { primitiveStringObject { value, doubled, len } }`, &resp)
    65  
    66  		assert.Equal(t, "hello", resp.PrimitiveStringObject[0].Value)
    67  		assert.Equal(t, "hellohello", resp.PrimitiveStringObject[0].Doubled)
    68  		assert.Equal(t, 5, resp.PrimitiveStringObject[0].Len)
    69  		assert.Equal(t, "world", resp.PrimitiveStringObject[1].Value)
    70  		assert.Equal(t, "worldworld", resp.PrimitiveStringObject[1].Doubled)
    71  		assert.Equal(t, 5, resp.PrimitiveStringObject[1].Len)
    72  	})
    73  }