{"action":"created","comment":{"url":"https://api.github.com/repos/ICTU/quality-report/pulls/comments/176154484","pull_request_review_id":105808418,"id":176154484,"diff_hunk":"@@ -18,100 +18,200 @@\n from unittest.mock import patch, call\n \n from hqlib.metric_source import Jira, JiraFilter\n-from hqlib.domain import ExtraInfo\n \n \n class JiraFilterTest(unittest.TestCase):\n     \"\"\" Test the Jira filter metric source. \"\"\"\n \n-    @patch.object(Jira, 'query_total')\n-    def test_nr_issues(self, query_total_mock):\n-        \"\"\" Test that the number of items equals the sum of totals per metric source returned by Jira. \"\"\"\n-        query_total_mock.side_effect = [12, 13]\n-\n-        result = JiraFilter('', '', '').nr_issues('123', '567')\n-\n-        query_total_mock.assert_has_calls([call(123), call(567)])\n-        self.assertEqual(25, result)\n-\n-    @patch.object(Jira, 'query_total')\n-    def test_nr_issues_on_error(self, query_total_mock):\n-        \"\"\" Test that the number of items is set to -1 if Jira returned -1 for any metric source. \"\"\"\n-        query_total_mock.side_effect = [-1, 13]\n+    def test_get_issue_url(self):\n+        jira_filter = JiraFilter('url/', '', '')\n+        self.assertEqual('url/browse/key', jira_filter.get_issue_url('key'))\n \n-        result = JiraFilter('', '', '').nr_issues('123', '567')\n-\n-        query_total_mock.assert_has_calls([call(123), call(567)])\n+    @patch.object(Jira, 'get_query')\n+    def test_nr_issues(self, get_query_url_mock):\n+        \"\"\" Test that the number of items equals the sum of totals per metric source returned by Jira. \"\"\"\n+        jira_filter = JiraFilter('http://jira/', 'username', 'password', field_name='customfield_11700')\n+        get_query_url_mock.return_value = \\\n+            {\"searchUrl\": \"http://jira/search\", \"viewUrl\": \"http://jira/view\", \"total\": \"5\", \"issues\": [\n+                {\"key\": \"ISS-1\", \"fields\": {\"summary\": \"First Issue\", \"customfield_11700\": \"20.3\"}},\n+                {\"key\": \"ISS-2\", \"fields\": {\"summary\": \"2nd Issue\", \"customfield_11700\": 100}}]\n+             }\n+\n+        result, issue_list = jira_filter.nr_issues('12345')\n+\n+        get_query_url_mock.assert_called_once()\n+        self.assertEqual(5, result)  # pay attention, it reads 'total' and does not count the issues\n+        self.assertEqual([\n+            {\"href\": \"http://jira/browse/ISS-1\", \"text\": \"First Issue\"},\n+            {\"href\": \"http://jira/browse/ISS-2\", \"text\": \"2nd Issue\"}\n+        ], issue_list)\n+\n+    @patch.object(Jira, 'get_query')\n+    def test_nr_issues_when_no_issues(self, get_query_url_mock):\n+        \"\"\" Test that the number of issues is zero and the issue list is empty when there is no issues. \"\"\"\n+        jira_filter = JiraFilter('http://jira/', 'username', 'password', field_name='customfield_11700')\n+        get_query_url_mock.return_value = \\\n+            {\"searchUrl\": \"http://jira/search\", \"viewUrl\": \"http://jira/view\", \"total\": \"0\", \"issues\": []}\n+\n+        result, issue_list = jira_filter.nr_issues('12345')\n+\n+        get_query_url_mock.assert_called_once()\n+        self.assertEqual(0, result)  # pay attention, it reads 'total' and does not count the issues\n+        self.assertEqual([], issue_list)\n+\n+    @patch.object(Jira, 'get_query')\n+    def test_nr_issues_with_empty_jira_answer(self, get_query_url_mock):\n+        \"\"\" Test that the sum is -1 and the issue list is empty when jira returns empty json. \"\"\"\n+        jira_filter = JiraFilter('http://jira/', 'username', 'password', field_name='customfield_11700')\n+        get_query_url_mock.return_value = []\n+\n+        result, issue_list = jira_filter.nr_issues('12345')\n+\n+        get_query_url_mock.assert_called_once()\n         self.assertEqual(-1, result)\n-\n-    @patch.object(Jira, 'average_duration_of_issues')\n-    def test_average_duration_of_issues(self, average_duration_of_issues_mock):\n-        \"\"\" Test that the average duration is the average of the averages returned by different filters. \"\"\"\n-        average_duration_of_issues_mock.side_effect = [12, 13]\n-\n-        result = JiraFilter('', '', '').average_duration_of_issues('123', '567')\n-\n-        average_duration_of_issues_mock.assert_has_calls([call(123), call(567)])\n-        self.assertEqual(12.5, result)\n-\n-    @patch.object(Jira, 'extra_info')\n-    def test_extra_info_one(self, extra_info_mock):\n-        \"\"\" Test that the average duration is the average of the averages returned by different filters. \"\"\"\n-        ret_obj = ExtraInfo()\n-        extra_info_mock.return_value = [ret_obj]\n-\n-        result = JiraFilter('', '', '').extra_info()\n-\n-        extra_info_mock.assert_called_once()\n-        self.assertEqual(ret_obj, result)\n-\n-    @patch.object(Jira, 'extra_info')\n-    def test_extra_info_more(self, extra_info_mock):\n-        \"\"\" Test that the average duration is the average of the averages returned by different filters. \"\"\"\n-        ret_obj1 = ExtraInfo(col1=\"x\", clo2=\"y\")\n-        ret_obj1 += 'a11', 'a12'\n-        ret_obj2 = ExtraInfo(col1=\"x\", clo2=\"y\")\n-        ret_obj2 += 'a21', 'a22'\n-        extra_info_mock.return_value = [ret_obj1, ret_obj2]\n-\n-        expected = ExtraInfo(col1=\"x\", clo2=\"y\")\n-        expected += 'a11', 'a12'\n-        expected += 'a21', 'a22'\n-\n-        result = JiraFilter('', '', '').extra_info()\n-\n-        extra_info_mock.assert_called_once()\n-        self.assertEqual(expected.data, result.data)\n-\n-    @patch.object(Jira, 'average_duration_of_issues')\n-    def test_average_duration_of_issues_on_error(self, average_duration_of_issues_mock):\n-        \"\"\" Test that the average is set to -1 if Jira returned -1 for any metric source. \"\"\"\n-        average_duration_of_issues_mock.side_effect = [-1, 13]\n-\n-        result = JiraFilter('', '', '').average_duration_of_issues('123', '567')\n-\n-        average_duration_of_issues_mock.assert_has_calls([call(123), call(567)])\n+        self.assertEqual([], issue_list)\n+\n+    @patch.object(JiraFilter, '_query_total')\n+    def test_nr_issues_multiple_sources(self, query_sum_mock):\n+        \"\"\" Test that the field is summed correctly and that involved issues are in the issue list. \"\"\"\n+        jira_filter = JiraFilter('http://jira/', 'username', 'password', field_name='customfield_11700')\n+        query_sum_mock.return_value = (0, ([]))\n+\n+        jira_filter.nr_issues('12345', '78910')\n+\n+        query_sum_mock.has_calls([\n+            call('12345'), call('78910')\n+        ])\n+\n+    @patch.object(Jira, 'get_query')\n+    def test_sum_field(self, get_query_url_mock):\n+        \"\"\" Test that the field is summed correctly and that involved issues are in the issue list. \"\"\"\n+        jira_filter = JiraFilter('http://jira/', 'username', 'password', field_name='customfield_11700')\n+        get_query_url_mock.return_value = \\\n+            {\"searchUrl\": \"http://jira/search\", \"viewUrl\": \"http://jira/view\", \"total\": \"5\", \"issues\": [\n+                {\"key\": \"ISS-1\", \"fields\": {\"summary\": \"First Issue\", \"customfield_11700\": \"20.3\"}},\n+                {\"key\": \"ISS-2\", \"fields\": {\"summary\": \"2nd Issue\", \"customfield_11700\": 100}},\n+                {\"key\": \"ISS-3\", \"fields\": {\"summary\": \"The Last Issue\", \"customfield_11700\": None}}]\n+             }\n+\n+        result, issue_list = jira_filter.sum_field('12345')\n+\n+        get_query_url_mock.assert_called_once()\n+        self.assertEqual(120.3, result)\n+        self.assertEqual([\n+            {\"href\": \"http://jira/browse/ISS-1\", \"text\": \"First Issue\"},\n+            {\"href\": \"http://jira/browse/ISS-2\", \"text\": \"2nd Issue\"}\n+        ], issue_list)\n+\n+    @patch.object(Jira, 'get_query')\n+    def test_sum_field_when_no_issues(self, get_query_url_mock):\n+        \"\"\" Test that the sum is zero and the issue list is empty when there is no issues. \"\"\"\n+        jira_filter = JiraFilter('http://jira/', 'username', 'password', field_name='customfield_11700')\n+        get_query_url_mock.return_value = \\\n+            {\"searchUrl\": \"http://jira/search\", \"viewUrl\": \"http://jira/view\", \"total\": \"5\", \"issues\": []}\n+\n+        result, issue_list = jira_filter.sum_field('12345')\n+\n+        get_query_url_mock.assert_called_once()\n+        self.assertEqual(0, result)\n+        self.assertEqual([], issue_list)\n+\n+    @patch.object(Jira, 'get_query')\n+    def test_sum_field_with_empty_jira_answer(self, get_query_url_mock):\n+        \"\"\" Test that the sum is -1 and the issue list is empty when jira returns empty json. \"\"\"\n+        jira_filter = JiraFilter('http://jira/', 'username', 'password', field_name='customfield_11700')\n+        get_query_url_mock.return_value = []\n+\n+        result, issue_list = jira_filter.sum_field('12345')\n+\n+        get_query_url_mock.assert_called_once()\n         self.assertEqual(-1, result)\n+        self.assertEqual([], issue_list)\n+\n+    @patch.object(JiraFilter, '_query_sum')\n+    def test_sum_field_multiple_sources(self, query_sum_mock):","path":"backend/tests/unittests/metric_source/issue_tracker/jira_filter_tests.py","position":181,"original_position":181,"commit_id":"56e5018d35d5c910aa426f48a72d8f7897d241e7","original_commit_id":"56e5018d35d5c910aa426f48a72d8f7897d241e7","user":{"login":"codacy-bot","id":19940114,"avatar_url":"https://avatars1.githubusercontent.com/u/19940114?v=4","gravatar_id":"","url":"https://api.github.com/users/codacy-bot","html_url":"https://github.com/codacy-bot","followers_url":"https://api.github.com/users/codacy-bot/followers","following_url":"https://api.github.com/users/codacy-bot/following{/other_user}","gists_url":"https://api.github.com/users/codacy-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/codacy-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codacy-bot/subscriptions","organizations_url":"https://api.github.com/users/codacy-bot/orgs","repos_url":"https://api.github.com/users/codacy-bot/repos","events_url":"https://api.github.com/users/codacy-bot/events{/privacy}","received_events_url":"https://api.github.com/users/codacy-bot/received_events","type":"User","site_admin":false},"body":"![Codacy](https://app.codacy.com/assets/images/favicon.png) Issue found: [Method could be a function](https://app.codacy.com/app/frank_10/quality-report/pullRequest?prid=1458369)","created_at":"2018-03-21T16:44:33Z","updated_at":"2018-03-21T16:44:34Z","html_url":"https://github.com/ICTU/quality-report/pull/328#discussion_r176154484","pull_request_url":"https://api.github.com/repos/ICTU/quality-report/pulls/328","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/ICTU/quality-report/pulls/comments/176154484"},"html":{"href":"https://github.com/ICTU/quality-report/pull/328#discussion_r176154484"},"pull_request":{"href":"https://api.github.com/repos/ICTU/quality-report/pulls/328"}}},"pull_request":{"url":"https://api.github.com/repos/ICTU/quality-report/pulls/328","id":176538312,"html_url":"https://github.com/ICTU/quality-report/pull/328","diff_url":"https://github.com/ICTU/quality-report/pull/328.diff","patch_url":"https://github.com/ICTU/quality-report/pull/328.patch","issue_url":"https://api.github.com/repos/ICTU/quality-report/issues/328","number":328,"state":"open","locked":false,"title":"Feature 292 detail pane for jira","user":{"login":"milenk","id":32734752,"avatar_url":"https://avatars2.githubusercontent.com/u/32734752?v=4","gravatar_id":"","url":"https://api.github.com/users/milenk","html_url":"https://github.com/milenk","followers_url":"https://api.github.com/users/milenk/followers","following_url":"https://api.github.com/users/milenk/following{/other_user}","gists_url":"https://api.github.com/users/milenk/gists{/gist_id}","starred_url":"https://api.github.com/users/milenk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/milenk/subscriptions","organizations_url":"https://api.github.com/users/milenk/orgs","repos_url":"https://api.github.com/users/milenk/repos","events_url":"https://api.github.com/users/milenk/events{/privacy}","received_events_url":"https://api.github.com/users/milenk/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-03-21T16:39:09Z","updated_at":"2018-03-21T16:44:34Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4557b65a148568d25329138aba0dc1fc7d319b43","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/ICTU/quality-report/pulls/328/commits","review_comments_url":"https://api.github.com/repos/ICTU/quality-report/pulls/328/comments","review_comment_url":"https://api.github.com/repos/ICTU/quality-report/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ICTU/quality-report/issues/328/comments","statuses_url":"https://api.github.com/repos/ICTU/quality-report/statuses/56e5018d35d5c910aa426f48a72d8f7897d241e7","head":{"label":"ICTU:feature-292-detail-pane-for-jira","ref":"feature-292-detail-pane-for-jira","sha":"56e5018d35d5c910aa426f48a72d8f7897d241e7","user":{"login":"ICTU","id":6009701,"avatar_url":"https://avatars1.githubusercontent.com/u/6009701?v=4","gravatar_id":"","url":"https://api.github.com/users/ICTU","html_url":"https://github.com/ICTU","followers_url":"https://api.github.com/users/ICTU/followers","following_url":"https://api.github.com/users/ICTU/following{/other_user}","gists_url":"https://api.github.com/users/ICTU/gists{/gist_id}","starred_url":"https://api.github.com/users/ICTU/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ICTU/subscriptions","organizations_url":"https://api.github.com/users/ICTU/orgs","repos_url":"https://api.github.com/users/ICTU/repos","events_url":"https://api.github.com/users/ICTU/events{/privacy}","received_events_url":"https://api.github.com/users/ICTU/received_events","type":"Organization","site_admin":false},"repo":{"id":16836834,"name":"quality-report","full_name":"ICTU/quality-report","owner":{"login":"ICTU","id":6009701,"avatar_url":"https://avatars1.githubusercontent.com/u/6009701?v=4","gravatar_id":"","url":"https://api.github.com/users/ICTU","html_url":"https://github.com/ICTU","followers_url":"https://api.github.com/users/ICTU/followers","following_url":"https://api.github.com/users/ICTU/following{/other_user}","gists_url":"https://api.github.com/users/ICTU/gists{/gist_id}","starred_url":"https://api.github.com/users/ICTU/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ICTU/subscriptions","organizations_url":"https://api.github.com/users/ICTU/orgs","repos_url":"https://api.github.com/users/ICTU/repos","events_url":"https://api.github.com/users/ICTU/events{/privacy}","received_events_url":"https://api.github.com/users/ICTU/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ICTU/quality-report","description":"HQ - Holistic Software Quality Reporting","fork":false,"url":"https://api.github.com/repos/ICTU/quality-report","forks_url":"https://api.github.com/repos/ICTU/quality-report/forks","keys_url":"https://api.github.com/repos/ICTU/quality-report/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ICTU/quality-report/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ICTU/quality-report/teams","hooks_url":"https://api.github.com/repos/ICTU/quality-report/hooks","issue_events_url":"https://api.github.com/repos/ICTU/quality-report/issues/events{/number}","events_url":"https://api.github.com/repos/ICTU/quality-report/events","assignees_url":"https://api.github.com/repos/ICTU/quality-report/assignees{/user}","branches_url":"https://api.github.com/repos/ICTU/quality-report/branches{/branch}","tags_url":"https://api.github.com/repos/ICTU/quality-report/tags","blobs_url":"https://api.github.com/repos/ICTU/quality-report/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ICTU/quality-report/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ICTU/quality-report/git/refs{/sha}","trees_url":"https://api.github.com/repos/ICTU/quality-report/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ICTU/quality-report/statuses/{sha}","languages_url":"https://api.github.com/repos/ICTU/quality-report/languages","stargazers_url":"https://api.github.com/repos/ICTU/quality-report/stargazers","contributors_url":"https://api.github.com/repos/ICTU/quality-report/contributors","subscribers_url":"https://api.github.com/repos/ICTU/quality-report/subscribers","subscription_url":"https://api.github.com/repos/ICTU/quality-report/subscription","commits_url":"https://api.github.com/repos/ICTU/quality-report/commits{/sha}","git_commits_url":"https://api.github.com/repos/ICTU/quality-report/git/commits{/sha}","comments_url":"https://api.github.com/repos/ICTU/quality-report/comments{/number}","issue_comment_url":"https://api.github.com/repos/ICTU/quality-report/issues/comments{/number}","contents_url":"https://api.github.com/repos/ICTU/quality-report/contents/{+path}","compare_url":"https://api.github.com/repos/ICTU/quality-report/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ICTU/quality-report/merges","archive_url":"https://api.github.com/repos/ICTU/quality-report/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ICTU/quality-report/downloads","issues_url":"https://api.github.com/repos/ICTU/quality-report/issues{/number}","pulls_url":"https://api.github.com/repos/ICTU/quality-report/pulls{/number}","milestones_url":"https://api.github.com/repos/ICTU/quality-report/milestones{/number}","notifications_url":"https://api.github.com/repos/ICTU/quality-report/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ICTU/quality-report/labels{/name}","releases_url":"https://api.github.com/repos/ICTU/quality-report/releases{/id}","deployments_url":"https://api.github.com/repos/ICTU/quality-report/deployments","created_at":"2014-02-14T12:39:18Z","updated_at":"2018-03-19T12:22:36Z","pushed_at":"2018-03-21T16:39:10Z","git_url":"git://github.com/ICTU/quality-report.git","ssh_url":"git@github.com:ICTU/quality-report.git","clone_url":"https://github.com/ICTU/quality-report.git","svn_url":"https://github.com/ICTU/quality-report","homepage":"http://ictu.github.io/quality-report/","size":7214,"stargazers_count":13,"watchers_count":13,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":5,"mirror_url":null,"archived":false,"open_issues_count":48,"license":null,"forks":5,"open_issues":48,"watchers":13,"default_branch":"master"}},"base":{"label":"ICTU:master","ref":"master","sha":"e6f043c47f59f3be0696645824355c1fae3d78d0","user":{"login":"ICTU","id":6009701,"avatar_url":"https://avatars1.githubusercontent.com/u/6009701?v=4","gravatar_id":"","url":"https://api.github.com/users/ICTU","html_url":"https://github.com/ICTU","followers_url":"https://api.github.com/users/ICTU/followers","following_url":"https://api.github.com/users/ICTU/following{/other_user}","gists_url":"https://api.github.com/users/ICTU/gists{/gist_id}","starred_url":"https://api.github.com/users/ICTU/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ICTU/subscriptions","organizations_url":"https://api.github.com/users/ICTU/orgs","repos_url":"https://api.github.com/users/ICTU/repos","events_url":"https://api.github.com/users/ICTU/events{/privacy}","received_events_url":"https://api.github.com/users/ICTU/received_events","type":"Organization","site_admin":false},"repo":{"id":16836834,"name":"quality-report","full_name":"ICTU/quality-report","owner":{"login":"ICTU","id":6009701,"avatar_url":"https://avatars1.githubusercontent.com/u/6009701?v=4","gravatar_id":"","url":"https://api.github.com/users/ICTU","html_url":"https://github.com/ICTU","followers_url":"https://api.github.com/users/ICTU/followers","following_url":"https://api.github.com/users/ICTU/following{/other_user}","gists_url":"https://api.github.com/users/ICTU/gists{/gist_id}","starred_url":"https://api.github.com/users/ICTU/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ICTU/subscriptions","organizations_url":"https://api.github.com/users/ICTU/orgs","repos_url":"https://api.github.com/users/ICTU/repos","events_url":"https://api.github.com/users/ICTU/events{/privacy}","received_events_url":"https://api.github.com/users/ICTU/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ICTU/quality-report","description":"HQ - Holistic Software Quality Reporting","fork":false,"url":"https://api.github.com/repos/ICTU/quality-report","forks_url":"https://api.github.com/repos/ICTU/quality-report/forks","keys_url":"https://api.github.com/repos/ICTU/quality-report/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ICTU/quality-report/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ICTU/quality-report/teams","hooks_url":"https://api.github.com/repos/ICTU/quality-report/hooks","issue_events_url":"https://api.github.com/repos/ICTU/quality-report/issues/events{/number}","events_url":"https://api.github.com/repos/ICTU/quality-report/events","assignees_url":"https://api.github.com/repos/ICTU/quality-report/assignees{/user}","branches_url":"https://api.github.com/repos/ICTU/quality-report/branches{/branch}","tags_url":"https://api.github.com/repos/ICTU/quality-report/tags","blobs_url":"https://api.github.com/repos/ICTU/quality-report/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ICTU/quality-report/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ICTU/quality-report/git/refs{/sha}","trees_url":"https://api.github.com/repos/ICTU/quality-report/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ICTU/quality-report/statuses/{sha}","languages_url":"https://api.github.com/repos/ICTU/quality-report/languages","stargazers_url":"https://api.github.com/repos/ICTU/quality-report/stargazers","contributors_url":"https://api.github.com/repos/ICTU/quality-report/contributors","subscribers_url":"https://api.github.com/repos/ICTU/quality-report/subscribers","subscription_url":"https://api.github.com/repos/ICTU/quality-report/subscription","commits_url":"https://api.github.com/repos/ICTU/quality-report/commits{/sha}","git_commits_url":"https://api.github.com/repos/ICTU/quality-report/git/commits{/sha}","comments_url":"https://api.github.com/repos/ICTU/quality-report/comments{/number}","issue_comment_url":"https://api.github.com/repos/ICTU/quality-report/issues/comments{/number}","contents_url":"https://api.github.com/repos/ICTU/quality-report/contents/{+path}","compare_url":"https://api.github.com/repos/ICTU/quality-report/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ICTU/quality-report/merges","archive_url":"https://api.github.com/repos/ICTU/quality-report/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ICTU/quality-report/downloads","issues_url":"https://api.github.com/repos/ICTU/quality-report/issues{/number}","pulls_url":"https://api.github.com/repos/ICTU/quality-report/pulls{/number}","milestones_url":"https://api.github.com/repos/ICTU/quality-report/milestones{/number}","notifications_url":"https://api.github.com/repos/ICTU/quality-report/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ICTU/quality-report/labels{/name}","releases_url":"https://api.github.com/repos/ICTU/quality-report/releases{/id}","deployments_url":"https://api.github.com/repos/ICTU/quality-report/deployments","created_at":"2014-02-14T12:39:18Z","updated_at":"2018-03-19T12:22:36Z","pushed_at":"2018-03-21T16:39:10Z","git_url":"git://github.com/ICTU/quality-report.git","ssh_url":"git@github.com:ICTU/quality-report.git","clone_url":"https://github.com/ICTU/quality-report.git","svn_url":"https://github.com/ICTU/quality-report","homepage":"http://ictu.github.io/quality-report/","size":7214,"stargazers_count":13,"watchers_count":13,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":5,"mirror_url":null,"archived":false,"open_issues_count":48,"license":null,"forks":5,"open_issues":48,"watchers":13,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ICTU/quality-report/pulls/328"},"html":{"href":"https://github.com/ICTU/quality-report/pull/328"},"issue":{"href":"https://api.github.com/repos/ICTU/quality-report/issues/328"},"comments":{"href":"https://api.github.com/repos/ICTU/quality-report/issues/328/comments"},"review_comments":{"href":"https://api.github.com/repos/ICTU/quality-report/pulls/328/comments"},"review_comment":{"href":"https://api.github.com/repos/ICTU/quality-report/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ICTU/quality-report/pulls/328/commits"},"statuses":{"href":"https://api.github.com/repos/ICTU/quality-report/statuses/56e5018d35d5c910aa426f48a72d8f7897d241e7"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"codacy-bot"}}