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  }