{"action":"created","comment":{"url":"https://api.github.com/repos/punchcard-cms/punchcard/pulls/comments/86225760","pull_request_review_id":6886567,"id":86225760,"diff_hunk":"@@ -1,217 +1,336 @@\n-'use strict'; // eslint-disable-line strict\n-\n-/*\n- * Utility Files for Tests\n- */\n-\n-const ipsum = require('lorem-ipsum');\n const uuid = require('uuid');\n+const ipsum = require('lorem-ipsum');\n const slugify = require('underscore.string/slugify');\n-const moment = require('moment');\n-\n-const utils = require('../../lib/utils');\n-\n-/**\n- * Content type model after merged with input plugins via content-types module\n- * @typedef {Object} type\n- * @property {string} name - name of content type\n- * @property {string} id - id of content type\n- * @property {string} description - description of content type\n- * @property {array} attributes - input attributes\n- */\n-\n-/**\n- * array of content types\n- * @typedef {array} allTypes\n- */\n-\n-/**\n- * Object which tracks the number of pieces of content for each content type\n- * @typedef {array} eachOfType\n- */\n \n-/*\n- * Randomly generate content\n- */\n-const generate = (total, lang) => {\n-  const content = [];\n-  const lives = [];\n-  const types = [];\n-  const eachOfType = {};\n-  const allTypes = [];\n-  const t = total || 50;\n-  const language = lang || 'en-us';\n-  let i;\n-\n-\n-  /**\n-   * Populate an array {allTypes} of content types {type}\n-   */\n-  for (i = 0; i < 5; i++) {\n-    types.push(`Test Type ${ipsum({\n-      count: 1,\n+const type = name => {\n+  return {\n+    name,\n+    id: slugify(name),\n+    description: ipsum({\n+      count: Math.round(Math.random() * 6 + 1),\n       units: 'words',\n-    })}`);\n-\n-    eachOfType[types[i]] = 0;\n-    allTypes.push({\n-      name: types[i],\n-      id: slugify(types[i]),\n-      description: ipsum({\n-        count: Math.round(Math.random() * 6 + 1),\n-        units: 'words',\n-      }),\n-      attributes: [\n-        {\n-          name: 'Name',\n-          inputs: {\n-            text: {\n-              label: 'Name',\n-              type: 'text',\n-              id: uuid.v4(),\n-              name: 'name--text',\n+    }),\n+    attributes: [\n+      {\n+        name: 'Name',\n+        inputs: {\n+          text: {\n+            label: 'Name',\n+            type: 'text',\n+            id: uuid.v4(),\n+            name: 'name--text',\n+          },\n+        },\n+        id: `${slugify(name)}-name`,\n+        type: 'text',\n+      },\n+      {\n+        name: 'Textblock',\n+        inputs: {\n+          textblock: {\n+            label: 'Text',\n+            type: 'textarea',\n+            id: uuid.v4(),\n+            name: 'textblock--textarea',\n+          },\n+        },\n+        id: `${slugify(name)}-textblock`,\n+        type: 'textarea',\n+      },\n+      {\n+        name: 'Referencer',\n+        inputs: {\n+          referencer: {\n+            label: 'Text',\n+            type: 'reference',\n+            id: uuid.v4(),\n+            name: 'referencer--reference',\n+            settings: {\n+              contentType: 'will-be-changed',\n             },\n+            reference: true,\n           },\n-          id: `${slugify(types[i])}-name`,\n-          type: 'text',\n         },\n-        {\n-          name: 'Textblock',\n-          inputs: {\n-            textblock: {\n-              label: 'Text',\n-              type: 'textarea',\n-              id: uuid.v4(),\n-              name: 'textblock--textarea',\n+        id: `${slugify(name)}-referencer`,\n+        type: 'reference',\n+      },\n+      {\n+        name: 'Referencer Dual',\n+        inputs: {\n+          referencerdual1: {\n+            label: 'Referencer 1',\n+            type: 'reference',\n+            id: uuid.v4(),\n+            name: 'referencer1--reference',\n+            settings: {\n+              contentType: 'will-be-changed',\n             },\n+            reference: true,\n+          },\n+          referencerdual2: {\n+            label: 'Referencer 2',\n+            type: 'reference',\n+            id: uuid.v4(),\n+            name: 'referencer2--reference',\n+            settings: {\n+              contentType: 'will-be-changed',\n+            },\n+            reference: true,\n           },\n-          id: `${slugify(types[i])}-textblock`,\n-          type: 'textarea',\n         },\n-        {\n-          name: 'Referencer',\n-          inputs: {\n-            referencer: {\n-              label: 'Text',\n-              type: 'reference',\n-              id: uuid.v4(),\n-              name: 'referencer--reference',\n+        id: `${slugify(name)}-referencer-dual`,\n+        type: 'reference',\n+      },\n+      {\n+        name: 'Referencer Repeating',\n+        inputs: {\n+          referencerrepeat: {\n+            label: 'Ref Repeat',\n+            type: 'reference',\n+            id: uuid.v4(),\n+            name: 'referencer-repeating--reference',\n+            settings: {\n+              contentType: 'will-be-changed',\n             },\n+            reference: true,\n           },\n-          id: `${slugify(types[i])}-referencer`,\n-          type: 'reference',\n         },\n-      ],\n-    });\n+        id: `${slugify(name)}-referencer-repeating`,\n+        type: 'reference',\n+        repeatable: true,\n+      },\n+      {\n+        name: 'Referencer Dual Repeating',\n+        inputs: {\n+          referencerdualrepeat1: {\n+            label: 'Referencer 1',\n+            type: 'reference',\n+            id: uuid.v4(),\n+            name: 'referencer1--reference-repeating',\n+            settings: {\n+              contentType: 'will-be-changed',\n+            },\n+            reference: true,\n+          },\n+          referencerdualrepeat2: {\n+            label: 'Referencer 2',\n+            type: 'reference',\n+            id: uuid.v4(),\n+            name: 'referencer2--reference-repeating',\n+            settings: {\n+              contentType: 'will-be-changed',\n+            },\n+            reference: true,\n+          },\n+        },\n+        id: `${slugify(name)}-referencer-dual-repeating`,\n+        type: 'reference',\n+        repeatable: true,\n+      },\n+    ],\n+  };\n+};\n+\n+const values = ctype => {\n+  const results = {};\n+  results[`${slugify(ctype)}-name`] = {\n+    text: {\n+      value: ipsum({\n+        count: 1,\n+        units: 'words',\n+        format: 'plain',\n+      }),\n+    },\n+  };\n+  results[`${slugify(ctype)}-textblock`] = {\n+    textblock: {\n+      value: ipsum({\n+        count: 2,\n+        units: 'paragraphs',\n+        format: 'plain',\n+        sentenceUpperBound: 5,\n+        paragraphUpperBound: 3,\n+      }),\n+    },\n+  };\n+  results[`${slugify(ctype)}-referencer`] = {\n+    referencer: {\n+      value: 'make-me-an-id',\n+    },\n+  };\n+  results[`${slugify(ctype)}-referencer-dual`] = {\n+    referencerdual1: {\n+      value: 'make-me-an-id',\n+    },\n+    referencerdual2: {\n+      value: 'make-me-an-id',\n+    },\n+  };\n+  results[`${slugify(ctype)}-referencer-repeating`] = [\n+    {\n+      referencerrepeat: {\n+        value: 'make-me-an-id',\n+      },\n+    },\n+    {\n+      referencerrepeat: {\n+        value: 'make-me-an-id',\n+      },\n+    },\n+  ];\n+  results[`${slugify(ctype)}-referencer-dual-repeating`] = [\n+    {\n+      referencerdualrepeat1: {\n+        value: 'make-me-an-id',\n+      },\n+      referencerdualrepeat2: {\n+        value: 'make-me-an-id',\n+      },\n+    },\n+    {\n+      referencerdualrepeat1: {\n+        value: 'make-me-an-id',\n+      },\n+      referencerdualrepeat2: {\n+        value: 'make-me-an-id',\n+      },\n+    },\n+    {\n+      referencerdualrepeat1: {\n+        value: 'make-me-an-id',\n+      },\n+      referencerdualrepeat2: {\n+        value: 'make-me-an-id',\n+      },\n+    },\n+  ];\n+\n+  return results;\n+};\n+\n+/**\n+ * Tests attributes with references\n+ * @param  {object} t - ava testing\n+ * @param  {object|array} attrs object containing attributes to test\n+ */\n+const referencer = (t, attrs) => {\n+  if (typeof attrs !== 'object' || attrs === undefined) {\n+    return;\n   }\n \n-  /**\n-   * Add {type} fixtures to the content array\n-   */\n-  for (i = 0; i < t; i++) {\n-    let referenced = '';\n-    const name = ipsum({\n-      count: 3,\n-      units: 'words',\n-      format: 'plain',\n+  // an individual piece of content, so we need to test just the attributes\n+  if (attrs.hasOwnProperty('attributes')) {\n+    referencer(t, attrs.attributes);\n+\n+    return;\n+  }\n+\n+  // an array of attributes, this set of attributes is a repeatable\n+  if (Array.isArray(attrs)) {\n+    attrs.forEach(attr => {\n+      Object.keys(attr).forEach(atr => {\n+        // an individual piece of content, so we need to test just the attributes\n+        // at this point, we've found a piece of content _inside_ a piece of content's attributes\n+        if (attr[atr].hasOwnProperty('attributes')) {\n+          referencer(t, attr[atr].attributes);\n+\n+          return;\n+        }\n+\n+        // we've reached our depth, test `meta` exists\n+        else if (attr[atr].hasOwnProperty('id')) {\n+          t.true(attr[atr].hasOwnProperty('meta'), 'attribute in array contains meta');\n+\n+          return;\n+        }\n+      });\n     });\n+  }\n+\n+  // now we go through each attribute\n+  Object.keys(attrs).forEach(attr => {\n+    // only testing referencer attributes\n+    if (attr.split('-').indexOf('referencer') > -1) {\n+      const item = attrs[attr];\n+\n+      // if attributes exists, we're still digging down in our depth, recurse!\n+      if (item.hasOwnProperty('attributes')) {\n+        referencer(t, item.attributes);\n+\n+        return;\n+      }\n+\n+      // if it's an array, we're in a repeatable - recurseit!","path":"tests/fixtures/_utils.js","position":364,"original_position":364,"commit_id":"2abd2ee1cc480987ed871ba5d277298c8a9de27f","original_commit_id":"2abd2ee1cc480987ed871ba5d277298c8a9de27f","user":{"login":"Snugug","id":377188,"avatar_url":"https://avatars.githubusercontent.com/u/377188?v=3","gravatar_id":"","url":"https://api.github.com/users/Snugug","html_url":"https://github.com/Snugug","followers_url":"https://api.github.com/users/Snugug/followers","following_url":"https://api.github.com/users/Snugug/following{/other_user}","gists_url":"https://api.github.com/users/Snugug/gists{/gist_id}","starred_url":"https://api.github.com/users/Snugug/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Snugug/subscriptions","organizations_url":"https://api.github.com/users/Snugug/orgs","repos_url":"https://api.github.com/users/Snugug/repos","events_url":"https://api.github.com/users/Snugug/events{/privacy}","received_events_url":"https://api.github.com/users/Snugug/received_events","type":"User","site_admin":false},"body":"Be consistent with how you joke in your comments. Need a consistent spelling of `recurseit`. Either `recurse-it`, `recurseit`, or `recursit`. Choose one and stick with it.","created_at":"2016-11-02T19:38:27Z","updated_at":"2016-11-02T19:38:27Z","html_url":"https://github.com/punchcard-cms/punchcard/pull/519#discussion_r86225760","pull_request_url":"https://api.github.com/repos/punchcard-cms/punchcard/pulls/519","_links":{"self":{"href":"https://api.github.com/repos/punchcard-cms/punchcard/pulls/comments/86225760"},"html":{"href":"https://github.com/punchcard-cms/punchcard/pull/519#discussion_r86225760"},"pull_request":{"href":"https://api.github.com/repos/punchcard-cms/punchcard/pulls/519"}}},"pull_request":{"url":"https://api.github.com/repos/punchcard-cms/punchcard/pulls/519","id":91796470,"html_url":"https://github.com/punchcard-cms/punchcard/pull/519","diff_url":"https://github.com/punchcard-cms/punchcard/pull/519.diff","patch_url":"https://github.com/punchcard-cms/punchcard/pull/519.patch","issue_url":"https://api.github.com/repos/punchcard-cms/punchcard/issues/519","number":519,"state":"open","locked":false,"title":"tests for api depth","user":{"login":"scottnath","id":216931,"avatar_url":"https://avatars.githubusercontent.com/u/216931?v=3","gravatar_id":"","url":"https://api.github.com/users/scottnath","html_url":"https://github.com/scottnath","followers_url":"https://api.github.com/users/scottnath/followers","following_url":"https://api.github.com/users/scottnath/following{/other_user}","gists_url":"https://api.github.com/users/scottnath/gists{/gist_id}","starred_url":"https://api.github.com/users/scottnath/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scottnath/subscriptions","organizations_url":"https://api.github.com/users/scottnath/orgs","repos_url":"https://api.github.com/users/scottnath/repos","events_url":"https://api.github.com/users/scottnath/events{/privacy}","received_events_url":"https://api.github.com/users/scottnath/received_events","type":"User","site_admin":false},"body":"Tests and generated content updated for the changes to api to add depth for references.\r\n\r\n_note:_ tests are run `serial` in the api tests to avoid a knex timeout issue due to the `follow` function not using knex's `transaction` setup.\r\n\r\n---\r\nRelates to #408\r\n\r\n`DCO 1.1 Signed-off-by: Scott Nath <github@scottnath.com>`\r\n\r\n","created_at":"2016-11-01T14:48:13Z","updated_at":"2016-11-02T19:46:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b5b9e518330296ad0942c4bb7dd92205dc6cbc12","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/punchcard-cms/punchcard/pulls/519/commits","review_comments_url":"https://api.github.com/repos/punchcard-cms/punchcard/pulls/519/comments","review_comment_url":"https://api.github.com/repos/punchcard-cms/punchcard/pulls/comments{/number}","comments_url":"https://api.github.com/repos/punchcard-cms/punchcard/issues/519/comments","statuses_url":"https://api.github.com/repos/punchcard-cms/punchcard/statuses/2abd2ee1cc480987ed871ba5d277298c8a9de27f","head":{"label":"scottnath:hotfix/api-tests","ref":"hotfix/api-tests","sha":"2abd2ee1cc480987ed871ba5d277298c8a9de27f","user":{"login":"scottnath","id":216931,"avatar_url":"https://avatars.githubusercontent.com/u/216931?v=3","gravatar_id":"","url":"https://api.github.com/users/scottnath","html_url":"https://github.com/scottnath","followers_url":"https://api.github.com/users/scottnath/followers","following_url":"https://api.github.com/users/scottnath/following{/other_user}","gists_url":"https://api.github.com/users/scottnath/gists{/gist_id}","starred_url":"https://api.github.com/users/scottnath/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scottnath/subscriptions","organizations_url":"https://api.github.com/users/scottnath/orgs","repos_url":"https://api.github.com/users/scottnath/repos","events_url":"https://api.github.com/users/scottnath/events{/privacy}","received_events_url":"https://api.github.com/users/scottnath/received_events","type":"User","site_admin":false},"repo":{"id":59151227,"name":"punchcard","full_name":"scottnath/punchcard","owner":{"login":"scottnath","id":216931,"avatar_url":"https://avatars.githubusercontent.com/u/216931?v=3","gravatar_id":"","url":"https://api.github.com/users/scottnath","html_url":"https://github.com/scottnath","followers_url":"https://api.github.com/users/scottnath/followers","following_url":"https://api.github.com/users/scottnath/following{/other_user}","gists_url":"https://api.github.com/users/scottnath/gists{/gist_id}","starred_url":"https://api.github.com/users/scottnath/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scottnath/subscriptions","organizations_url":"https://api.github.com/users/scottnath/orgs","repos_url":"https://api.github.com/users/scottnath/repos","events_url":"https://api.github.com/users/scottnath/events{/privacy}","received_events_url":"https://api.github.com/users/scottnath/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/scottnath/punchcard","description":"The Punchcard CMS","fork":true,"url":"https://api.github.com/repos/scottnath/punchcard","forks_url":"https://api.github.com/repos/scottnath/punchcard/forks","keys_url":"https://api.github.com/repos/scottnath/punchcard/keys{/key_id}","collaborators_url":"https://api.github.com/repos/scottnath/punchcard/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/scottnath/punchcard/teams","hooks_url":"https://api.github.com/repos/scottnath/punchcard/hooks","issue_events_url":"https://api.github.com/repos/scottnath/punchcard/issues/events{/number}","events_url":"https://api.github.com/repos/scottnath/punchcard/events","assignees_url":"https://api.github.com/repos/scottnath/punchcard/assignees{/user}","branches_url":"https://api.github.com/repos/scottnath/punchcard/branches{/branch}","tags_url":"https://api.github.com/repos/scottnath/punchcard/tags","blobs_url":"https://api.github.com/repos/scottnath/punchcard/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/scottnath/punchcard/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/scottnath/punchcard/git/refs{/sha}","trees_url":"https://api.github.com/repos/scottnath/punchcard/git/trees{/sha}","statuses_url":"https://api.github.com/repos/scottnath/punchcard/statuses/{sha}","languages_url":"https://api.github.com/repos/scottnath/punchcard/languages","stargazers_url":"https://api.github.com/repos/scottnath/punchcard/stargazers","contributors_url":"https://api.github.com/repos/scottnath/punchcard/contributors","subscribers_url":"https://api.github.com/repos/scottnath/punchcard/subscribers","subscription_url":"https://api.github.com/repos/scottnath/punchcard/subscription","commits_url":"https://api.github.com/repos/scottnath/punchcard/commits{/sha}","git_commits_url":"https://api.github.com/repos/scottnath/punchcard/git/commits{/sha}","comments_url":"https://api.github.com/repos/scottnath/punchcard/comments{/number}","issue_comment_url":"https://api.github.com/repos/scottnath/punchcard/issues/comments{/number}","contents_url":"https://api.github.com/repos/scottnath/punchcard/contents/{+path}","compare_url":"https://api.github.com/repos/scottnath/punchcard/compare/{base}...{head}","merges_url":"https://api.github.com/repos/scottnath/punchcard/merges","archive_url":"https://api.github.com/repos/scottnath/punchcard/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/scottnath/punchcard/downloads","issues_url":"https://api.github.com/repos/scottnath/punchcard/issues{/number}","pulls_url":"https://api.github.com/repos/scottnath/punchcard/pulls{/number}","milestones_url":"https://api.github.com/repos/scottnath/punchcard/milestones{/number}","notifications_url":"https://api.github.com/repos/scottnath/punchcard/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/scottnath/punchcard/labels{/name}","releases_url":"https://api.github.com/repos/scottnath/punchcard/releases{/id}","deployments_url":"https://api.github.com/repos/scottnath/punchcard/deployments","created_at":"2016-05-18T21:06:00Z","updated_at":"2016-05-18T21:06:01Z","pushed_at":"2016-11-02T19:00:19Z","git_url":"git://github.com/scottnath/punchcard.git","ssh_url":"git@github.com:scottnath/punchcard.git","clone_url":"https://github.com/scottnath/punchcard.git","svn_url":"https://github.com/scottnath/punchcard","homepage":null,"size":808,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"punchcard-cms:master","ref":"master","sha":"fda128d74ec6b6e1ab686e7e81a4af07d96d7eba","user":{"login":"punchcard-cms","id":18744098,"avatar_url":"https://avatars.githubusercontent.com/u/18744098?v=3","gravatar_id":"","url":"https://api.github.com/users/punchcard-cms","html_url":"https://github.com/punchcard-cms","followers_url":"https://api.github.com/users/punchcard-cms/followers","following_url":"https://api.github.com/users/punchcard-cms/following{/other_user}","gists_url":"https://api.github.com/users/punchcard-cms/gists{/gist_id}","starred_url":"https://api.github.com/users/punchcard-cms/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/punchcard-cms/subscriptions","organizations_url":"https://api.github.com/users/punchcard-cms/orgs","repos_url":"https://api.github.com/users/punchcard-cms/repos","events_url":"https://api.github.com/users/punchcard-cms/events{/privacy}","received_events_url":"https://api.github.com/users/punchcard-cms/received_events","type":"Organization","site_admin":false},"repo":{"id":58833061,"name":"punchcard","full_name":"punchcard-cms/punchcard","owner":{"login":"punchcard-cms","id":18744098,"avatar_url":"https://avatars.githubusercontent.com/u/18744098?v=3","gravatar_id":"","url":"https://api.github.com/users/punchcard-cms","html_url":"https://github.com/punchcard-cms","followers_url":"https://api.github.com/users/punchcard-cms/followers","following_url":"https://api.github.com/users/punchcard-cms/following{/other_user}","gists_url":"https://api.github.com/users/punchcard-cms/gists{/gist_id}","starred_url":"https://api.github.com/users/punchcard-cms/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/punchcard-cms/subscriptions","organizations_url":"https://api.github.com/users/punchcard-cms/orgs","repos_url":"https://api.github.com/users/punchcard-cms/repos","events_url":"https://api.github.com/users/punchcard-cms/events{/privacy}","received_events_url":"https://api.github.com/users/punchcard-cms/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/punchcard-cms/punchcard","description":"The Punchcard CMS","fork":false,"url":"https://api.github.com/repos/punchcard-cms/punchcard","forks_url":"https://api.github.com/repos/punchcard-cms/punchcard/forks","keys_url":"https://api.github.com/repos/punchcard-cms/punchcard/keys{/key_id}","collaborators_url":"https://api.github.com/repos/punchcard-cms/punchcard/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/punchcard-cms/punchcard/teams","hooks_url":"https://api.github.com/repos/punchcard-cms/punchcard/hooks","issue_events_url":"https://api.github.com/repos/punchcard-cms/punchcard/issues/events{/number}","events_url":"https://api.github.com/repos/punchcard-cms/punchcard/events","assignees_url":"https://api.github.com/repos/punchcard-cms/punchcard/assignees{/user}","branches_url":"https://api.github.com/repos/punchcard-cms/punchcard/branches{/branch}","tags_url":"https://api.github.com/repos/punchcard-cms/punchcard/tags","blobs_url":"https://api.github.com/repos/punchcard-cms/punchcard/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/punchcard-cms/punchcard/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/punchcard-cms/punchcard/git/refs{/sha}","trees_url":"https://api.github.com/repos/punchcard-cms/punchcard/git/trees{/sha}","statuses_url":"https://api.github.com/repos/punchcard-cms/punchcard/statuses/{sha}","languages_url":"https://api.github.com/repos/punchcard-cms/punchcard/languages","stargazers_url":"https://api.github.com/repos/punchcard-cms/punchcard/stargazers","contributors_url":"https://api.github.com/repos/punchcard-cms/punchcard/contributors","subscribers_url":"https://api.github.com/repos/punchcard-cms/punchcard/subscribers","subscription_url":"https://api.github.com/repos/punchcard-cms/punchcard/subscription","commits_url":"https://api.github.com/repos/punchcard-cms/punchcard/commits{/sha}","git_commits_url":"https://api.github.com/repos/punchcard-cms/punchcard/git/commits{/sha}","comments_url":"https://api.github.com/repos/punchcard-cms/punchcard/comments{/number}","issue_comment_url":"https://api.github.com/repos/punchcard-cms/punchcard/issues/comments{/number}","contents_url":"https://api.github.com/repos/punchcard-cms/punchcard/contents/{+path}","compare_url":"https://api.github.com/repos/punchcard-cms/punchcard/compare/{base}...{head}","merges_url":"https://api.github.com/repos/punchcard-cms/punchcard/merges","archive_url":"https://api.github.com/repos/punchcard-cms/punchcard/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/punchcard-cms/punchcard/downloads","issues_url":"https://api.github.com/repos/punchcard-cms/punchcard/issues{/number}","pulls_url":"https://api.github.com/repos/punchcard-cms/punchcard/pulls{/number}","milestones_url":"https://api.github.com/repos/punchcard-cms/punchcard/milestones{/number}","notifications_url":"https://api.github.com/repos/punchcard-cms/punchcard/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/punchcard-cms/punchcard/labels{/name}","releases_url":"https://api.github.com/repos/punchcard-cms/punchcard/releases{/id}","deployments_url":"https://api.github.com/repos/punchcard-cms/punchcard/deployments","created_at":"2016-05-14T22:23:32Z","updated_at":"2016-11-02T19:44:58Z","pushed_at":"2016-11-02T19:00:20Z","git_url":"git://github.com/punchcard-cms/punchcard.git","ssh_url":"git@github.com:punchcard-cms/punchcard.git","clone_url":"https://github.com/punchcard-cms/punchcard.git","svn_url":"https://github.com/punchcard-cms/punchcard","homepage":null,"size":878,"stargazers_count":12,"watchers_count":12,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":15,"mirror_url":null,"open_issues_count":163,"forks":15,"open_issues":163,"watchers":12,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/punchcard-cms/punchcard/pulls/519"},"html":{"href":"https://github.com/punchcard-cms/punchcard/pull/519"},"issue":{"href":"https://api.github.com/repos/punchcard-cms/punchcard/issues/519"},"comments":{"href":"https://api.github.com/repos/punchcard-cms/punchcard/issues/519/comments"},"review_comments":{"href":"https://api.github.com/repos/punchcard-cms/punchcard/pulls/519/comments"},"review_comment":{"href":"https://api.github.com/repos/punchcard-cms/punchcard/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/punchcard-cms/punchcard/pulls/519/commits"},"statuses":{"href":"https://api.github.com/repos/punchcard-cms/punchcard/statuses/2abd2ee1cc480987ed871ba5d277298c8a9de27f"}}}}
{"actor":{"display_login":"Snugug"}}