github.com/99designs/gqlgen@v0.17.45/codegen/testserver/singlefile/time_test.go (about) 1 package singlefile 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 }