diff options
author | Gauvain Pocentek <gauvain@pocentek.net> | 2015-08-21 12:33:12 +0200 |
---|---|---|
committer | Gauvain Pocentek <gauvain@pocentek.net> | 2015-08-21 12:33:12 +0200 |
commit | 24d5035558dec227d2a497d7bf5be3bbaafc0c00 (patch) | |
tree | 93f8f4334e5a9faa330daec11e35b1c951380a9a /gitlab/tests/test_gitlab.py | |
parent | adbe0a4391f1e3b4d615ef7966dfa66e75b9a6fa (diff) | |
parent | 719526dc8b0fb7d577f0a5ffa80d8f0ca31a95c6 (diff) | |
download | gitlab-24d5035558dec227d2a497d7bf5be3bbaafc0c00.tar.gz |
Merge pull request #64 from jantman/issues/63
python-gitlab Issue #63 - implement pagination for list()
Diffstat (limited to 'gitlab/tests/test_gitlab.py')
-rw-r--r-- | gitlab/tests/test_gitlab.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/gitlab/tests/test_gitlab.py b/gitlab/tests/test_gitlab.py index f84bf86..5530843 100644 --- a/gitlab/tests/test_gitlab.py +++ b/gitlab/tests/test_gitlab.py @@ -22,6 +22,7 @@ try: import unittest except ImportError: import unittest2 as unittest +import json from httmock import HTTMock # noqa from httmock import response # noqa @@ -178,6 +179,56 @@ class TestGitLabMethods(unittest.TestCase): self.assertEqual(data.project_id, 1) self.assertEqual(data.ref, "a") + def test_list_next_link(self): + @urlmatch(scheme="http", netloc="localhost", + path='/api/v3/projects/1/repository/branches', method="get", + query=r'per_page=1') + def resp_one(url, request): + """ + First request: + http://localhost/api/v3/projects/1/repository/branches?per_page=1 + """ + headers = { + 'content-type': 'application/json', + 'link': '<http://localhost/api/v3/projects/1/repository/branc' \ + 'hes?page=2&per_page=0>; rel="next", <http://localhost/api/v3' \ + '/projects/1/repository/branches?page=2&per_page=0>; rel="las' \ + 't", <http://localhost/api/v3/projects/1/repository/branches?' \ + 'page=1&per_page=0>; rel="first"' + } + content = ('[{"branch_name": "otherbranch", ' + '"project_id": 1, "ref": "b"}]').encode("utf-8") + resp = response(200, content, headers, None, 5, request) + return resp + + @urlmatch(scheme="http", netloc="localhost", + path='/api/v3/projects/1/repository/branches', method="get", + query=r'.*page=2.*') + def resp_two(url, request): + headers = { + 'content-type': 'application/json', + 'link': '<http://localhost/api/v3/projects/1/repository/branc' \ + 'hes?page=1&per_page=0>; rel="prev", <http://localhost/api/v3' \ + '/projects/1/repository/branches?page=2&per_page=0>; rel="las' \ + 't", <http://localhost/api/v3/projects/1/repository/branches?' \ + 'page=1&per_page=0>; rel="first"' + } + content = ('[{"branch_name": "testbranch", ' + '"project_id": 1, "ref": "a"}]').encode("utf-8") + resp = response(200, content, headers, None, 5, request) + return resp + + with HTTMock(resp_one, resp_two): + data = self.gl.list(ProjectBranch, project_id=1, + per_page=1) + self.assertEqual(data[1].branch_name, "testbranch") + self.assertEqual(data[1].project_id, 1) + self.assertEqual(data[1].ref, "a") + self.assertEqual(data[0].branch_name, "otherbranch") + self.assertEqual(data[0].project_id, 1) + self.assertEqual(data[0].ref, "b") + self.assertEqual(len(data), 2) + def test_list_401(self): @urlmatch(scheme="http", netloc="localhost", path="/api/v3/projects/1/repository/branches", method="get") |