Skip to content

Commit e1f11b4

Browse files
committed
Increase test coverage. Reorder imports so that Python 3 is first.
1 parent 131cfb3 commit e1f11b4

File tree

3 files changed

+96
-24
lines changed

3 files changed

+96
-24
lines changed

embedly/client.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
import re
99
import httplib2
1010
import json
11-
try:
12-
from urllib import quote, urlencode
13-
except ImportError:
14-
# py3k
15-
from urllib.parse import quote, urlencode
11+
12+
try: # pragma: no cover
13+
from urllib.parse import quote, urlencode # pragma: no cover
14+
except ImportError: # Python 2 # pragma: no cover
15+
from urllib import quote, urlencode # pragma: no cover
1616

1717
from .models import Url
1818

embedly/models.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from __future__ import unicode_literals
22

3-
try:
4-
from UserDict import IterableUserDict
5-
except ImportError:
6-
from collections import UserDict as IterableUserDict
3+
try: # pragma: no cover
4+
from collections import UserDict as IterableUserDict # pragma: no cover
5+
except ImportError: # Python 2 # pragma: no cover
6+
from UserDict import IterableUserDict # pragma: no cover
7+
78

89
class Url(IterableUserDict, object):
910
"""

embedly/tests.py

Lines changed: 86 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
from __future__ import unicode_literals
2+
import re
23
import json
34

4-
try:
5-
import unittest2 as unittest # Python 2.6
6-
except ImportError:
7-
import unittest
5+
try: # pragma: no cover
6+
import unittest2 as unittest # Python 2.6 # pragma: no cover
7+
except ImportError: # pragma: no cover
8+
import unittest # pragma: no cover
89

910
from embedly.client import Embedly
1011
from embedly.models import Url
1112

1213

13-
class EmbedlyTestCase(unittest.TestCase):
14-
def setUp(self):
15-
self.key = 'internal'
16-
14+
class UrlTestCase(unittest.TestCase):
1715
def test_model(self):
1816
data = {
1917
'provider_url': 'http://www.google.com/',
@@ -75,6 +73,24 @@ def test_model_data_can_serialize(self):
7573
unserialzed = json.loads(json.dumps(obj.data))
7674
self.assertDictEqual(obj.data, unserialzed)
7775

76+
77+
class EmbedlyTestCase(unittest.TestCase):
78+
def setUp(self):
79+
self.key = 'internal'
80+
81+
def test_requires_api_key(self):
82+
with self.assertRaises(ValueError):
83+
Embedly()._get(1, "test", "http://fake")
84+
85+
def test_requires_url(self):
86+
with self.assertRaises(ValueError):
87+
Embedly(self.key)._get(1, "test", None)
88+
89+
def test_exception_on_too_many_urls(self):
90+
urls = ['http://embed.ly'] * 21
91+
with self.assertRaises(ValueError):
92+
Embedly(self.key)._get(1, "test", urls)
93+
7894
def test_provider(self):
7995
http = Embedly(self.key)
8096

@@ -139,13 +155,68 @@ def test_multi_errors(self):
139155
self.assertEqual(objs[0]['type'], 'photo')
140156
self.assertEqual(objs[1]['type'], 'error')
141157

142-
def test_exception_on_too_many_urls(self):
143-
http = Embedly(self.key)
144-
urls = ['http://embed.ly'] * 21
158+
def test_raw_content_in_request(self):
159+
client = Embedly(self.key)
160+
response = client.oembed(
161+
'http://www.scribd.com/doc/13994900/Easter',
162+
raw=True)
145163

146-
with self.assertRaises(ValueError):
147-
http.oembed(urls)
164+
self.assertEqual(response['raw'], response.data['raw'])
165+
166+
parsed = json.loads(response['raw'].decode('utf-8'))
167+
self.assertEqual(response['type'], parsed['type'])
168+
169+
def test_regex_url_matches(self):
170+
regex = [
171+
'http://.*youtube\\.com/watch.*',
172+
'http://www\\.vimeo\\.com/.*']
173+
client = Embedly(self.key)
174+
client._regex = re.compile('|'.join(regex))
175+
176+
self.assertTrue(
177+
client.is_supported('http://www.youtube.com/watch?v=Zk7dDekYej0'))
178+
self.assertTrue(
179+
client.is_supported('http://www.vimeo.com/18150336'))
180+
self.assertFalse(
181+
client.is_supported('http://vimeo.com/18150336'))
182+
self.assertFalse(
183+
client.is_supported('http://yfrog.com/h22eu4j'))
184+
185+
def test_services_can_be_manually_configured(self):
186+
client = Embedly(self.key)
187+
client.services = ['nothing', 'like', 'real', 'response', 'data']
188+
189+
self.assertTrue('nothing' in client.get_services())
190+
self.assertEqual(len(client.get_services()), 5)
191+
192+
def test_get_services_retrieves_data_and_builds_regex(self):
193+
client = Embedly(self.key)
194+
client.get_services()
195+
196+
self.assertGreater(len(client.services), 0)
197+
self.assertTrue(client.regex.match('http://yfrog.com/h22eu4j'))
198+
199+
def test_extract(self):
200+
client = Embedly(self.key)
201+
response = client.extract('http://vimeo.com/18150336')
202+
203+
self.assertEqual(response.method, 'extract')
204+
self.assertEqual(response['provider_name'], 'Vimeo')
205+
206+
def test_preview(self):
207+
client = Embedly(self.key)
208+
response = client.preview('http://vimeo.com/18150336')
209+
210+
self.assertEqual(response.method, 'preview')
211+
self.assertEqual(response['provider_name'], 'Vimeo')
212+
213+
def test_objectify(self):
214+
client = Embedly(self.key)
215+
response = client.objectify('http://vimeo.com/18150336')
216+
217+
self.assertEqual(response.method, 'objectify')
218+
self.assertEqual(response['provider_name'], 'Vimeo')
148219

149220

150-
if __name__ == '__main__':
151-
unittest.main()
221+
if __name__ == '__main__': # pragma: no cover
222+
unittest.main() # pragma: no cover

0 commit comments

Comments
 (0)