func TestNonNull_NullsANullableFieldThatSynchronouslyReturnsNullInAPromise(t *testing.T) { doc := ` query Q { promise } ` expected := &graphql.Result{ Data: map[string]interface{}{ "promise": nil, }, } // parse query ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: nonNullTestSchema, AST: ast, Root: nullingData, } result := testutil.TestExecute(t, ep) if len(result.Errors) != len(expected.Errors) { t.Fatalf("Unexpected errors, Diff: %v", testutil.Diff(expected.Errors, result.Errors)) } if !reflect.DeepEqual(expected.Data, result.Data) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected.Data, result.Data)) } if !reflect.DeepEqual(expected.Errors, result.Errors) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected.Errors, result.Errors)) } }
func TestNonNull_NullsTheTopLevelIfSyncNonNullableFieldResolvesNull(t *testing.T) { doc := ` query Q { nonNullPromise } ` expected := &graphql.Result{ Data: nil, Errors: []gqlerrors.FormattedError{ gqlerrors.FormattedError{ Message: `Cannot return null for non-nullable field DataType.nonNullPromise.`, Locations: []location.SourceLocation{ location.SourceLocation{Line: 2, Column: 17}, }, }, }, } // parse query ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: nonNullTestSchema, AST: ast, Root: nullingData, } result := testutil.TestExecute(t, ep) if len(result.Errors) != len(expected.Errors) { t.Fatalf("Unexpected errors, Diff: %v", testutil.Diff(expected.Errors, result.Errors)) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVariables_ObjectsAndNullability_UsingVariables_ErrorsOnIncorrectType(t *testing.T) { params := map[string]interface{}{ "input": "foo bar", } expected := &graphql.Result{ Data: nil, Errors: []gqlerrors.FormattedError{ gqlerrors.FormattedError{ Message: `Variable "$input" expected value of type "TestInputObject" but ` + `got: "foo bar".`, Locations: []location.SourceLocation{ location.SourceLocation{ Line: 2, Column: 17, }, }, }, }, } ast := testVariables_ObjectsAndNullability_UsingVariables_GetAST(t) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: ast, Args: params, } result := testutil.TestExecute(t, ep) if len(result.Errors) != len(expected.Errors) { t.Fatalf("Unexpected errors, Diff: %v", testutil.Diff(expected.Errors, result.Errors)) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVariables_ListsAndNullability_DoesNotAllowNonNullListsToBeNull(t *testing.T) { doc := ` query q($input: [String]!) { nnList(input: $input) } ` expected := &graphql.Result{ Data: nil, Errors: []gqlerrors.FormattedError{ gqlerrors.FormattedError{ Message: `Variable "$input" of required type "[String]!" was not provided.`, Locations: []location.SourceLocation{ location.SourceLocation{ Line: 2, Column: 17, }, }, }, }, } ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: ast, } result := testutil.TestExecute(t, ep) if len(result.Errors) != len(expected.Errors) { t.Fatalf("Unexpected errors, Diff: %v", testutil.Diff(expected.Errors, result.Errors)) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVariables_UsesArgumentDefaultValues_WhenArgumentProvidedCannotBeParsed(t *testing.T) { doc := ` { fieldWithDefaultArgumentValue(input: WRONG_TYPE) } ` expected := &graphql.Result{ Data: map[string]interface{}{ "fieldWithDefaultArgumentValue": `"Hello World"`, }, } ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: ast, } result := testutil.TestExecute(t, ep) if len(result.Errors) != len(expected.Errors) { t.Fatalf("Unexpected errors, Diff: %v", testutil.Diff(expected.Errors, result.Errors)) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVariables_ListsAndNullability_AllowsNonNullListsOfNonNulsToContainValues(t *testing.T) { doc := ` query q($input: [String!]!) { nnListNN(input: $input) } ` params := map[string]interface{}{ "input": []interface{}{"A"}, } expected := &graphql.Result{ Data: map[string]interface{}{ "nnListNN": `["A"]`, }, } ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: ast, Args: params, } result := testutil.TestExecute(t, ep) if len(result.Errors) != len(expected.Errors) { t.Fatalf("Unexpected errors, Diff: %v", testutil.Diff(expected.Errors, result.Errors)) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestMutations_ExecutionOrdering_EvaluatesMutationsSerially(t *testing.T) { root := newTestRoot(6) doc := `mutation M { first: immediatelyChangeTheNumber(newNumber: 1) { theNumber }, second: promiseToChangeTheNumber(newNumber: 2) { theNumber }, third: immediatelyChangeTheNumber(newNumber: 3) { theNumber } fourth: promiseToChangeTheNumber(newNumber: 4) { theNumber }, fifth: immediatelyChangeTheNumber(newNumber: 5) { theNumber } }` expected := &graphql.Result{ Data: map[string]interface{}{ "first": map[string]interface{}{ "theNumber": 1, }, "second": map[string]interface{}{ "theNumber": 2, }, "third": map[string]interface{}{ "theNumber": 3, }, "fourth": map[string]interface{}{ "theNumber": 4, }, "fifth": map[string]interface{}{ "theNumber": 5, }, }, } // parse query ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: mutationsTestSchema, AST: ast, Root: root, } result := testutil.TestExecute(t, ep) if len(result.Errors) != len(expected.Errors) { t.Fatalf("Unexpected errors, Diff: %v", testutil.Diff(expected.Errors, result.Errors)) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestUnionIntersectionTypes_ExecutesUnionTypesWithInlineFragments(t *testing.T) { // This is the valid version of the query in the above test. doc := ` { __typename name pets { __typename ... on Dog { name barks } ... on Cat { name meows } } } ` expected := &graphql.Result{ Data: map[string]interface{}{ "__typename": "Person", "name": "John", "pets": []interface{}{ map[string]interface{}{ "__typename": "Cat", "name": "Garfield", "meows": false, }, map[string]interface{}{ "__typename": "Dog", "name": "Odie", "barks": true, }, }, }, } // parse query ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: unionInterfaceTestSchema, AST: ast, Root: john, } result := testutil.TestExecute(t, ep) if len(result.Errors) != len(expected.Errors) { t.Fatalf("Unexpected errors, Diff: %v", testutil.Diff(expected.Errors, result.Errors)) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestUnionIntersectionTypes_ExecutesUsingInterfaceTypes(t *testing.T) { // NOTE: This is an *invalid* query, but it should be an *executable* query. doc := ` { __typename name friends { __typename name barks meows } } ` expected := &graphql.Result{ Data: map[string]interface{}{ "__typename": "Person", "name": "John", "friends": []interface{}{ map[string]interface{}{ "__typename": "Person", "name": "Liz", }, map[string]interface{}{ "__typename": "Dog", "name": "Odie", "barks": true, }, }, }, } // parse query ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: unionInterfaceTestSchema, AST: ast, Root: john, } result := testutil.TestExecute(t, ep) if len(result.Errors) != len(expected.Errors) { t.Fatalf("Unexpected errors, Diff: %v", testutil.Diff(expected.Errors, result.Errors)) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVariables_ObjectsAndNullability_UsingInlineStructs_DoesNotUseIncorrectValue(t *testing.T) { doc := ` { fieldWithObjectInput(input: ["foo", "bar", "baz"]) } ` expected := &graphql.Result{ Data: map[string]interface{}{ "fieldWithObjectInput": nil, }, } // parse query ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: ast, } result := testutil.TestExecute(t, ep) if len(result.Errors) > 0 { t.Fatalf("wrong result, unexpected errors: %v", result.Errors) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVisitor_AllowsForEditingOnEnter(t *testing.T) { query := `{ a, b, c { a, b, c } }` astDoc := parse(t, query) expectedQuery := `{ a, c { a, c } }` expectedAST := parse(t, expectedQuery) v := &visitor.VisitorOptions{ Enter: func(p visitor.VisitFuncParams) (string, interface{}) { switch node := p.Node.(type) { case map[string]interface{}: if getMapValueString(node, "Kind") == "Field" && getMapValueString(node, "Name.Value") == "b" { return visitor.ActionUpdate, nil } } return visitor.ActionNoChange, nil }, } editedAst := visitor.Visit(astDoc, v, nil) if !reflect.DeepEqual(ASTToJSON(t, expectedAST), editedAst) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expectedAST, editedAst)) } }
func TestVariables_NullableScalars_AllowsNullableInputsToBeOmittedInAnUnlistedVariable(t *testing.T) { doc := ` query SetsNullable { fieldWithNullableStringInput(input: $value) } ` expected := &graphql.Result{ Data: map[string]interface{}{ "fieldWithNullableStringInput": nil, }, } ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: ast, } result := testutil.TestExecute(t, ep) if len(result.Errors) > 0 { t.Fatalf("wrong result, unexpected errors: %v", result.Errors) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVariables_ObjectsAndNullability_UsingVariables_UsesDefaultValueWhenNotProvided(t *testing.T) { doc := ` query q($input: TestInputObject = {a: "foo", b: ["bar"], c: "baz"}) { fieldWithObjectInput(input: $input) } ` expected := &graphql.Result{ Data: map[string]interface{}{ "fieldWithObjectInput": `{"a":"foo","b":["bar"],"c":"baz"}`, }, } withDefaultsAST := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: withDefaultsAST, } result := testutil.TestExecute(t, ep) if len(result.Errors) > 0 { t.Fatalf("wrong result, unexpected errors: %v", result.Errors) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVariables_NonNullableScalars_AllowsNonNullableInputsToBeSetToAValueDirectly(t *testing.T) { doc := ` { fieldWithNonNullableStringInput(input: "a") } ` params := map[string]interface{}{ "value": "a", } expected := &graphql.Result{ Data: map[string]interface{}{ "fieldWithNonNullableStringInput": `"a"`, }, } ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: ast, Args: params, } result := testutil.TestExecute(t, ep) if len(result.Errors) > 0 { t.Fatalf("wrong result, unexpected errors: %v", result.Errors) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVariables_ObjectsAndNullability_UsingInlineStructs_ProperlyParsesSingleValueToList(t *testing.T) { doc := ` { fieldWithObjectInput(input: {a: "foo", b: "bar", c: "baz"}) } ` expected := &graphql.Result{ Data: map[string]interface{}{ "fieldWithObjectInput": `{"a":"foo","b":["bar"],"c":"baz"}`, }, } // parse query ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: ast, } result := testutil.TestExecute(t, ep) if len(result.Errors) > 0 { t.Fatalf("wrong result, unexpected errors: %v", result.Errors) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVariables_NonNullableScalars_PassesAlongNullForNonNullableInputsIfExplicitlySetInTheQuery(t *testing.T) { doc := ` { fieldWithNonNullableStringInput } ` params := map[string]interface{}{ "value": "a", } expected := &graphql.Result{ Data: map[string]interface{}{ "fieldWithNonNullableStringInput": nil, }, } ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: ast, Args: params, } result := testutil.TestExecute(t, ep) if len(result.Errors) > 0 { t.Fatalf("wrong result, unexpected errors: %v", result.Errors) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVariables_ListsAndNullability_AllowsListsToContainNull(t *testing.T) { doc := ` query q($input: [String]) { list(input: $input) } ` params := map[string]interface{}{ "input": []interface{}{"A", nil, "B"}, } expected := &graphql.Result{ Data: map[string]interface{}{ "list": `["A",null,"B"]`, }, } ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: ast, Args: params, } result := testutil.TestExecute(t, ep) if len(result.Errors) > 0 { t.Fatalf("wrong result, unexpected errors: %v", result.Errors) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestDirectivesWorksOnInlineFragmentUnlessTrueIncludesInlineFragment(t *testing.T) { query := ` query Q { a ... on TestType @skip(if: true) { b } } fragment Frag on TestType { b } ` expected := &graphql.Result{ Data: map[string]interface{}{ "a": "a", }, } result := executeDirectivesTestQuery(t, query) if len(result.Errors) != 0 { t.Fatalf("wrong result, unexpected errors: %v", result.Errors) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVariables_ObjectsAndNullability_UsingVariables_ExecutesWithComplexScalarInput(t *testing.T) { params := map[string]interface{}{ "input": map[string]interface{}{ "c": "foo", "d": "SerializedValue", }, } expected := &graphql.Result{ Data: map[string]interface{}{ "fieldWithObjectInput": `{"c":"foo","d":"DeserializedValue"}`, }, } ast := testVariables_ObjectsAndNullability_UsingVariables_GetAST(t) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: ast, Args: params, } result := testutil.TestExecute(t, ep) if len(result.Errors) > 0 { t.Fatalf("wrong result, unexpected errors: %v", result.Errors) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVariables_ObjectsAndNullability_UsingVariables_ProperlyParsesSingleValueToList(t *testing.T) { params := map[string]interface{}{ "input": map[string]interface{}{ "a": "foo", "b": "bar", "c": "baz", }, } expected := &graphql.Result{ Data: map[string]interface{}{ "fieldWithObjectInput": `{"a":"foo","b":["bar"],"c":"baz"}`, }, } ast := testVariables_ObjectsAndNullability_UsingVariables_GetAST(t) // execute ep := graphql.ExecuteParams{ Schema: variablesTestSchema, AST: ast, Args: params, } result := testutil.TestExecute(t, ep) if len(result.Errors) > 0 { t.Fatalf("wrong result, unexpected errors: %v", result.Errors) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestIntrospection_IdentifiesDeprecatedFields(t *testing.T) { testType := graphql.NewObject(graphql.ObjectConfig{ Name: "TestType", Fields: graphql.Fields{ "nonDeprecated": &graphql.Field{ Type: graphql.String, }, "deprecated": &graphql.Field{ Type: graphql.String, DeprecationReason: "Removed in 1.0", }, }, }) schema, err := graphql.NewSchema(graphql.SchemaConfig{ Query: testType, }) if err != nil { t.Fatalf("Error creating Schema: %v", err.Error()) } query := ` { __type(name: "TestType") { name fields(includeDeprecated: true) { name isDeprecated, deprecationReason } } } ` expected := &graphql.Result{ Data: map[string]interface{}{ "__type": map[string]interface{}{ "name": "TestType", "fields": []interface{}{ map[string]interface{}{ "name": "nonDeprecated", "isDeprecated": false, "deprecationReason": nil, }, map[string]interface{}{ "name": "deprecated", "isDeprecated": true, "deprecationReason": "Removed in 1.0", }, }, }, }, } result := g(t, graphql.Params{ Schema: schema, RequestString: query, }) if !testutil.ContainSubset(result.Data.(map[string]interface{}), expected.Data.(map[string]interface{})) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func checkList(t *testing.T, testType graphql.Type, testData interface{}, expected *graphql.Result) { data := map[string]interface{}{ "test": testData, } dataType := graphql.NewObject(graphql.ObjectConfig{ Name: "DataType", Fields: graphql.Fields{ "test": &graphql.Field{ Type: testType, }, }, }) dataType.AddFieldConfig("nest", &graphql.Field{ Type: dataType, Resolve: func(p graphql.ResolveParams) interface{} { return data }, }) schema, err := graphql.NewSchema(graphql.SchemaConfig{ Query: dataType, }) if err != nil { t.Fatalf("Error in schema %v", err.Error()) } // parse query ast := testutil.TestParse(t, `{ nest { test } }`) // execute ep := graphql.ExecuteParams{ Schema: schema, AST: ast, Root: data, } result := testutil.TestExecute(t, ep) if len(expected.Errors) != len(result.Errors) { t.Fatalf("wrong result, Diff: %v", testutil.Diff(expected.Errors, result.Errors)) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func testGraphql(test T, p graphql.Params, t *testing.T) { result := graphql.Do(p) if len(result.Errors) > 0 { t.Fatalf("wrong result, unexpected errors: %v", result.Errors) } if !reflect.DeepEqual(result, test.Expected) { t.Fatalf("wrong result, query: %v, graphql result diff: %v", test.Query, testutil.Diff(test.Expected, result)) } }
func TestAvoidsRecursion(t *testing.T) { doc := ` query Q { a ...Frag ...Frag } fragment Frag on Type { a, ...Frag } ` data := map[string]interface{}{ "a": "b", } expected := &graphql.Result{ Data: map[string]interface{}{ "a": "b", }, } schema, err := graphql.NewSchema(graphql.SchemaConfig{ Query: graphql.NewObject(graphql.ObjectConfig{ Name: "Type", Fields: graphql.Fields{ "a": &graphql.Field{ Type: graphql.String, }, }, }), }) if err != nil { t.Fatalf("Error in schema %v", err.Error()) } // parse query ast := testutil.TestParse(t, doc) // execute ep := graphql.ExecuteParams{ Schema: schema, AST: ast, Root: data, OperationName: "Q", } result := testutil.TestExecute(t, ep) if len(result.Errors) > 0 { t.Fatalf("wrong result, unexpected errors: %v", result.Errors) } if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestVisitor_AllowsANamedFunctionsVisitorAPI(t *testing.T) { query := `{ a, b { x }, c }` astDoc := parse(t, query) visited := []interface{}{} expectedVisited := []interface{}{ []interface{}{"enter", "SelectionSet", nil}, []interface{}{"enter", "Name", "a"}, []interface{}{"enter", "Name", "b"}, []interface{}{"enter", "SelectionSet", nil}, []interface{}{"enter", "Name", "x"}, []interface{}{"leave", "SelectionSet", nil}, []interface{}{"enter", "Name", "c"}, []interface{}{"leave", "SelectionSet", nil}, } v := &visitor.VisitorOptions{ KindFuncMap: map[string]visitor.NamedVisitFuncs{ "Name": visitor.NamedVisitFuncs{ Kind: func(p visitor.VisitFuncParams) (string, interface{}) { switch node := p.Node.(type) { case map[string]interface{}: visited = append(visited, []interface{}{"enter", getMapValue(node, "Kind"), getMapValue(node, "Value")}) } return visitor.ActionNoChange, nil }, }, "SelectionSet": visitor.NamedVisitFuncs{ Enter: func(p visitor.VisitFuncParams) (string, interface{}) { switch node := p.Node.(type) { case map[string]interface{}: visited = append(visited, []interface{}{"enter", getMapValue(node, "Kind"), getMapValue(node, "Value")}) } return visitor.ActionNoChange, nil }, Leave: func(p visitor.VisitFuncParams) (string, interface{}) { switch node := p.Node.(type) { case map[string]interface{}: visited = append(visited, []interface{}{"leave", getMapValue(node, "Kind"), getMapValue(node, "Value")}) } return visitor.ActionNoChange, nil }, }, }, } _ = visitor.Visit(astDoc, v, nil) if !reflect.DeepEqual(visited, expectedVisited) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expectedVisited, visited)) } }
func TestTypeSystem_EnumValues_EnumMayBeBothInputAndOutputType(t *testing.T) { query := "{ colorEnum(fromEnum: GREEN) }" expected := &graphql.Result{ Data: map[string]interface{}{ "colorEnum": "GREEN", }, } result := executeEnumTypeTest(t, query) if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestPrinter_PrintsMinimalAST(t *testing.T) { astDoc := ast.NewField(&ast.Field{ Name: ast.NewName(&ast.Name{ Value: "foo", }), }) results := printer.Print(astDoc) expected := "foo" if !reflect.DeepEqual(results, expected) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, results)) } }
func TestSchemaPrinter_PrintsMinimalAST(t *testing.T) { astDoc := ast.NewScalarDefinition(&ast.ScalarDefinition{ Name: ast.NewName(&ast.Name{ Value: "foo", }), }) results := printer.Print(astDoc) expected := "scalar foo" if !reflect.DeepEqual(results, expected) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, results)) } }
func TestTypeSystem_EnumValues_AcceptsEnumLiteralsAsInput(t *testing.T) { query := "{ colorInt(fromEnum: GREEN) }" expected := &graphql.Result{ Data: map[string]interface{}{ "colorInt": 1, }, } result := executeEnumTypeTest(t, query) if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }
func TestTypeSystem_EnumValues_DoesNotAcceptIncorrectInternalValue(t *testing.T) { query := `{ colorEnum(fromString: "GREEN") }` expected := &graphql.Result{ Data: map[string]interface{}{ "colorEnum": nil, }, } result := executeEnumTypeTest(t, query) if !reflect.DeepEqual(expected, result) { t.Fatalf("Unexpected result, Diff: %v", testutil.Diff(expected, result)) } }