aboutsummaryrefslogtreecommitdiffstats
path: root/api/graphql/graphql_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/graphql/graphql_test.go')
-rw-r--r--api/graphql/graphql_test.go220
1 files changed, 220 insertions, 0 deletions
diff --git a/api/graphql/graphql_test.go b/api/graphql/graphql_test.go
new file mode 100644
index 00000000..45e88e9a
--- /dev/null
+++ b/api/graphql/graphql_test.go
@@ -0,0 +1,220 @@
+package graphql
+
+import (
+ "testing"
+
+ "github.com/99designs/gqlgen/client"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+
+ "github.com/MichaelMure/git-bug/api/graphql/models"
+ "github.com/MichaelMure/git-bug/cache"
+ "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(repo)
+
+ random_bugs.FillRepoWithSeed(repo, 10, 42)
+
+ mrc := cache.NewMultiRepoCache()
+ _, err := mrc.RegisterDefaultRepository(repo)
+ require.NoError(t, err)
+
+ handler := NewHandler(mrc)
+
+ c := client.New(handler)
+
+ query := `
+ query {
+ repository {
+ 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 {
+ Repository 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
+ }
+ }
+ }
+ }
+ }
+ }
+
+ err = c.Post(query, &resp)
+ assert.NoError(t, err)
+}