2018-11-21 20:56:12 +03:00
|
|
|
package graphql
|
2018-09-26 16:55:14 +03:00
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http/httptest"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/MichaelMure/git-bug/graphql/models"
|
2019-02-16 15:48:46 +03:00
|
|
|
"github.com/MichaelMure/git-bug/misc/random_bugs"
|
|
|
|
"github.com/MichaelMure/git-bug/repository"
|
2018-11-21 20:56:12 +03:00
|
|
|
"github.com/MichaelMure/git-bug/util/test"
|
2018-09-26 16:55:14 +03:00
|
|
|
"github.com/vektah/gqlgen/client"
|
|
|
|
)
|
|
|
|
|
2019-02-16 15:48:46 +03:00
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2018-09-26 16:55:14 +03:00
|
|
|
func TestQueries(t *testing.T) {
|
2019-02-16 15:48:46 +03:00
|
|
|
repo := CreateFilledRepo(10)
|
2018-09-26 16:55:14 +03:00
|
|
|
|
2018-11-21 20:56:12 +03:00
|
|
|
handler, err := NewHandler(repo)
|
2018-09-26 16:55:14 +03:00
|
|
|
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"`
|
2018-09-29 00:51:47 +03:00
|
|
|
HumanId string `json:"humanId"`
|
2018-09-26 16:55:14 +03:00
|
|
|
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)
|
|
|
|
}
|