From a6905e84531d2ce076a737b793e1a7c14d64c88d Mon Sep 17 00:00:00 2001 From: Neil Kalman Date: Tue, 14 Feb 2017 12:36:01 +0200 Subject: [PATCH] add more tests for utilities.js --- test/stubs/eventData.mock.js | 449 +++++++++++++++++++++++++++++++++++ test/utilities.js | 143 +++++++++++ 2 files changed, 592 insertions(+) create mode 100644 test/stubs/eventData.mock.js diff --git a/test/stubs/eventData.mock.js b/test/stubs/eventData.mock.js new file mode 100644 index 00000000..d374aacb --- /dev/null +++ b/test/stubs/eventData.mock.js @@ -0,0 +1,449 @@ +module.exports = { + 'action': 'opened', + 'number': 1, + 'pull_request': { + 'url': 'https://api.github.com/repos/Kibibit/achievibit/pulls/68', + 'id': 105556554, + 'html_url': 'https://github.com/Kibibit/achievibit/pull/68', + 'diff_url': 'https://github.com/Kibibit/achievibit/pull/68.diff', + 'patch_url': 'https://github.com/Kibibit/achievibit/pull/68.patch', + 'issue_url': 'https://api.github.com/repos/Kibibit/achievibit/issues/68', + 'number': 68, + 'state': 'open', + 'locked': false, + 'title': 'new_title', + 'user': { + 'login': 'ortichon', + 'id': 10263615, + 'avatar_url': 'https://avatars.githubusercontent.com/u/10263615?v=3', + 'gravatar_id': '', + 'url': 'https://api.github.com/users/ortichon', + 'html_url': 'https://github.com/ortichon', + 'followers_url': 'https://api.github.com/users/ortichon/followers', + 'following_url': 'https://api.github.com/users/ortichon/following{/other_user}', + 'gists_url': 'https://api.github.com/users/ortichon/gists{/gist_id}', + 'starred_url': 'https://api.github.com/users/ortichon/starred{/owner}{/repo}', + 'subscriptions_url': 'https://api.github.com/users/ortichon/subscriptions', + 'organizations_url': 'https://api.github.com/users/ortichon/orgs', + 'repos_url': 'https://api.github.com/users/ortichon/repos', + 'events_url': 'https://api.github.com/users/ortichon/events{/privacy}', + 'received_events_url': 'https://api.github.com/users/ortichon/received_events', + 'type': 'User', + 'site_admin': false + }, + 'body': 'new_description', + 'created_at': '2017-02-10T02:42:52Z', + 'updated_at': '2017-02-10T02:42:52Z', + 'closed_at': null, + 'merged_at': null, + 'merge_commit_sha': null, + 'assignee': { + 'login': 'Thatkookooguy', + 'id': 10427304, + 'avatar_url': 'https://avatars.githubusercontent.com/u/10427304?v=3', + 'gravatar_id': '', + 'url': 'https://api.github.com/users/Thatkookooguy', + 'html_url': 'https://github.com/Thatkookooguy', + 'followers_url': 'https://api.github.com/users/Thatkookooguy/followers', + 'following_url': 'https://api.github.com/users/Thatkookooguy/following{/other_user}', + 'gists_url': 'https://api.github.com/users/Thatkookooguy/gists{/gist_id}', + 'starred_url': 'https://api.github.com/users/Thatkookooguy/starred{/owner}{/repo}', + 'subscriptions_url': 'https://api.github.com/users/Thatkookooguy/subscriptions', + 'organizations_url': 'https://api.github.com/users/Thatkookooguy/orgs', + 'repos_url': 'https://api.github.com/users/Thatkookooguy/repos', + 'events_url': 'https://api.github.com/users/Thatkookooguy/events{/privacy}', + 'received_events_url': 'https://api.github.com/users/Thatkookooguy/received_events', + 'type': 'User', + 'site_admin': false + }, + 'milestone': null, + 'commits_url': 'https://api.github.com/repos/Kibibit/achievibit/pulls/68/commits', + 'review_comments_url': 'https://api.github.com/repos/Kibibit/achievibit/pulls/68/comments', + 'review_comment_url': 'https://api.github.com/repos/Kibibit/achievibit/pulls/comments{/number}', + 'comments_url': 'https://api.github.com/repos/Kibibit/achievibit/issues/68/comments', + 'statuses_url': 'https://api.github.com/repos/Kibibit/achievibit/statuses/a6f9c89297016c8bfaf6cbb03b86e3faa647877c', + 'head': { + 'label': 'Kibibit:achievement-inspector-gadget', + 'ref': 'achievement-inspector-gadget', + 'sha': 'a6f9c89297016c8bfaf6cbb03b86e3faa647877c', + 'user': { + 'login': 'Kibibit', + 'id': 14274940, + 'avatar_url': 'https://avatars.githubusercontent.com/u/14274940?v=3', + 'gravatar_id': '', + 'url': 'https://api.github.com/users/Kibibit', + 'html_url': 'https://github.com/Kibibit', + 'followers_url': 'https://api.github.com/users/Kibibit/followers', + 'following_url': 'https://api.github.com/users/Kibibit/following{/other_user}', + 'gists_url': 'https://api.github.com/users/Kibibit/gists{/gist_id}', + 'starred_url': 'https://api.github.com/users/Kibibit/starred{/owner}{/repo}', + 'subscriptions_url': 'https://api.github.com/users/Kibibit/subscriptions', + 'organizations_url': 'https://api.github.com/users/Kibibit/orgs', + 'repos_url': 'https://api.github.com/users/Kibibit/repos', + 'events_url': 'https://api.github.com/users/Kibibit/events{/privacy}', + 'received_events_url': 'https://api.github.com/users/Kibibit/received_events', + 'type': 'Organization', + 'site_admin': false + }, + 'repo': { + 'id': 69249326, + 'name': 'achievibit', + 'full_name': 'Kibibit/achievibit', + 'owner': { + 'login': 'Kibibit', + 'id': 14274940, + 'avatar_url': 'https://avatars.githubusercontent.com/u/14274940?v=3', + 'gravatar_id': '', + 'url': 'https://api.github.com/users/Kibibit', + 'html_url': 'https://github.com/Kibibit', + 'followers_url': 'https://api.github.com/users/Kibibit/followers', + 'following_url': 'https://api.github.com/users/Kibibit/following{/other_user}', + 'gists_url': 'https://api.github.com/users/Kibibit/gists{/gist_id}', + 'starred_url': 'https://api.github.com/users/Kibibit/starred{/owner}{/repo}', + 'subscriptions_url': 'https://api.github.com/users/Kibibit/subscriptions', + 'organizations_url': 'https://api.github.com/users/Kibibit/orgs', + 'repos_url': 'https://api.github.com/users/Kibibit/repos', + 'events_url': 'https://api.github.com/users/Kibibit/events{/privacy}', + 'received_events_url': 'https://api.github.com/users/Kibibit/received_events', + 'type': 'Organization', + 'site_admin': false + }, + 'private': false, + 'html_url': 'https://github.com/Kibibit/achievibit', + 'description': 'github hook system to integrate achievements', + 'fork': false, + 'url': 'https://api.github.com/repos/Kibibit/achievibit', + 'forks_url': 'https://api.github.com/repos/Kibibit/achievibit/forks', + 'keys_url': 'https://api.github.com/repos/Kibibit/achievibit/keys{/key_id}', + 'collaborators_url': 'https://api.github.com/repos/Kibibit/achievibit/collaborators{/collaborator}', + 'teams_url': 'https://api.github.com/repos/Kibibit/achievibit/teams', + 'hooks_url': 'https://api.github.com/repos/Kibibit/achievibit/hooks', + 'issue_events_url': 'https://api.github.com/repos/Kibibit/achievibit/issues/events{/number}', + 'events_url': 'https://api.github.com/repos/Kibibit/achievibit/events', + 'assignees_url': 'https://api.github.com/repos/Kibibit/achievibit/assignees{/user}', + 'branches_url': 'https://api.github.com/repos/Kibibit/achievibit/branches{/branch}', + 'tags_url': 'https://api.github.com/repos/Kibibit/achievibit/tags', + 'blobs_url': 'https://api.github.com/repos/Kibibit/achievibit/git/blobs{/sha}', + 'git_tags_url': 'https://api.github.com/repos/Kibibit/achievibit/git/tags{/sha}', + 'git_refs_url': 'https://api.github.com/repos/Kibibit/achievibit/git/refs{/sha}', + 'trees_url': 'https://api.github.com/repos/Kibibit/achievibit/git/trees{/sha}', + 'statuses_url': 'https://api.github.com/repos/Kibibit/achievibit/statuses/{sha}', + 'languages_url': 'https://api.github.com/repos/Kibibit/achievibit/languages', + 'stargazers_url': 'https://api.github.com/repos/Kibibit/achievibit/stargazers', + 'contributors_url': 'https://api.github.com/repos/Kibibit/achievibit/contributors', + 'subscribers_url': 'https://api.github.com/repos/Kibibit/achievibit/subscribers', + 'subscription_url': 'https://api.github.com/repos/Kibibit/achievibit/subscription', + 'commits_url': 'https://api.github.com/repos/Kibibit/achievibit/commits{/sha}', + 'git_commits_url': 'https://api.github.com/repos/Kibibit/achievibit/git/commits{/sha}', + 'comments_url': 'https://api.github.com/repos/Kibibit/achievibit/comments{/number}', + 'issue_comment_url': 'https://api.github.com/repos/Kibibit/achievibit/issues/comments{/number}', + 'contents_url': 'https://api.github.com/repos/Kibibit/achievibit/contents/{+path}', + 'compare_url': 'https://api.github.com/repos/Kibibit/achievibit/compare/{base}...{head}', + 'merges_url': 'https://api.github.com/repos/Kibibit/achievibit/merges', + 'archive_url': 'https://api.github.com/repos/Kibibit/achievibit/{archive_format}{/ref}', + 'downloads_url': 'https://api.github.com/repos/Kibibit/achievibit/downloads', + 'issues_url': 'https://api.github.com/repos/Kibibit/achievibit/issues{/number}', + 'pulls_url': 'https://api.github.com/repos/Kibibit/achievibit/pulls{/number}', + 'milestones_url': 'https://api.github.com/repos/Kibibit/achievibit/milestones{/number}', + 'notifications_url': 'https://api.github.com/repos/Kibibit/achievibit/notifications{?since,all,participating}', + 'labels_url': 'https://api.github.com/repos/Kibibit/achievibit/labels{/name}', + 'releases_url': 'https://api.github.com/repos/Kibibit/achievibit/releases{/id}', + 'deployments_url': 'https://api.github.com/repos/Kibibit/achievibit/deployments', + 'created_at': '2016-09-26T12:49:00Z', + 'updated_at': '2017-01-25T12:49:04Z', + 'pushed_at': '2017-02-10T02:39:13Z', + 'git_url': 'git://github.com/Kibibit/achievibit.git', + 'ssh_url': 'git@github.com:Kibibit/achievibit.git', + 'clone_url': 'https://github.com/Kibibit/achievibit.git', + 'svn_url': 'https://github.com/Kibibit/achievibit', + 'homepage': null, + 'size': 3870, + 'stargazers_count': 3, + 'watchers_count': 3, + 'language': 'JavaScript', + 'has_issues': true, + 'has_downloads': true, + 'has_wiki': true, + 'has_pages': false, + 'forks_count': 0, + 'mirror_url': null, + 'open_issues_count': 12, + 'forks': 0, + 'open_issues': 12, + 'watchers': 3, + 'default_branch': 'master' + } + }, + 'base': { + 'label': 'Kibibit:master', + 'ref': 'master', + 'sha': '9a27b40a45ad7e7ebc56102fe61ecb576c1dd47a', + 'user': { + 'login': 'Kibibit', + 'id': 14274940, + 'avatar_url': 'https://avatars.githubusercontent.com/u/14274940?v=3', + 'gravatar_id': '', + 'url': 'https://api.github.com/users/Kibibit', + 'html_url': 'https://github.com/Kibibit', + 'followers_url': 'https://api.github.com/users/Kibibit/followers', + 'following_url': 'https://api.github.com/users/Kibibit/following{/other_user}', + 'gists_url': 'https://api.github.com/users/Kibibit/gists{/gist_id}', + 'starred_url': 'https://api.github.com/users/Kibibit/starred{/owner}{/repo}', + 'subscriptions_url': 'https://api.github.com/users/Kibibit/subscriptions', + 'organizations_url': 'https://api.github.com/users/Kibibit/orgs', + 'repos_url': 'https://api.github.com/users/Kibibit/repos', + 'events_url': 'https://api.github.com/users/Kibibit/events{/privacy}', + 'received_events_url': 'https://api.github.com/users/Kibibit/received_events', + 'type': 'Organization', + 'site_admin': false + }, + 'repo': { + 'id': 69249326, + 'name': 'achievibit', + 'full_name': 'Kibibit/achievibit', + 'owner': { + 'login': 'Kibibit', + 'id': 14274940, + 'avatar_url': 'https://avatars.githubusercontent.com/u/14274940?v=3', + 'gravatar_id': '', + 'url': 'https://api.github.com/users/Kibibit', + 'html_url': 'https://github.com/Kibibit', + 'followers_url': 'https://api.github.com/users/Kibibit/followers', + 'following_url': 'https://api.github.com/users/Kibibit/following{/other_user}', + 'gists_url': 'https://api.github.com/users/Kibibit/gists{/gist_id}', + 'starred_url': 'https://api.github.com/users/Kibibit/starred{/owner}{/repo}', + 'subscriptions_url': 'https://api.github.com/users/Kibibit/subscriptions', + 'organizations_url': 'https://api.github.com/users/Kibibit/orgs', + 'repos_url': 'https://api.github.com/users/Kibibit/repos', + 'events_url': 'https://api.github.com/users/Kibibit/events{/privacy}', + 'received_events_url': 'https://api.github.com/users/Kibibit/received_events', + 'type': 'Organization', + 'site_admin': false + }, + 'private': false, + 'html_url': 'https://github.com/Kibibit/achievibit', + 'description': 'github hook system to integrate achievements', + 'fork': false, + 'url': 'https://api.github.com/repos/Kibibit/achievibit', + 'forks_url': 'https://api.github.com/repos/Kibibit/achievibit/forks', + 'keys_url': 'https://api.github.com/repos/Kibibit/achievibit/keys{/key_id}', + 'collaborators_url': 'https://api.github.com/repos/Kibibit/achievibit/collaborators{/collaborator}', + 'teams_url': 'https://api.github.com/repos/Kibibit/achievibit/teams', + 'hooks_url': 'https://api.github.com/repos/Kibibit/achievibit/hooks', + 'issue_events_url': 'https://api.github.com/repos/Kibibit/achievibit/issues/events{/number}', + 'events_url': 'https://api.github.com/repos/Kibibit/achievibit/events', + 'assignees_url': 'https://api.github.com/repos/Kibibit/achievibit/assignees{/user}', + 'branches_url': 'https://api.github.com/repos/Kibibit/achievibit/branches{/branch}', + 'tags_url': 'https://api.github.com/repos/Kibibit/achievibit/tags', + 'blobs_url': 'https://api.github.com/repos/Kibibit/achievibit/git/blobs{/sha}', + 'git_tags_url': 'https://api.github.com/repos/Kibibit/achievibit/git/tags{/sha}', + 'git_refs_url': 'https://api.github.com/repos/Kibibit/achievibit/git/refs{/sha}', + 'trees_url': 'https://api.github.com/repos/Kibibit/achievibit/git/trees{/sha}', + 'statuses_url': 'https://api.github.com/repos/Kibibit/achievibit/statuses/{sha}', + 'languages_url': 'https://api.github.com/repos/Kibibit/achievibit/languages', + 'stargazers_url': 'https://api.github.com/repos/Kibibit/achievibit/stargazers', + 'contributors_url': 'https://api.github.com/repos/Kibibit/achievibit/contributors', + 'subscribers_url': 'https://api.github.com/repos/Kibibit/achievibit/subscribers', + 'subscription_url': 'https://api.github.com/repos/Kibibit/achievibit/subscription', + 'commits_url': 'https://api.github.com/repos/Kibibit/achievibit/commits{/sha}', + 'git_commits_url': 'https://api.github.com/repos/Kibibit/achievibit/git/commits{/sha}', + 'comments_url': 'https://api.github.com/repos/Kibibit/achievibit/comments{/number}', + 'issue_comment_url': 'https://api.github.com/repos/Kibibit/achievibit/issues/comments{/number}', + 'contents_url': 'https://api.github.com/repos/Kibibit/achievibit/contents/{+path}', + 'compare_url': 'https://api.github.com/repos/Kibibit/achievibit/compare/{base}...{head}', + 'merges_url': 'https://api.github.com/repos/Kibibit/achievibit/merges', + 'archive_url': 'https://api.github.com/repos/Kibibit/achievibit/{archive_format}{/ref}', + 'downloads_url': 'https://api.github.com/repos/Kibibit/achievibit/downloads', + 'issues_url': 'https://api.github.com/repos/Kibibit/achievibit/issues{/number}', + 'pulls_url': 'https://api.github.com/repos/Kibibit/achievibit/pulls{/number}', + 'milestones_url': 'https://api.github.com/repos/Kibibit/achievibit/milestones{/number}', + 'notifications_url': 'https://api.github.com/repos/Kibibit/achievibit/notifications{?since,all,participating}', + 'labels_url': 'https://api.github.com/repos/Kibibit/achievibit/labels{/name}', + 'releases_url': 'https://api.github.com/repos/Kibibit/achievibit/releases{/id}', + 'deployments_url': 'https://api.github.com/repos/Kibibit/achievibit/deployments', + 'created_at': '2016-09-26T12:49:00Z', + 'updated_at': '2017-01-25T12:49:04Z', + 'pushed_at': '2017-02-10T02:39:13Z', + 'git_url': 'git://github.com/Kibibit/achievibit.git', + 'ssh_url': 'git@github.com:Kibibit/achievibit.git', + 'clone_url': 'https://github.com/Kibibit/achievibit.git', + 'svn_url': 'https://github.com/Kibibit/achievibit', + 'homepage': null, + 'size': 3870, + 'stargazers_count': 3, + 'watchers_count': 3, + 'language': 'JavaScript', + 'has_issues': true, + 'has_downloads': true, + 'has_wiki': true, + 'has_pages': false, + 'forks_count': 0, + 'mirror_url': null, + 'open_issues_count': 12, + 'forks': 0, + 'open_issues': 12, + 'watchers': 3, + 'default_branch': 'master' + } + }, + '_links': { + 'self': { + 'href': 'https://api.github.com/repos/Kibibit/achievibit/pulls/68' + }, + 'html': { + 'href': 'https://github.com/Kibibit/achievibit/pull/68' + }, + 'issue': { + 'href': 'https://api.github.com/repos/Kibibit/achievibit/issues/68' + }, + 'comments': { + 'href': 'https://api.github.com/repos/Kibibit/achievibit/issues/68/comments' + }, + 'review_comments': { + 'href': 'https://api.github.com/repos/Kibibit/achievibit/pulls/68/comments' + }, + 'review_comment': { + 'href': 'https://api.github.com/repos/Kibibit/achievibit/pulls/comments{/number}' + }, + 'commits': { + 'href': 'https://api.github.com/repos/Kibibit/achievibit/pulls/68/commits' + }, + 'statuses': { + 'href': 'https://api.github.com/repos/Kibibit/achievibit/statuses/a6f9c89297016c8bfaf6cbb03b86e3faa647877c' + } + }, + 'requested_reviewers': [ + + ], + 'merged': false, + 'mergeable': null, + 'mergeable_state': 'unknown', + 'merged_by': null, + 'comments': 0, + 'review_comments': 0, + 'maintainer_can_modify': false, + 'commits': 1, + 'additions': 241, + 'deletions': 1, + 'changed_files': 5 + }, + 'repository': { + 'id': 69249326, + 'name': 'achievibit', + 'full_name': 'Kibibit/achievibit', + 'owner': { + 'login': 'Kibibit', + 'id': 14274940, + 'avatar_url': 'https://avatars.githubusercontent.com/u/14274940?v=3', + 'gravatar_id': '', + 'url': 'https://api.github.com/users/Kibibit', + 'html_url': 'https://github.com/Kibibit', + 'followers_url': 'https://api.github.com/users/Kibibit/followers', + 'following_url': 'https://api.github.com/users/Kibibit/following{/other_user}', + 'gists_url': 'https://api.github.com/users/Kibibit/gists{/gist_id}', + 'starred_url': 'https://api.github.com/users/Kibibit/starred{/owner}{/repo}', + 'subscriptions_url': 'https://api.github.com/users/Kibibit/subscriptions', + 'organizations_url': 'https://api.github.com/users/Kibibit/orgs', + 'repos_url': 'https://api.github.com/users/Kibibit/repos', + 'events_url': 'https://api.github.com/users/Kibibit/events{/privacy}', + 'received_events_url': 'https://api.github.com/users/Kibibit/received_events', + 'site_admin': false + }, + 'private': false, + 'html_url': 'https://github.com/Kibibit/achievibit', + 'description': 'github hook system to integrate achievements', + 'fork': false, + 'url': 'https://api.github.com/repos/Kibibit/achievibit', + 'forks_url': 'https://api.github.com/repos/Kibibit/achievibit/forks', + 'keys_url': 'https://api.github.com/repos/Kibibit/achievibit/keys{/key_id}', + 'collaborators_url': 'https://api.github.com/repos/Kibibit/achievibit/collaborators{/collaborator}', + 'teams_url': 'https://api.github.com/repos/Kibibit/achievibit/teams', + 'hooks_url': 'https://api.github.com/repos/Kibibit/achievibit/hooks', + 'issue_events_url': 'https://api.github.com/repos/Kibibit/achievibit/issues/events{/number}', + 'events_url': 'https://api.github.com/repos/Kibibit/achievibit/events', + 'assignees_url': 'https://api.github.com/repos/Kibibit/achievibit/assignees{/user}', + 'branches_url': 'https://api.github.com/repos/Kibibit/achievibit/branches{/branch}', + 'tags_url': 'https://api.github.com/repos/Kibibit/achievibit/tags', + 'blobs_url': 'https://api.github.com/repos/Kibibit/achievibit/git/blobs{/sha}', + 'git_tags_url': 'https://api.github.com/repos/Kibibit/achievibit/git/tags{/sha}', + 'git_refs_url': 'https://api.github.com/repos/Kibibit/achievibit/git/refs{/sha}', + 'trees_url': 'https://api.github.com/repos/Kibibit/achievibit/git/trees{/sha}', + 'statuses_url': 'https://api.github.com/repos/Kibibit/achievibit/statuses/{sha}', + 'languages_url': 'https://api.github.com/repos/Kibibit/achievibit/languages', + 'stargazers_url': 'https://api.github.com/repos/Kibibit/achievibit/stargazers', + 'contributors_url': 'https://api.github.com/repos/Kibibit/achievibit/contributors', + 'subscribers_url': 'https://api.github.com/repos/Kibibit/achievibit/subscribers', + 'subscription_url': 'https://api.github.com/repos/Kibibit/achievibit/subscription', + 'commits_url': 'https://api.github.com/repos/Kibibit/achievibit/commits{/sha}', + 'git_commits_url': 'https://api.github.com/repos/Kibibit/achievibit/git/commits{/sha}', + 'comments_url': 'https://api.github.com/repos/Kibibit/achievibit/comments{/number}', + 'issue_comment_url': 'https://api.github.com/repos/Kibibit/achievibit/issues/comments{/number}', + 'contents_url': 'https://api.github.com/repos/Kibibit/achievibit/contents/{+path}', + 'compare_url': 'https://api.github.com/repos/Kibibit/achievibit/compare/{base}...{head}', + 'merges_url': 'https://api.github.com/repos/Kibibit/achievibit/merges', + 'archive_url': 'https://api.github.com/repos/Kibibit/achievibit/{archive_format}{/ref}', + 'downloads_url': 'https://api.github.com/repos/Kibibit/achievibit/downloads', + 'issues_url': 'https://api.github.com/repos/Kibibit/achievibit/issues{/number}', + 'pulls_url': 'https://api.github.com/repos/Kibibit/achievibit/pulls{/number}', + 'milestones_url': 'https://api.github.com/repos/Kibibit/achievibit/milestones{/number}', + 'notifications_url': 'https://api.github.com/repos/Kibibit/achievibit/notifications{?since,all,participating}', + 'labels_url': 'https://api.github.com/repos/Kibibit/achievibit/labels{/name}', + 'releases_url': 'https://api.github.com/repos/Kibibit/achievibit/releases{/id}', + 'deployments_url': 'https://api.github.com/repos/Kibibit/achievibit/deployments', + 'created_at': '2016-09-26T12:49:00Z', + 'updated_at': '2017-01-25T12:49:04Z', + 'pushed_at': '2017-02-10T02:39:13Z', + 'git_url': 'git://github.com/Kibibit/achievibit.git', + 'ssh_url': 'git@github.com:Kibibit/achievibit.git', + 'clone_url': 'https://github.com/Kibibit/achievibit.git', + 'svn_url': 'https://github.com/Kibibit/achievibit', + 'homepage': null, + 'size': 3870, + 'stargazers_count': 3, + 'watchers_count': 3, + 'language': 'JavaScript', + 'has_issues': true, + 'has_downloads': true, + 'has_wiki': true, + 'has_pages': false, + 'forks_count': 0, + 'mirror_url': null, + 'open_issues_count': 12, + 'forks': 0, + 'open_issues': 12, + 'watchers': 3, + 'default_branch': 'master' + }, + 'organization': { + 'login': 'Kibibit', + 'id': 14274940, + 'url': 'https://api.github.com/orgs/Kibibit', + 'repos_url': 'https://api.github.com/orgs/Kibibit/repos', + 'events_url': 'https://api.github.com/orgs/Kibibit/events', + 'hooks_url': 'https://api.github.com/orgs/Kibibit/hooks', + 'issues_url': 'https://api.github.com/orgs/Kibibit/issues', + 'members_url': 'https://api.github.com/orgs/Kibibit/members{/member}', + 'public_members_url': 'https://api.github.com/orgs/Kibibit/public_members{/member}', + 'avatar_url': 'https://avatars.githubusercontent.com/u/14274940?v=3', + 'description': '' + }, + 'sender': { + 'login': 'ortichon', + 'id': 10263615, + 'avatar_url': 'https://avatars.githubusercontent.com/u/10263615?v=3', + 'gravatar_id': '', + 'url': 'https://api.github.com/users/ortichon', + 'html_url': 'https://github.com/ortichon', + 'followers_url': 'https://api.github.com/users/ortichon/followers', + 'following_url': 'https://api.github.com/users/ortichon/following{/other_user}', + 'gists_url': 'https://api.github.com/users/ortichon/gists{/gist_id}', + 'starred_url': 'https://api.github.com/users/ortichon/starred{/owner}{/repo}', + 'subscriptions_url': 'https://api.github.com/users/ortichon/subscriptions', + 'organizations_url': 'https://api.github.com/users/ortichon/orgs', + 'repos_url': 'https://api.github.com/users/ortichon/repos', + 'events_url': 'https://api.github.com/users/ortichon/events{/privacy}', + 'received_events_url': 'https://api.github.com/users/ortichon/received_events', + 'type': 'User', + 'site_admin': false + } +}; diff --git a/test/utilities.js b/test/utilities.js index 8c0469d4..283cd454 100644 --- a/test/utilities.js +++ b/test/utilities.js @@ -2,6 +2,140 @@ var expect = require('chai').expect; var utilities = require('../utilities'); describe('achievibit Utilities', function() { + describe('parseStatuses', function() { + it('should ignore pending statuses', function() { + var statuses = [ + new Status('commit1', 'pending') + ]; + + var parsedStatuses = utilities.parseStatuses(statuses); + + expect(parsedStatuses).to.be.an('object'); + expect(parsedStatuses).to.not.include.keys('commit1'); + }); + + it('should parse all other statuses besides pending', function() { + var statuses = [ + new Status('commit1', 'pending'), + new Status('commit2', 'success'), + new Status('commit3', 'error'), + new Status('commit4', 'failed') + ]; + + var parsedStatuses = utilities.parseStatuses(statuses); + + expect(parsedStatuses).to.be.an('object'); + expect(parsedStatuses).to.include.keys( + 'commit2', + 'commit3', + 'commit4' + ); + }); + }); + + describe('mergeBasePRData - recollect basic pull request data', function() { + it('should create a PR entry if not exists', function() { + var eventData = require('./stubs/eventData.mock'); + var pullRequestsObject = {}; + + utilities.mergeBasePRData(pullRequestsObject, eventData); + + var expectedId = 'Kibibit/achievibit/pull/1'; + expect(pullRequestsObject[expectedId]).to.be.an('object'); + expect(pullRequestsObject[expectedId]).to.include.keys( + 'id', + '_id', // ?? + 'url', + 'number', + 'title', + 'description', + 'creator', + 'createdOn', + 'labels', + 'history', + 'repository' + ); + }); + + it('should merge new data if old data exist', function() { + var eventData = require('./stubs/eventData.mock'); + var pullRequestsObject = { + 'Kibibit/achievibit/pull/1': { + 'id': 'Kibibit/achievibit/pull/1', + 'url': 'nice', + 'number': 1, + 'title': 'old_title', + 'description': 'old_description', + } + }; + + utilities.mergeBasePRData(pullRequestsObject, eventData); + + var expectedId = 'Kibibit/achievibit/pull/1'; + expect(pullRequestsObject[expectedId]).to.be.an('object'); + expect(pullRequestsObject[expectedId]).to.include.keys( + 'id', + '_id', // ?? + 'url', + 'number', + 'title', + 'description', + 'creator', + 'createdOn', + 'labels', + 'history', + 'repository' + ); + }); + }); + + describe('initializePullRequest - get all basic data from event', function() { + it('should return the correct data', function() { + var eventData = require('./stubs/eventData.mock'); + + var pullRequest = utilities.initializePullRequest(eventData); + expect(pullRequest).to.be.an('object'); + expect(pullRequest).to.include.keys( + 'id', + '_id', // ?? + 'url', + 'number', + 'title', + 'description', + 'creator', + 'createdOn', + 'labels', + 'history', + 'repository' + ); + expect(pullRequest).to.not.include.keys('organization', 'reviewers'); + }); + + it('should have organization associated if found', function() { + var eventData = require('./stubs/eventData.mock'); + + eventData.repository.owner.type = 'Organization'; + + var pullRequest = utilities.initializePullRequest(eventData); + expect(pullRequest).to.be.an('object'); + expect(pullRequest).to.include.keys('organization'); + }); + + it('should have assignees if found', function() { + var eventData = require('./stubs/eventData.mock'); + + eventData.pull_request.assignees = []; + eventData.pull_request.assignees.push({ + 'login': 'Thatkookooguy', + 'avatar_url': 'https://avatars.githubusercontent.com/u/10427304?v=3', + 'html_url': 'https://github.com/Thatkookooguy', + }); + + var pullRequest = utilities.initializePullRequest(eventData); + expect(pullRequest).to.be.an('object'); + expect(pullRequest).to.include.keys('reviewers'); + }); + }); describe('parseUser - GitHub User to achievibit User', function() { it('should return the correct data', function() { var achievibitUser = utilities.parseUser(new GithubUser(), false); @@ -87,3 +221,12 @@ function PullRequest() { 'repository': new GithubRepo() }; } + +function Status(context, state) { + return { + 'state': state || 'pending', + 'description': 'description yo', + 'target': 'url', + 'context': context || 'commit' + }; +}