diff --git a/pagure/api/user.py b/pagure/api/user.py index 939ec72..51cf937 100644 --- a/pagure/api/user.py +++ b/pagure/api/user.py @@ -632,10 +632,10 @@ def api_view_user_activity_date(username, date): @api_method def api_view_user_requests_filed(username): """ - Pull requests that were filed by a user over all projects - ------------------- - Use this endpoint to retrieve a list of open pull requests a user has filed - over the entire pagure instance. + List pull-requests filled by user + --------------------------------- + Use this endpoint to retrieve a list of open pull requests a user has + filed over the entire pagure instance. :: @@ -676,136 +676,138 @@ def api_view_user_requests_filed(username): ^^^^^^^^^^^^^^^ :: - { - "args": { - "status": "open", - "username": "dudemcpants" - }, - "requests": [ + { - "assignee": null, - "branch": "master", - "branch_from": "master", - "closed_at": null, - "closed_by": null, - "comments": [], - "commit_start": "3973fae98fc485783ca14f5c3612d85832185065", - "commit_stop": "3973fae98fc485783ca14f5c3612d85832185065", - "date_created": "1510227832", - "id": 2, - "initial_comment": null, - "last_updated": "1510227833", - "project": { - "access_groups": { - "admin": [], - "commit": [], - "ticket": [] - }, - "access_users": { - "admin": [], - "commit": [], - "owner": [ - "ryanlerch" - ], - "ticket": [] - }, - "close_status": [], - "custom_keys": [], - "date_created": "1510227638", - "date_modified": "1510227638", - "description": "this is a quick project", - "fullname": "aquickproject", - "id": 1, - "milestones": {}, - "name": "aquickproject", - "namespace": null, - "parent": null, - "priorities": {}, - "tags": [], - "url_path": "aquickproject", - "user": { - "fullname": "ryanlerch", - "name": "ryanlerch" - } - }, - "remote_git": null, - "repo_from": { - "access_groups": { - "admin": [], - "commit": [], - "ticket": [] - }, - "access_users": { - "admin": [], - "commit": [], - "owner": [ - "dudemcpants" - ], - "ticket": [] - }, - "close_status": [], - "custom_keys": [], - "date_created": "1510227729", - "date_modified": "1510227729", - "description": "this is a quick project", - "fullname": "forks/dudemcpants/aquickproject", - "id": 2, - "milestones": {}, - "name": "aquickproject", - "namespace": null, - "parent": { - "access_groups": { - "admin": [], - "commit": [], - "ticket": [] - }, - "access_users": { - "admin": [], - "commit": [], - "owner": [ - "ryanlerch" - ], - "ticket": [] - }, - "close_status": [], - "custom_keys": [], - "date_created": "1510227638", - "date_modified": "1510227638", - "description": "this is a quick project", - "fullname": "aquickproject", - "id": 1, - "milestones": {}, - "name": "aquickproject", - "namespace": null, - "parent": null, - "priorities": {}, - "tags": [], - "url_path": "aquickproject", - "user": { - "fullname": "ryanlerch", - "name": "ryanlerch" - } - }, - "priorities": {}, - "tags": [], - "url_path": "fork/dudemcpants/aquickproject", - "user": { - "fullname": "Dude McPants", - "name": "dudemcpants" + "args": { + "status": "open", + "username": "dudemcpants", + "page": 1, + }, + "requests": [ + { + "assignee": null, + "branch": "master", + "branch_from": "master", + "closed_at": null, + "closed_by": null, + "comments": [], + "commit_start": "3973fae98fc485783ca14f5c3612d85832185065", + "commit_stop": "3973fae98fc485783ca14f5c3612d85832185065", + "date_created": "1510227832", + "id": 2, + "initial_comment": null, + "last_updated": "1510227833", + "project": { + "access_groups": { + "admin": [], + "commit": [], + "ticket": [] + }, + "access_users": { + "admin": [], + "commit": [], + "owner": [ + "ryanlerch" + ], + "ticket": [] + }, + "close_status": [], + "custom_keys": [], + "date_created": "1510227638", + "date_modified": "1510227638", + "description": "this is a quick project", + "fullname": "aquickproject", + "id": 1, + "milestones": {}, + "name": "aquickproject", + "namespace": null, + "parent": null, + "priorities": {}, + "tags": [], + "url_path": "aquickproject", + "user": { + "fullname": "ryanlerch", + "name": "ryanlerch" + } + }, + "remote_git": null, + "repo_from": { + "access_groups": { + "admin": [], + "commit": [], + "ticket": [] + }, + "access_users": { + "admin": [], + "commit": [], + "owner": [ + "dudemcpants" + ], + "ticket": [] + }, + "close_status": [], + "custom_keys": [], + "date_created": "1510227729", + "date_modified": "1510227729", + "description": "this is a quick project", + "fullname": "forks/dudemcpants/aquickproject", + "id": 2, + "milestones": {}, + "name": "aquickproject", + "namespace": null, + "parent": { + "access_groups": { + "admin": [], + "commit": [], + "ticket": [] + }, + "access_users": { + "admin": [], + "commit": [], + "owner": [ + "ryanlerch" + ], + "ticket": [] + }, + "close_status": [], + "custom_keys": [], + "date_created": "1510227638", + "date_modified": "1510227638", + "description": "this is a quick project", + "fullname": "aquickproject", + "id": 1, + "milestones": {}, + "name": "aquickproject", + "namespace": null, + "parent": null, + "priorities": {}, + "tags": [], + "url_path": "aquickproject", + "user": { + "fullname": "ryanlerch", + "name": "ryanlerch" + } + }, + "priorities": {}, + "tags": [], + "url_path": "fork/dudemcpants/aquickproject", + "user": { + "fullname": "Dude McPants", + "name": "dudemcpants" + } + }, + "status": "Open", + "title": "Update README.md", + "uid": "819e0b1c449e414fa291c914f28d73ec", + "updated_on": "1510227832", + "user": { + "fullname": "Dude McPants", + "name": "dudemcpants" + } } - }, - "status": "Open", - "title": "Update README.md", - "uid": "819e0b1c449e414fa291c914f28d73ec", - "updated_on": "1510227832", - "user": { - "fullname": "Dude McPants", - "name": "dudemcpants" - } + ], + "total_requests": 1 } - ], - "total_requests": 1 - } """ status = flask.request.args.get('status', 'open') @@ -858,10 +860,11 @@ def api_view_user_requests_filed(username): @api_method def api_view_user_requests_actionable(username): """ - Pull requests that are actionable by a user over all projects - ------------------- - Use this endpoint to retrieve a list of open pull requests a user is able - to action (e.g. merge) over the entire pagure instance. + List PRs actionable by user + --------------------------- + + Use this endpoint to retrieve a list of open pull requests a user is + able to action (e.g. merge) over the entire pagure instance. :: @@ -901,136 +904,138 @@ def api_view_user_requests_actionable(username): ^^^^^^^^^^^^^^^ :: - { - "args": { - "status": "open", - "username": "ryanlerch" - }, - "requests": [ + { - "assignee": null, - "branch": "master", - "branch_from": "master", - "closed_at": null, - "closed_by": null, - "comments": [], - "commit_start": "3973fae98fc485783ca14f5c3612d85832185065", - "commit_stop": "3973fae98fc485783ca14f5c3612d85832185065", - "date_created": "1510227832", - "id": 2, - "initial_comment": null, - "last_updated": "1510227833", - "project": { - "access_groups": { - "admin": [], - "commit": [], - "ticket": [] - }, - "access_users": { - "admin": [], - "commit": [], - "owner": [ - "ryanlerch" - ], - "ticket": [] - }, - "close_status": [], - "custom_keys": [], - "date_created": "1510227638", - "date_modified": "1510227638", - "description": "this is a quick project", - "fullname": "aquickproject", - "id": 1, - "milestones": {}, - "name": "aquickproject", - "namespace": null, - "parent": null, - "priorities": {}, - "tags": [], - "url_path": "aquickproject", - "user": { - "fullname": "ryanlerch", - "name": "ryanlerch" - } - }, - "remote_git": null, - "repo_from": { - "access_groups": { - "admin": [], - "commit": [], - "ticket": [] - }, - "access_users": { - "admin": [], - "commit": [], - "owner": [ - "dudemcpants" - ], - "ticket": [] - }, - "close_status": [], - "custom_keys": [], - "date_created": "1510227729", - "date_modified": "1510227729", - "description": "this is a quick project", - "fullname": "forks/dudemcpants/aquickproject", - "id": 2, - "milestones": {}, - "name": "aquickproject", - "namespace": null, - "parent": { - "access_groups": { - "admin": [], - "commit": [], - "ticket": [] - }, - "access_users": { - "admin": [], - "commit": [], - "owner": [ - "ryanlerch" - ], - "ticket": [] - }, - "close_status": [], - "custom_keys": [], - "date_created": "1510227638", - "date_modified": "1510227638", - "description": "this is a quick project", - "fullname": "aquickproject", - "id": 1, - "milestones": {}, - "name": "aquickproject", - "namespace": null, - "parent": null, - "priorities": {}, - "tags": [], - "url_path": "aquickproject", - "user": { - "fullname": "ryanlerch", - "name": "ryanlerch" - } - }, - "priorities": {}, - "tags": [], - "url_path": "fork/dudemcpants/aquickproject", - "user": { - "fullname": "Dude McPants", - "name": "dudemcpants" + "args": { + "status": "open", + "username": "ryanlerch", + "page": 1, + }, + "requests": [ + { + "assignee": null, + "branch": "master", + "branch_from": "master", + "closed_at": null, + "closed_by": null, + "comments": [], + "commit_start": "3973fae98fc485783ca14f5c3612d85832185065", + "commit_stop": "3973fae98fc485783ca14f5c3612d85832185065", + "date_created": "1510227832", + "id": 2, + "initial_comment": null, + "last_updated": "1510227833", + "project": { + "access_groups": { + "admin": [], + "commit": [], + "ticket": [] + }, + "access_users": { + "admin": [], + "commit": [], + "owner": [ + "ryanlerch" + ], + "ticket": [] + }, + "close_status": [], + "custom_keys": [], + "date_created": "1510227638", + "date_modified": "1510227638", + "description": "this is a quick project", + "fullname": "aquickproject", + "id": 1, + "milestones": {}, + "name": "aquickproject", + "namespace": null, + "parent": null, + "priorities": {}, + "tags": [], + "url_path": "aquickproject", + "user": { + "fullname": "ryanlerch", + "name": "ryanlerch" + } + }, + "remote_git": null, + "repo_from": { + "access_groups": { + "admin": [], + "commit": [], + "ticket": [] + }, + "access_users": { + "admin": [], + "commit": [], + "owner": [ + "dudemcpants" + ], + "ticket": [] + }, + "close_status": [], + "custom_keys": [], + "date_created": "1510227729", + "date_modified": "1510227729", + "description": "this is a quick project", + "fullname": "forks/dudemcpants/aquickproject", + "id": 2, + "milestones": {}, + "name": "aquickproject", + "namespace": null, + "parent": { + "access_groups": { + "admin": [], + "commit": [], + "ticket": [] + }, + "access_users": { + "admin": [], + "commit": [], + "owner": [ + "ryanlerch" + ], + "ticket": [] + }, + "close_status": [], + "custom_keys": [], + "date_created": "1510227638", + "date_modified": "1510227638", + "description": "this is a quick project", + "fullname": "aquickproject", + "id": 1, + "milestones": {}, + "name": "aquickproject", + "namespace": null, + "parent": null, + "priorities": {}, + "tags": [], + "url_path": "aquickproject", + "user": { + "fullname": "ryanlerch", + "name": "ryanlerch" + } + }, + "priorities": {}, + "tags": [], + "url_path": "fork/dudemcpants/aquickproject", + "user": { + "fullname": "Dude McPants", + "name": "dudemcpants" + } + }, + "status": "Open", + "title": "Update README.md", + "uid": "819e0b1c449e414fa291c914f28d73ec", + "updated_on": "1510227832", + "user": { + "fullname": "Dude McPants", + "name": "dudemcpants" + } } - }, - "status": "Open", - "title": "Update README.md", - "uid": "819e0b1c449e414fa291c914f28d73ec", - "updated_on": "1510227832", - "user": { - "fullname": "Dude McPants", - "name": "dudemcpants" - } + ], + "total_requests": 1 } - ], - "total_requests": 1 - } """ status = flask.request.args.get('status', 'open') diff --git a/tests/test_pagure_flask_api_user.py b/tests/test_pagure_flask_api_user.py index 75fd77b..c38416f 100644 --- a/tests/test_pagure_flask_api_user.py +++ b/tests/test_pagure_flask_api_user.py @@ -496,7 +496,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): user='foo', requestfolder=None, ) - + repo = pagure.get_authorized_project(self.session, 'test2') forked_repo = pagure.get_authorized_project(self.session, 'test2') pagure.lib.new_pull_request( @@ -524,7 +524,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): status='Closed', requestfolder=None, ) - + repo = pagure.get_authorized_project(self.session, 'test2') forked_repo = pagure.get_authorized_project(self.session, 'test2') pagure.lib.new_pull_request( @@ -553,7 +553,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): status='Merged', requestfolder=None, ) - + repo = pagure.get_authorized_project(self.session, 'test2') forked_repo = pagure.get_authorized_project(self.session, 'test2') pagure.lib.new_pull_request( @@ -676,6 +676,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): self.assertEqual(data['requests'][0]['title'], "open pullrequest by user pingou on repo test2") self.assertEqual(data['requests'][1]['title'], "open pullrequest by user pingou on repo test") self.assertEqual(data['args']['status'], "open") + self.assertEqual(data['args']['page'], 1) # Next test with the status parameter set to `open`. output = self.app.get( @@ -691,6 +692,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): self.assertEqual(data['requests'][0]['title'], "open pullrequest by user pingou on repo test2") self.assertEqual(data['requests'][1]['title'], "open pullrequest by user pingou on repo test") self.assertEqual(data['args']['status'], "open") + self.assertEqual(data['args']['page'], 1) # Next test with the status parameter set to `closed`. output = self.app.get( @@ -706,6 +708,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): self.assertEqual(data['requests'][0]['title'], "closed pullrequest by user pingou on repo test2") self.assertEqual(data['requests'][1]['title'], "closed pullrequest by user pingou on repo test") self.assertEqual(data['args']['status'], "closed") + self.assertEqual(data['args']['page'], 1) # Next test with the status parameter set to `merged`. output = self.app.get( @@ -721,6 +724,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): self.assertEqual(data['requests'][0]['title'], "merged pullrequest by user pingou on repo test2") self.assertEqual(data['requests'][1]['title'], "merged pullrequest by user pingou on repo test") self.assertEqual(data['args']['status'], "merged") + self.assertEqual(data['args']['page'], 1) # Finally, test with the status parameter set to `all`. output = self.app.get( @@ -742,12 +746,13 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): self.assertEqual(data['requests'][4]['status'], "Open") self.assertEqual(data['requests'][5]['status'], "Open") self.assertEqual(data['requests'][0]['title'], "merged pullrequest by user pingou on repo test2") - self.assertEqual(data['requests'][1]['title'], "merged pullrequest by user pingou on repo test") + self.assertEqual(data['requests'][1]['title'], "merged pullrequest by user pingou on repo test") self.assertEqual(data['requests'][2]['title'], "closed pullrequest by user pingou on repo test2") self.assertEqual(data['requests'][3]['title'], "closed pullrequest by user pingou on repo test") self.assertEqual(data['requests'][4]['title'], "open pullrequest by user pingou on repo test2") self.assertEqual(data['requests'][5]['title'], "open pullrequest by user pingou on repo test") self.assertEqual(data['args']['status'], "all") + self.assertEqual(data['args']['page'], 1) @patch('pagure.lib.notify.send_email') def test_api_view_user_requests_actionable(self, mockemail): @@ -768,6 +773,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): self.assertEqual(data['requests'][0]['title'], "open pullrequest by user foo on repo test2") self.assertEqual(data['requests'][1]['title'], "open pullrequest by user foo on repo test") self.assertEqual(data['args']['status'], "open") + self.assertEqual(data['args']['page'], 1) # Next test with the status parameter set to `open`. output = self.app.get( @@ -783,6 +789,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): self.assertEqual(data['requests'][0]['title'], "open pullrequest by user foo on repo test2") self.assertEqual(data['requests'][1]['title'], "open pullrequest by user foo on repo test") self.assertEqual(data['args']['status'], "open") + self.assertEqual(data['args']['page'], 1) # Next test with the status parameter set to `closed`. output = self.app.get( @@ -798,6 +805,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): self.assertEqual(data['requests'][0]['title'], "closed pullrequest by user foo on repo test2") self.assertEqual(data['requests'][1]['title'], "closed pullrequest by user foo on repo test") self.assertEqual(data['args']['status'], "closed") + self.assertEqual(data['args']['page'], 1) # Next test with the status parameter set to `merged`. output = self.app.get( @@ -813,6 +821,7 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): self.assertEqual(data['requests'][0]['title'], "merged pullrequest by user foo on repo test2") self.assertEqual(data['requests'][1]['title'], "merged pullrequest by user foo on repo test") self.assertEqual(data['args']['status'], "merged") + self.assertEqual(data['args']['page'], 1) # Finally, test with the status parameter set to `all`. output = self.app.get( @@ -834,15 +843,14 @@ class PagureFlaskApiUsertestrequests(tests.Modeltests): self.assertEqual(data['requests'][4]['status'], "Open") self.assertEqual(data['requests'][5]['status'], "Open") self.assertEqual(data['requests'][0]['title'], "merged pullrequest by user foo on repo test2") - self.assertEqual(data['requests'][1]['title'], "merged pullrequest by user foo on repo test") + self.assertEqual(data['requests'][1]['title'], "merged pullrequest by user foo on repo test") self.assertEqual(data['requests'][2]['title'], "closed pullrequest by user foo on repo test2") self.assertEqual(data['requests'][3]['title'], "closed pullrequest by user foo on repo test") self.assertEqual(data['requests'][4]['title'], "open pullrequest by user foo on repo test2") self.assertEqual(data['requests'][5]['title'], "open pullrequest by user foo on repo test") self.assertEqual(data['args']['status'], "all") + self.assertEqual(data['args']['page'], 1) - - if __name__ == '__main__': unittest.main(verbosity=2)