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