Skip to content

Commit d7f3df6

Browse files
author
Teun Zengerink
committed
Increased coverage to 78%
1 parent d313043 commit d7f3df6

3 files changed

Lines changed: 34 additions & 5 deletions

File tree

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ requests==2.11.1
55
sh==1.11
66
six==1.10.0
77
urllib3==1.17
8+
mock==2.0.0

tests.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
"""Unit tests for the Usabilla API."""
2-
31
import sys
42
import unittest
53
import usabilla as ub
64

5+
from mock import Mock
76
from unittest import TestCase, main as unittest_main
87

98

@@ -96,6 +95,37 @@ def test_check_resource_validity(self):
9695
self.client.check_resource_validity('live', 'websites', 'nonexisting')
9796
self.assertEqual(self.client.check_resource_validity('live', 'websites', 'button'), '/live/websites/button')
9897

98+
def test_handle_id(self):
99+
url = '/live/websites/button/:id/feedback'
100+
with self.assertRaises(ub.GeneralError):
101+
self.client.handle_id(url, '')
102+
self.assertEqual(self.client.handle_id(url, '*'), '/live/websites/button/%2A/feedback')
103+
self.assertEqual(self.client.handle_id(url, 42), '/live/websites/button/42/feedback')
104+
105+
def test_item_iterator(self):
106+
items = ['one', 'two', 'three', 'four']
107+
has_more = {'hasMore': True, 'items': items[:2], 'lastTimestamp': 1400000000001}
108+
no_more = {'hasMore': False, 'items': items[2:], 'lastTimestamp': 1400000000002}
109+
self.client.set_query_parameters = Mock()
110+
self.client.send_signed_request = Mock(side_effect=[has_more, no_more])
111+
index = 0
112+
for item in self.client.item_iterator('/some/url'):
113+
self.assertEqual(item, items[index])
114+
index += 1
115+
self.client.set_query_parameters.assert_called_with({'since': 1400000000002})
116+
self.assertEqual(self.client.send_signed_request.call_count, 2)
117+
self.client.send_signed_request.side_effect = ub.GeneralError('mocked', 'error')
118+
for item in self.client.item_iterator('/some/url'):
119+
raise ub.GeneralError('should not', 'come here')
120+
121+
def test_get_resource(self):
122+
self.client.item_iterator = Mock()
123+
self.client.send_signed_request = Mock()
124+
self.client.get_resource('live', 'websites', 'feedback', 42)
125+
self.client.send_signed_request.assert_called_with('/live/websites/button/42/feedback')
126+
self.client.get_resource('live', 'websites', 'button', None, True)
127+
self.client.item_iterator.assert_called_with('/live/websites/button')
128+
99129

100130
if __name__ == '__main__':
101131
unittest_main()

usabilla.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
"""Usabilla API Python Client."""
2-
31
# Copyright (c) 2016 Usabilla.com
42
#
53
# Permission is hereby granted, free of charge, to any person obtaining a
@@ -271,7 +269,7 @@ def check_resource_validity(self, scope, product, resource):
271269

272270
return url
273271

274-
def handle_id(self,url,resource_id):
272+
def handle_id(self, url, resource_id):
275273
"""Replaces the :id pattern in the url
276274
277275
:param url: A `string` that specifies the resource request url

0 commit comments

Comments
 (0)