diff options
Diffstat (limited to 'graphql/graphql_test.go')
-rw-r--r-- | graphql/graphql_test.go | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/graphql/graphql_test.go b/graphql/graphql_test.go new file mode 100644 index 00000000..d571ce51 --- /dev/null +++ b/graphql/graphql_test.go @@ -0,0 +1,162 @@ +package graphql + +import ( + "net/http/httptest" + "testing" + + "github.com/MichaelMure/git-bug/graphql/models" + "github.com/MichaelMure/git-bug/misc/random_bugs" + "github.com/MichaelMure/git-bug/repository" + "github.com/MichaelMure/git-bug/util/test" + "github.com/vektah/gqlgen/client" +) + +func CreateFilledRepo(bugNumber int) repository.ClockedRepo { + repo := test.CreateRepo(false) + + var seed int64 = 42 + options := random_bugs.DefaultOptions() + + options.BugNumber = bugNumber + + random_bugs.CommitRandomBugsWithSeed(repo, options, seed) + return repo +} + +func TestQueries(t *testing.T) { + repo := CreateFilledRepo(10) + + handler, err := 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"` + HumanId 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) +} |