Skip to content

Commit 4de59b7

Browse files
committed
Tests - add mocking to test get_services()
This may be overkill but it does increase test coverage and if we develop more fine-grained tests for `_get()` in the future, mock will help.
1 parent e1f11b4 commit 4de59b7

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

embedly/tests.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
except ImportError: # pragma: no cover
88
import unittest # pragma: no cover
99

10+
try: # pragma: no cover
11+
from unittest import mock # pragma: no cover
12+
except ImportError: # Python < 3.3 # pragma: no cover
13+
import mock # pragma: no cover
14+
1015
from embedly.client import Embedly
1116
from embedly.models import Url
1217

@@ -182,13 +187,31 @@ def test_regex_url_matches(self):
182187
self.assertFalse(
183188
client.is_supported('http://yfrog.com/h22eu4j'))
184189

190+
@mock.patch.object(Embedly, 'get_services')
191+
def test_regex_access_triggers_get_services(self, mock_services):
192+
client = Embedly(self.key)
193+
client.regex
194+
195+
self.assertTrue(mock_services.called)
196+
self.assertIsNone(client._regex)
197+
185198
def test_services_can_be_manually_configured(self):
186199
client = Embedly(self.key)
187200
client.services = ['nothing', 'like', 'real', 'response', 'data']
188201

189202
self.assertTrue('nothing' in client.get_services())
190203
self.assertEqual(len(client.get_services()), 5)
191204

205+
@mock.patch('httplib2.Http', autospec=True)
206+
def test_services_remains_empty_on_failed_http(self, MockHttp):
207+
MockHttp.return_value.request.return_value = ({'status': 500}, "")
208+
209+
client = Embedly(self.key)
210+
client.get_services()
211+
212+
self.assertFalse(client.services)
213+
self.assertTrue(MockHttp.return_value.request.called)
214+
192215
def test_get_services_retrieves_data_and_builds_regex(self):
193216
client = Embedly(self.key)
194217
client.get_services()

setup.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
if sys.version_info[:2] < (2, 7):
1010
tests_require.append('unittest2')
1111

12+
if sys.version_info[:2] < (3, 3):
13+
tests_require.append('mock')
14+
1215

1316
def get_version():
1417
with open(os.path.join('embedly', '__init__.py')) as f:

tox.ini

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,12 @@ envlist = py26,py27,py32,py33
55
commands=python embedly/tests.py
66

77
[testenv:py26]
8-
deps = unittest2
8+
deps =
9+
mock
10+
unittest2
11+
12+
[testenv:py27]
13+
deps = mock
14+
15+
[testenv:py32]
16+
deps = mock

0 commit comments

Comments
 (0)