diff options
author | Michael Muré <batolettre@gmail.com> | 2018-09-26 15:55:14 +0200 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2018-09-26 16:26:50 +0200 |
commit | f969370901f9f6d3c71c0391c74ac933d683e784 (patch) | |
tree | 9230635ac72092f753edc06312d9319c2759f88e /tests/graphql_test.go | |
parent | 879e147e2be0b6216a00f8141e71647a0be5b566 (diff) | |
download | git-bug-f969370901f9f6d3c71c0391c74ac933d683e784.tar.gz |
graphql: add a general test for the handler/resolvers
Diffstat (limited to 'tests/graphql_test.go')
-rw-r--r-- | tests/graphql_test.go | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/tests/graphql_test.go b/tests/graphql_test.go new file mode 100644 index 00000000..c6dcd9e0 --- /dev/null +++ b/tests/graphql_test.go @@ -0,0 +1,148 @@ +package tests + +import ( + "net/http/httptest" + "testing" + + "github.com/MichaelMure/git-bug/graphql" + "github.com/MichaelMure/git-bug/graphql/models" + "github.com/vektah/gqlgen/client" +) + +func TestQueries(t *testing.T) { + repo := createFilledRepo(10) + + handler, err := graphql.NewHandler(repo) + if err != nil { + t.Fatal(err) + } + + srv := httptest.NewServer(handler) + c := client.New(srv.URL) + + query := ` + query { + defaultRepository { + allBugs(first: 2) { + pageInfo { + endCursor + hasNextPage + startCursor + hasPreviousPage + } + nodes{ + author { + name + email + avatarUrl + } + + createdAt + humanId + id + lastEdit + status + title + + comments(first: 2) { + pageInfo { + endCursor + hasNextPage + startCursor + hasPreviousPage + } + nodes { + files + message + } + } + + operations(first: 20) { + pageInfo { + endCursor + hasNextPage + startCursor + hasPreviousPage + } + nodes { + author { + name + email + avatarUrl + } + date + ... on CreateOperation { + title + message + files + } + ... on SetTitleOperation { + title + was + } + ... on AddCommentOperation { + files + message + } + ... on SetStatusOperation { + status + } + ... on LabelChangeOperation { + added + removed + } + } + } + } + } + } + }` + + type Person struct { + Name string `json:"name"` + Email string `json:"email"` + AvatarUrl string `json:"avatarUrl"` + } + + var resp struct { + DefaultRepository struct { + AllBugs struct { + PageInfo models.PageInfo + Nodes []struct { + Author Person + CreatedAt string `json:"createdAt"` + HumandId string `json:"humanId"` + Id string + LastEdit string `json:"lastEdit"` + Status string + Title string + + Comments struct { + PageInfo models.PageInfo + Nodes []struct { + Files []string + Message string + } + } + + Operations struct { + PageInfo models.PageInfo + Nodes []struct { + Author Person + Date string + Title string + Files []string + Message string + Was string + Status string + Added []string + Removed []string + } + } + } + } + } + } + + c.MustPost(query, &resp) +} |