...

Source file src/github.com/99designs/gqlgen/codegen/testserver/followschema/time_test.go

Documentation: github.com/99designs/gqlgen/codegen/testserver/followschema

     1  package followschema
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/stretchr/testify/require"
     9  
    10  	"github.com/99designs/gqlgen/client"
    11  	"github.com/99designs/gqlgen/graphql/handler"
    12  )
    13  
    14  func TestTime(t *testing.T) {
    15  	resolvers := &Stub{}
    16  
    17  	c := client.New(handler.NewDefaultServer(NewExecutableSchema(Config{Resolvers: resolvers})))
    18  
    19  	resolvers.QueryResolver.User = func(ctx context.Context, id int) (user *User, e error) {
    20  		return &User{}, nil
    21  	}
    22  
    23  	t.Run("zero value in nullable field", func(t *testing.T) {
    24  		var resp struct {
    25  			User struct {
    26  				Updated *string
    27  			}
    28  		}
    29  
    30  		err := c.Post(`query { user(id: 1) { updated } }`, &resp)
    31  		require.NoError(t, err)
    32  
    33  		require.Nil(t, resp.User.Updated)
    34  	})
    35  
    36  	t.Run("zero value in non nullable field", func(t *testing.T) {
    37  		var resp struct {
    38  			User struct {
    39  				Created *string
    40  			}
    41  		}
    42  
    43  		err := c.Post(`query { user(id: 1) { created } }`, &resp)
    44  		require.EqualError(t, err, `[{"message":"the requested element is null which the schema does not allow","path":["user","created"]}]`)
    45  	})
    46  
    47  	t.Run("with values", func(t *testing.T) {
    48  		resolvers.QueryResolver.User = func(ctx context.Context, id int) (user *User, e error) {
    49  			updated := time.Date(2010, 1, 1, 0, 0, 20, 1, time.UTC)
    50  			return &User{
    51  				Created: time.Date(2010, 1, 1, 0, 0, 10, 1, time.UTC),
    52  				Updated: &updated,
    53  			}, nil
    54  		}
    55  
    56  		var resp struct {
    57  			User struct {
    58  				Created string
    59  				Updated string
    60  			}
    61  		}
    62  
    63  		err := c.Post(`query { user(id: 1) { created, updated } }`, &resp)
    64  		require.NoError(t, err)
    65  
    66  		require.Equal(t, "2010-01-01T00:00:10.000000001Z", resp.User.Created)
    67  		require.Equal(t, "2010-01-01T00:00:20.000000001Z", resp.User.Updated)
    68  	})
    69  }
    70  

View as plain text