Skip to content

Commit 01e5e4c

Browse files
authored
Fix page-size None bug (#219)
1 parent 10f2004 commit 01e5e4c

2 files changed

Lines changed: 52 additions & 2 deletions

File tree

alertaclient/api.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,9 @@ def __call__(self, r):
510510

511511
class HTTPClient:
512512

513+
DEFAULT_PAGE_NUMBER = 1
514+
DEFAULT_PAGE_SIZE = 50
515+
513516
def __init__(self, endpoint, key=None, secret=None, token=None, username=None, password=None, timeout=30.0, ssl_verify=True, headers=None, debug=False):
514517
self.endpoint = endpoint
515518
self.auth = None
@@ -542,9 +545,9 @@ def default_headers():
542545
def get(self, path, query=None, **kwargs):
543546
query = query or []
544547
if 'page' in kwargs:
545-
query.append(('page', kwargs['page']))
548+
query.append(('page', kwargs.get('page') or self.DEFAULT_PAGE_NUMBER))
546549
if 'page_size' in kwargs:
547-
query.append(('page-size', kwargs['page_size']))
550+
query.append(('page-size', kwargs.get('page_size') or self.DEFAULT_PAGE_SIZE))
548551

549552
url = self.endpoint + path + '?' + urlencode(query, doseq=True)
550553
try:

tests/unit/test_http_client.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import unittest
2+
3+
import requests_mock
4+
5+
from alertaclient.api import HTTPClient
6+
7+
8+
class HttpClientTestCase(unittest.TestCase):
9+
10+
def setUp(self):
11+
self.http = HTTPClient(endpoint='https://httpbin.org')
12+
13+
@requests_mock.mock()
14+
def test_query_string(self, m):
15+
16+
m.get('https://httpbin.org/get', text='{}')
17+
m.post('https://httpbin.org/post', text='{}')
18+
m.put('https://httpbin.org/put', text='{}')
19+
m.delete('https://httpbin.org/delete', text='{}')
20+
21+
self.http.get(path='/get', query=None)
22+
self.http.get(path='/get', query=(('foo', 'bar'), ('quxx', 'baz')))
23+
self.http.get(path='/get', query=None, page=None)
24+
self.http.get(path='/get', query=None, page=2, page_size=None)
25+
self.http.get(path='/get', query=None, page=None, page_size=None)
26+
self.http.get(path='/get', query=None, page=2, page_size=100)
27+
self.http.get(path='/get', query=None, page_size=20)
28+
self.http.get(path='/get', query=None, page=None, page_size=200)
29+
30+
history = m.request_history
31+
self.assertEqual(history[0].url, 'https://httpbin.org/get')
32+
self.assertEqual(history[1].url, 'https://httpbin.org/get?foo=bar&quxx=baz')
33+
self.assertEqual(history[2].url, 'https://httpbin.org/get?page=1')
34+
self.assertEqual(history[3].url, 'https://httpbin.org/get?page=2&page-size=50')
35+
self.assertEqual(history[4].url, 'https://httpbin.org/get?page=1&page-size=50')
36+
self.assertEqual(history[5].url, 'https://httpbin.org/get?page=2&page-size=100')
37+
self.assertEqual(history[6].url, 'https://httpbin.org/get?page-size=20')
38+
self.assertEqual(history[7].url, 'https://httpbin.org/get?page=1&page-size=200')
39+
40+
self.http.post(path='/post', data='{}')
41+
self.assertEqual(history[8].url, 'https://httpbin.org/post')
42+
43+
self.http.put(path='/put', data='{}')
44+
self.assertEqual(history[9].url, 'https://httpbin.org/put')
45+
46+
self.http.delete(path='/delete')
47+
self.assertEqual(history[10].url, 'https://httpbin.org/delete')

0 commit comments

Comments
 (0)