git-bug/graphql/graphql_test.go
2020-02-05 23:42:49 +01:00

216 lines
4.7 KiB
Go

package graphql
import (
"testing"
"github.com/99designs/gqlgen/client"
"github.com/MichaelMure/git-bug/graphql/models"
"github.com/MichaelMure/git-bug/misc/random_bugs"
"github.com/MichaelMure/git-bug/repository"
)
func TestQueries(t *testing.T) {
repo := repository.CreateTestRepo(false)
defer repository.CleanupTestRepos(t, repo)
random_bugs.FillRepoWithSeed(repo, 10, 42)
handler, err := NewHandler(repo)
if err != nil {
t.Fatal(err)
}
c := client.New(handler)
query := `
query {
defaultRepository {
allBugs(first: 2) {
pageInfo {
endCursor
hasNextPage
startCursor
hasPreviousPage
}
nodes{
author {
name
email
avatarUrl
}
createdAt
humanId
id
lastEdit
status
title
actors(first: 10) {
pageInfo {
endCursor
hasNextPage
startCursor
hasPreviousPage
}
nodes {
id
humanId
name
displayName
}
}
participants(first: 10) {
pageInfo {
endCursor
hasNextPage
startCursor
hasPreviousPage
}
nodes {
id
humanId
name
displayName
}
}
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 {
name
color {
R
G
B
}
}
removed {
name
color {
R
G
B
}
}
}
}
}
}
}
}
}`
type Identity struct {
Id string `json:"id"`
HumanId string `json:"humanId"`
Name string `json:"name"`
Email string `json:"email"`
AvatarUrl string `json:"avatarUrl"`
DisplayName string `json:"displayName"`
}
type Label struct {
Name string
Color struct {
R, G, B int
}
}
var resp struct {
DefaultRepository struct {
AllBugs struct {
PageInfo models.PageInfo
Nodes []struct {
Author Identity
CreatedAt string `json:"createdAt"`
HumanId string `json:"humanId"`
Id string
LastEdit string `json:"lastEdit"`
Status string
Title string
Actors struct {
PageInfo models.PageInfo
Nodes []Identity
}
Participants struct {
PageInfo models.PageInfo
Nodes []Identity
}
Comments struct {
PageInfo models.PageInfo
Nodes []struct {
Files []string
Message string
}
}
Operations struct {
PageInfo models.PageInfo
Nodes []struct {
Author Identity
Date string
Title string
Files []string
Message string
Was string
Status string
Added []Label
Removed []Label
}
}
}
}
}
}
c.MustPost(query, &resp)
}