Browse Source

Fix the API documentation page

Fix the layout of the documentation for the endpoints listing the user's
PR (filled or actionable).

Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
Pierre-Yves Chibon 6 years ago
parent
commit
65d34adbcb
2 changed files with 282 additions and 269 deletions
  1. 267 262
      pagure/api/user.py
  2. 15 7
      tests/test_pagure_flask_api_user.py

+ 267 - 262
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')

+ 15 - 7
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)