func TestTypeSystem_SchemaMustContainUniquelyNamedTypes_RejectsASchemaWhichRedefinesABuiltInType(t *testing.T) { fakeString := types.NewGraphQLScalarType(types.GraphQLScalarTypeConfig{ Name: "String", Serialize: func(value interface{}) interface{} { return nil }, }) queryType := types.NewGraphQLObjectType(types.GraphQLObjectTypeConfig{ Name: "Query", Fields: types.GraphQLFieldConfigMap{ "normal": &types.GraphQLFieldConfig{ Type: types.GraphQLString, }, "fake": &types.GraphQLFieldConfig{ Type: fakeString, }, }, }) _, err := types.NewGraphQLSchema(types.GraphQLSchemaConfig{ Query: queryType, }) expectedError := `Schema must contain unique named types but contains multiple types named "String".` if err == nil || err.Error() != expectedError { t.Fatalf("Expected error: %v, got %v", expectedError, err) } }
func TestTypeSystem_ScalarTypesMustBeSerializable_RejectsAScalarTypeNotDefiningSerialize(t *testing.T) { _, err := schemaWithFieldType(types.NewGraphQLScalarType(types.GraphQLScalarTypeConfig{ Name: "SomeScalar", })) expectedError := `SomeScalar must provide "serialize" function. If this custom Scalar ` + `is also used as an input type, ensure "parseValue" and "parseLiteral" ` + `functions are also provided.` if err == nil || err.Error() != expectedError { t.Fatalf("Expected error: %v, got %v", expectedError, err) } }
func TestTypeSystem_ScalarTypesMustBeSerializable_AcceptsAScalarTypeDefiningSerialize(t *testing.T) { _, err := schemaWithFieldType(types.NewGraphQLScalarType(types.GraphQLScalarTypeConfig{ Name: "SomeScalar", Serialize: func(value interface{}) interface{} { return nil }, })) if err != nil { t.Fatalf("unexpected error: %v", err) } }
func TestTypeSystem_ScalarTypesMustBeSerializable_RejectsAScalarTypeDefiningParseLiteralButNotParseValue(t *testing.T) { _, err := schemaWithFieldType(types.NewGraphQLScalarType(types.GraphQLScalarTypeConfig{ Name: "SomeScalar", Serialize: func(value interface{}) interface{} { return nil }, ParseLiteral: func(valueAST ast.Value) interface{} { return nil }, })) expectedError := `SomeScalar must provide both "parseValue" and "parseLiteral" functions.` if err == nil || err.Error() != expectedError { t.Fatalf("Expected error: %v, got %v", expectedError, err) } }
"github.com/chris-ramon/graphql-go/types" "reflect" "testing" ) var testComplexScalar *types.GraphQLScalarType = types.NewGraphQLScalarType(types.GraphQLScalarTypeConfig{ Name: "ComplexScalar", Serialize: func(value interface{}) interface{} { if value == "DeserializedValue" { return "SerializedValue" } return nil }, ParseValue: func(value interface{}) interface{} { if value == "SerializedValue" { return "DeserializedValue" } return nil }, ParseLiteral: func(valueAST ast.Value) interface{} { astValue := valueAST.GetValue() if astValue, ok := astValue.(string); ok && astValue == "SerializedValue" { return "DeserializedValue" } return nil }, }) var testInputObject *types.GraphQLInputObjectType = types.NewGraphQLInputObjectType(types.InputObjectConfig{ Name: "TestInputObject", Fields: types.InputObjectConfigFieldMap{ "a": &types.InputObjectFieldConfig{
package types_test import ( "testing" "github.com/chris-ramon/graphql-go/language/ast" "github.com/chris-ramon/graphql-go/types" ) var someScalarType = types.NewGraphQLScalarType(types.GraphQLScalarTypeConfig{ Name: "SomeScalar", Serialize: func(value interface{}) interface{} { return nil }, ParseValue: func(value interface{}) interface{} { return nil }, ParseLiteral: func(valueAST ast.Value) interface{} { return nil }, }) var someObjectType = types.NewGraphQLObjectType(types.GraphQLObjectTypeConfig{ Name: "SomeObject", Fields: types.GraphQLFieldConfigMap{ "f": &types.GraphQLFieldConfig{ Type: types.GraphQLString, }, }, }) var objectWithIsTypeOf = types.NewGraphQLObjectType(types.GraphQLObjectTypeConfig{ Name: "ObjectWithIsTypeOf",