aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2018-09-26 15:55:14 +0200
committerMichael Muré <batolettre@gmail.com>2018-09-26 16:26:50 +0200
commitf969370901f9f6d3c71c0391c74ac933d683e784 (patch)
tree9230635ac72092f753edc06312d9319c2759f88e /tests
parent879e147e2be0b6216a00f8141e71647a0be5b566 (diff)
downloadgit-bug-f969370901f9f6d3c71c0391c74ac933d683e784.tar.gz
graphql: add a general test for the handler/resolvers
Diffstat (limited to 'tests')
-rw-r--r--tests/graphql_test.go148
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)
+}