aboutsummaryrefslogtreecommitdiffstats
path: root/graphql/graphql_test.go
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2019-03-01 23:17:57 +0100
committerGitHub <noreply@github.com>2019-03-01 23:17:57 +0100
commit7260ca05bc3588c0572887a7d8f1b897c7fc13da (patch)
tree66854358df3cb9de651f7688556ec5a4b8ab1868 /graphql/graphql_test.go
parent0aefae6fcca5786f2c898029c3d6282f760f2c63 (diff)
parentb6bed784e5664819250aac20b2b9690879ee6ab1 (diff)
downloadgit-bug-7260ca05bc3588c0572887a7d8f1b897c7fc13da.tar.gz
Merge pull request #89 from MichaelMure/identity
WIP identity in git
Diffstat (limited to 'graphql/graphql_test.go')
-rw-r--r--graphql/graphql_test.go162
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)
+}