]> git.r.bdr.sh - rbdr/forum/blobdiff - pacts/forumclient-forumserver.json
Add topics store pact tests
[rbdr/forum] / pacts / forumclient-forumserver.json
index b1c7fcbc06839cb8db9dd5471a613de33cab83a4..337ff86fb4ef6653fadfbbd1bbab120d433a49a7 100644 (file)
@@ -19,7 +19,7 @@
           "operationName": "GetPost",
           "query": "query GetPost($id: ID!) {\n              post(id: $id) {\n                id\n                text\n                created_at\n                author {\n                  id\n                  handle\n                  __typename\n                }\n                topic {\n                  id\n                  title\n                  __typename\n                }\n                __typename\n              }\n            }",
           "variables": {
-            "id": "freezer"
+            "id": "8f75eba5-6989-4dd3-b466-e464546ce374"
           }
         },
         "matchingRules": {
@@ -98,7 +98,7 @@
           "operationName": "GetPost",
           "query": "query GetPost($id: ID!) {\n              post(id: $id) {\n                id\n                text\n                created_at\n                author {\n                  id\n                  handle\n                  __typename\n                }\n                topic {\n                  id\n                  title\n                  __typename\n                }\n                __typename\n              }\n            }",
           "variables": {
-            "id": "freezer"
+            "id": "8f75eba5-6989-4dd3-b466-e464546ce374"
           }
         },
         "matchingRules": {
           "operationName": "GetPost",
           "query": "query GetPost($id: ID!) {\n              post(id: $id) {\n                id\n                text\n                created_at\n                author {\n                  id\n                  handle\n                  __typename\n                }\n                topic {\n                  id\n                  title\n                  __typename\n                }\n                __typename\n              }\n            }",
           "variables": {
-            "id": "freezer"
+            "id": "8f75eba5-6989-4dd3-b466-e464546ce374"
           }
         },
         "matchingRules": {
         "headers": {
         }
       }
+    },
+    {
+      "description": "a request to get a single tag",
+      "providerState": "there's data",
+      "request": {
+        "method": "POST",
+        "path": "/graphql",
+        "headers": {
+          "content-type": "application/json"
+        },
+        "body": {
+          "operationName": "GetTag",
+          "query": "query GetTag($id: ID!) {\n              tag(id: $id) {\n                id\n                topics {\n                  id\n                  title\n                  updated_at\n                  ttl\n                  __typename\n                }\n                __typename\n              }\n            }",
+          "variables": {
+            "id": "pineapple"
+          }
+        },
+        "matchingRules": {
+          "$.body.query": {
+            "match": "regex",
+            "regex": "query\\s*GetTag\\(\\$id:\\s*ID!\\)\\s*\\{\\s*tag\\(id:\\s*\\$id\\)\\s*\\{\\s*id\\s*topics\\s*\\{\\s*id\\s*title\\s*updated_at\\s*ttl\\s*__typename\\s*\\}\\s*__typename\\s*\\}\\s*\\}"
+          }
+        }
+      },
+      "response": {
+        "status": 200,
+        "headers": {
+          "Content-Type": "application/json; charset=utf-8"
+        },
+        "body": {
+          "data": {
+            "tag": {
+              "id": "pineapple",
+              "topics": [
+                {
+                  "id": "cd038ae7-e8b4-4e38-9543-3d697e69ac34",
+                  "title": "This topic is about pineapples",
+                  "updated_at": 1619978944077,
+                  "ttl": 3555
+                }
+              ]
+            }
+          }
+        },
+        "matchingRules": {
+          "$.body.data.tag.id": {
+            "match": "type"
+          },
+          "$.body.data.tag.topics": {
+            "min": 1
+          },
+          "$.body.data.tag.topics[*].*": {
+            "match": "type"
+          },
+          "$.body.data.tag.topics[*].id": {
+            "match": "type"
+          },
+          "$.body.data.tag.topics[*].title": {
+            "match": "type"
+          },
+          "$.body.data.tag.topics[*].updated_at": {
+            "match": "type"
+          },
+          "$.body.data.tag.topics[*].ttl": {
+            "match": "type"
+          }
+        }
+      }
+    },
+    {
+      "description": "a request to get a single tag",
+      "providerState": "there's no data",
+      "request": {
+        "method": "POST",
+        "path": "/graphql",
+        "headers": {
+          "content-type": "application/json"
+        },
+        "body": {
+          "operationName": "GetTag",
+          "query": "query GetTag($id: ID!) {\n              tag(id: $id) {\n                id\n                topics {\n                  id\n                  title\n                  updated_at\n                  ttl\n                  __typename\n                }\n                __typename\n              }\n            }",
+          "variables": {
+            "id": "pineapple"
+          }
+        },
+        "matchingRules": {
+          "$.body.query": {
+            "match": "regex",
+            "regex": "query\\s*GetTag\\(\\$id:\\s*ID!\\)\\s*\\{\\s*tag\\(id:\\s*\\$id\\)\\s*\\{\\s*id\\s*topics\\s*\\{\\s*id\\s*title\\s*updated_at\\s*ttl\\s*__typename\\s*\\}\\s*__typename\\s*\\}\\s*\\}"
+          }
+        }
+      },
+      "response": {
+        "status": 200,
+        "headers": {
+          "Content-Type": "application/json; charset=utf-8"
+        },
+        "body": {
+          "data": {
+            "tag": null
+          }
+        }
+      }
+    },
+    {
+      "description": "a request to get a single tag",
+      "providerState": "there's an error",
+      "request": {
+        "method": "POST",
+        "path": "/graphql",
+        "headers": {
+          "content-type": "application/json"
+        },
+        "body": {
+          "operationName": "GetTag",
+          "query": "query GetTag($id: ID!) {\n              tag(id: $id) {\n                id\n                topics {\n                  id\n                  title\n                  updated_at\n                  ttl\n                  __typename\n                }\n                __typename\n              }\n            }",
+          "variables": {
+            "id": "pineapple"
+          }
+        },
+        "matchingRules": {
+          "$.body.query": {
+            "match": "regex",
+            "regex": "query\\s*GetTag\\(\\$id:\\s*ID!\\)\\s*\\{\\s*tag\\(id:\\s*\\$id\\)\\s*\\{\\s*id\\s*topics\\s*\\{\\s*id\\s*title\\s*updated_at\\s*ttl\\s*__typename\\s*\\}\\s*__typename\\s*\\}\\s*\\}"
+          }
+        }
+      },
+      "response": {
+        "status": 500,
+        "headers": {
+        }
+      }
+    },
+    {
+      "description": "a request to get a single topic",
+      "providerState": "there's data",
+      "request": {
+        "method": "POST",
+        "path": "/graphql",
+        "headers": {
+          "content-type": "application/json"
+        },
+        "body": {
+          "operationName": "GetTopic",
+          "query": "query GetTopic($id: ID!) {\n              topic(id: $id) {\n                id\n                title\n                updated_at\n                ttl\n                forum {\n                  id\n                  glyph\n                  label\n                  __typename\n                }\n                tags {\n                  id\n                  weight\n                  __typename\n                }\n                posts {\n                  id\n                  text\n                  created_at\n                  author {\n                    id\n                    handle\n                    __typename\n                  }\n                  __typename\n                }\n                __typename\n              }\n            }",
+          "variables": {
+            "id": "0b58959d-d448-4a4e-84b6-35e5ac0028d1"
+          }
+        },
+        "matchingRules": {
+          "$.body.query": {
+            "match": "regex",
+            "regex": "query\\s*GetTopic\\(\\$id:\\s*ID!\\)\\s*\\{\\s*topic\\(id:\\s*\\$id\\)\\s*\\{\\s*id\\s*title\\s*updated_at\\s*ttl\\s*forum\\s*\\{\\s*id\\s*glyph\\s*label\\s*__typename\\s*\\}\\s*tags\\s*\\{\\s*id\\s*weight\\s*__typename\\s*\\}\\s*posts\\s*\\{\\s*id\\s*text\\s*created_at\\s*author\\s*\\{\\s*id\\s*handle\\s*__typename\\s*\\}\\s*__typename\\s*\\}\\s*__typename\\s*\\}\\s*\\}"
+          }
+        }
+      },
+      "response": {
+        "status": 200,
+        "headers": {
+          "Content-Type": "application/json; charset=utf-8"
+        },
+        "body": {
+          "data": {
+            "topic": {
+              "id": "0b58959d-d448-4a4e-84b6-35e5ac0028d1",
+              "title": "The pacty topic of the day",
+              "updated_at": 1619979888906,
+              "ttl": 3399,
+              "forum": {
+                "id": "cucumber",
+                "glyph": "✽",
+                "label": "test_forums.cucumber"
+              },
+              "tags": [
+                {
+                  "id": "skunk",
+                  "weight": 44
+                }
+              ],
+              "posts": [
+                {
+                  "id": "ed93530e-6f9c-4701-91ef-14f9e0ed3e26",
+                  "text": "The content of this post is very relevant",
+                  "created_at": 1619979889798,
+                  "author": {
+                    "id": "07fb2ba0-0945-464a-b215-873296710c8c",
+                    "handle": "cucumber_fan92"
+                  }
+                }
+              ]
+            }
+          }
+        },
+        "matchingRules": {
+          "$.body.data.topic.id": {
+            "match": "type"
+          },
+          "$.body.data.topic.title": {
+            "match": "type"
+          },
+          "$.body.data.topic.updated_at": {
+            "match": "type"
+          },
+          "$.body.data.topic.ttl": {
+            "match": "type"
+          },
+          "$.body.data.topic.forum.id": {
+            "match": "type"
+          },
+          "$.body.data.topic.forum.glyph": {
+            "match": "type"
+          },
+          "$.body.data.topic.forum.label": {
+            "match": "type"
+          },
+          "$.body.data.topic.tags": {
+            "min": 1
+          },
+          "$.body.data.topic.tags[*].*": {
+            "match": "type"
+          },
+          "$.body.data.topic.tags[*].id": {
+            "match": "type"
+          },
+          "$.body.data.topic.tags[*].weight": {
+            "match": "type"
+          },
+          "$.body.data.topic.posts": {
+            "min": 1
+          },
+          "$.body.data.topic.posts[*].*": {
+            "match": "type"
+          },
+          "$.body.data.topic.posts[*].id": {
+            "match": "type"
+          },
+          "$.body.data.topic.posts[*].text": {
+            "match": "type"
+          },
+          "$.body.data.topic.posts[*].created_at": {
+            "match": "type"
+          },
+          "$.body.data.topic.posts[*].author": {
+            "match": "type"
+          },
+          "$.body.data.topic.posts[*].author.id": {
+            "match": "type"
+          },
+          "$.body.data.topic.posts[*].author.handle": {
+            "match": "type"
+          }
+        }
+      }
+    },
+    {
+      "description": "a request to get a single topic",
+      "providerState": "there's no data",
+      "request": {
+        "method": "POST",
+        "path": "/graphql",
+        "headers": {
+          "content-type": "application/json"
+        },
+        "body": {
+          "operationName": "GetTopic",
+          "query": "query GetTopic($id: ID!) {\n              topic(id: $id) {\n                id\n                title\n                updated_at\n                ttl\n                forum {\n                  id\n                  glyph\n                  label\n                  __typename\n                }\n                tags {\n                  id\n                  weight\n                  __typename\n                }\n                posts {\n                  id\n                  text\n                  created_at\n                  author {\n                    id\n                    handle\n                    __typename\n                  }\n                  __typename\n                }\n                __typename\n              }\n            }",
+          "variables": {
+            "id": "0b58959d-d448-4a4e-84b6-35e5ac0028d1"
+          }
+        },
+        "matchingRules": {
+          "$.body.query": {
+            "match": "regex",
+            "regex": "query\\s*GetTopic\\(\\$id:\\s*ID!\\)\\s*\\{\\s*topic\\(id:\\s*\\$id\\)\\s*\\{\\s*id\\s*title\\s*updated_at\\s*ttl\\s*forum\\s*\\{\\s*id\\s*glyph\\s*label\\s*__typename\\s*\\}\\s*tags\\s*\\{\\s*id\\s*weight\\s*__typename\\s*\\}\\s*posts\\s*\\{\\s*id\\s*text\\s*created_at\\s*author\\s*\\{\\s*id\\s*handle\\s*__typename\\s*\\}\\s*__typename\\s*\\}\\s*__typename\\s*\\}\\s*\\}"
+          }
+        }
+      },
+      "response": {
+        "status": 200,
+        "headers": {
+          "Content-Type": "application/json; charset=utf-8"
+        },
+        "body": {
+          "data": {
+            "topic": null
+          }
+        }
+      }
+    },
+    {
+      "description": "a request to get a single topic",
+      "providerState": "there's an error",
+      "request": {
+        "method": "POST",
+        "path": "/graphql",
+        "headers": {
+          "content-type": "application/json"
+        },
+        "body": {
+          "operationName": "GetTopic",
+          "query": "query GetTopic($id: ID!) {\n              topic(id: $id) {\n                id\n                title\n                updated_at\n                ttl\n                forum {\n                  id\n                  glyph\n                  label\n                  __typename\n                }\n                tags {\n                  id\n                  weight\n                  __typename\n                }\n                posts {\n                  id\n                  text\n                  created_at\n                  author {\n                    id\n                    handle\n                    __typename\n                  }\n                  __typename\n                }\n                __typename\n              }\n            }",
+          "variables": {
+            "id": "0b58959d-d448-4a4e-84b6-35e5ac0028d1"
+          }
+        },
+        "matchingRules": {
+          "$.body.query": {
+            "match": "regex",
+            "regex": "query\\s*GetTopic\\(\\$id:\\s*ID!\\)\\s*\\{\\s*topic\\(id:\\s*\\$id\\)\\s*\\{\\s*id\\s*title\\s*updated_at\\s*ttl\\s*forum\\s*\\{\\s*id\\s*glyph\\s*label\\s*__typename\\s*\\}\\s*tags\\s*\\{\\s*id\\s*weight\\s*__typename\\s*\\}\\s*posts\\s*\\{\\s*id\\s*text\\s*created_at\\s*author\\s*\\{\\s*id\\s*handle\\s*__typename\\s*\\}\\s*__typename\\s*\\}\\s*__typename\\s*\\}\\s*\\}"
+          }
+        }
+      },
+      "response": {
+        "status": 500,
+        "headers": {
+        }
+      }
     }
   ],
   "metadata": {