Skip to content

Commit b5d63da

Browse files
committed
adds couple of tests for graphql.FieldResolveFn - #44
adds query and mutation tests to check error from is being handled
1 parent c7e177b commit b5d63da

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

definition_test.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package graphql_test
22

33
import (
4+
"errors"
45
"fmt"
56
"reflect"
67
"testing"
@@ -66,6 +67,10 @@ var blogArticle = graphql.NewObject(graphql.ObjectConfig{
6667
},
6768
},
6869
})
70+
71+
var ErrArticleQuery = errors.New("ErrArticleQuery")
72+
var ErrArticleMutation = errors.New("ErrArticleMutation")
73+
6974
var blogQuery = graphql.NewObject(graphql.ObjectConfig{
7075
Name: "Query",
7176
Fields: graphql.Fields{
@@ -76,6 +81,9 @@ var blogQuery = graphql.NewObject(graphql.ObjectConfig{
7681
Type: graphql.String,
7782
},
7883
},
84+
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
85+
return nil, ErrArticleQuery
86+
},
7987
},
8088
"feed": &graphql.Field{
8189
Type: graphql.NewList(blogArticle),
@@ -88,6 +96,14 @@ var blogMutation = graphql.NewObject(graphql.ObjectConfig{
8896
Fields: graphql.Fields{
8997
"writeArticle": &graphql.Field{
9098
Type: blogArticle,
99+
Args: graphql.FieldConfigArgument{
100+
"title": &graphql.ArgumentConfig{
101+
Type: graphql.String,
102+
},
103+
},
104+
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
105+
return nil, ErrArticleMutation
106+
},
91107
},
92108
},
93109
})
@@ -533,3 +549,45 @@ func TestTypeSystem_DefinitionExample_DoesNotMutatePassedFieldDefinitions(t *tes
533549
}
534550

535551
}
552+
553+
func TestQuery_FieldResolveFn_AddsErrorsToGraphQLResult(t *testing.T) {
554+
blogSchema, err := graphql.NewSchema(graphql.SchemaConfig{
555+
Query: blogQuery,
556+
Mutation: blogMutation,
557+
})
558+
if err != nil {
559+
t.Fatalf("unexpected error, got: %v", err)
560+
}
561+
query := "{ article(id:\"1\") { id } }"
562+
result := graphql.Do(graphql.Params{
563+
Schema: blogSchema,
564+
RequestString: query,
565+
})
566+
if len(result.Errors) == 0 {
567+
t.Fatal("wrong result, expected errors, got no errors")
568+
}
569+
if result.Errors[0].Error() != ErrArticleQuery.Error() {
570+
t.Fatalf("wrong result, unexpected error, got: %v, expected: %v", result.Errors[0], ErrArticleQuery)
571+
}
572+
}
573+
574+
func TestMutation_FieldResolveFn_AddsErrorsToGraphQLResult(t *testing.T) {
575+
blogSchema, err := graphql.NewSchema(graphql.SchemaConfig{
576+
Query: blogQuery,
577+
Mutation: blogMutation,
578+
})
579+
if err != nil {
580+
t.Fatalf("unexpected error, got: %v", err)
581+
}
582+
query := "mutation _ { newArticle: writeArticle(title:\"article title\") { id } }"
583+
result := graphql.Do(graphql.Params{
584+
Schema: blogSchema,
585+
RequestString: query,
586+
})
587+
if len(result.Errors) == 0 {
588+
t.Fatal("wrong result, expected errors, got no errors")
589+
}
590+
if result.Errors[0].Error() != ErrArticleMutation.Error() {
591+
t.Fatalf("wrong result, unexpected error, got: %v, expected: %v", result.Errors[0], ErrArticleMutation)
592+
}
593+
}

0 commit comments

Comments
 (0)