|
1 | 1 | import unittest |
2 | | -from mock import patch, Mock |
| 2 | +import requests_mock |
| 3 | +from nose.tools import eq_ |
| 4 | +from json import loads |
3 | 5 |
|
4 | 6 | from ziptastic import Ziptastic |
5 | 7 |
|
6 | | -compare_v3_json = ["""[{"city": "Owosso", "country": "US", |
| 8 | +compare_v3_json = """[{"city": "Owosso", "country": "US", |
7 | 9 | "county": "Shiawassee", "state": "Michigan", "state_short": "MI", |
8 | | - "postal_code": "48867"}]"""] |
| 10 | + "postal_code": "48867"}]""" |
9 | 11 |
|
10 | | -compare_v2_json = ["""{"city": "Owosso", "country": "US", |
| 12 | +compare_v2_json = """{"city": "Owosso", "country": "US", |
11 | 13 | "county": "Shiawassee", "state": "Michigan", "state_short": "MI", |
12 | | - "postal_code": "48867"}"""] |
| 14 | + "postal_code": "48867"}""" |
13 | 15 |
|
14 | 16 |
|
15 | 17 | class TestZiptasticLib(unittest.TestCase): |
16 | | - def setUp(self): |
17 | | - self.patcher = patch('urllib2.urlopen') |
18 | | - self.urllib_mock = self.patcher.start() |
19 | | - |
20 | | - self.urllib2_v3_mock = Mock() |
21 | | - self.urllib2_v3_mock.read.side_effect = compare_v3_json |
22 | | - self.urllib_mock.return_value = self.urllib2_v3_mock |
23 | | - |
24 | | - def setUpV3(self): |
25 | | - self.urllib_mock.stop() |
26 | | - self.urllib_mock = self.patcher.start() |
27 | | - self.urllib2_v2_mock = Mock() |
28 | | - self.urllib2_v2_mock.read.side_effect = compare_v2_json |
29 | | - self.urllib_mock.return_value = self.urllib2_v2_mock |
30 | | - |
31 | | - def tearDown(self): |
32 | | - self.urllib_mock.stop() |
33 | | - |
34 | | - def test_get_from_v3_postal_code(self): |
| 18 | + @requests_mock.mock() |
| 19 | + def test_get_from_v3_postal_code(self, m): |
| 20 | + url = 'https://zip.getziptastic.com/v3/US/48867' |
| 21 | + m.get(url, text=compare_v3_json) |
35 | 22 | postal_code = '48867' |
36 | 23 | Ziptastic.api_key = 'abc123' |
37 | | - result = Ziptastic.get_from_postal_code(postal_code) |
38 | | - |
39 | | - self.assertIn('postal_code', result[0]) |
40 | | - self.assertEqual('https://zip.getziptastic.com/v3/US/48867', |
41 | | - self.urllib_mock.call_args[0][0].get_full_url()) |
| 24 | + ziptastic = Ziptastic('abc123') |
| 25 | + result = ziptastic.get_from_postal_code(postal_code) |
42 | 26 |
|
43 | | - def test_get_from_v2_postal_code(self): |
44 | | - self.setUpV3() |
| 27 | + req = m.request_history[0] |
| 28 | + eq_(url, req.url) |
| 29 | + eq_(loads(compare_v3_json), result) |
45 | 30 |
|
| 31 | + @requests_mock.mock() |
| 32 | + def test_get_from_v2_postal_code(self, m): |
| 33 | + url = 'https://zip.getziptastic.com/v2/US/48867' |
| 34 | + m.get(url, text=compare_v2_json) |
46 | 35 | postal_code = '48867' |
47 | | - result = Ziptastic.get_from_postal_code(postal_code) |
| 36 | + ziptastic = Ziptastic('') |
| 37 | + result = ziptastic.get_from_postal_code(postal_code) |
48 | 38 |
|
49 | | - self.assertIn('postal_code', result) |
50 | | - self.assertEqual('https://zip.getziptastic.com/v2/US/48867', |
51 | | - self.urllib_mock.call_args[0][0].get_full_url()) |
| 39 | + req = m.request_history[0] |
| 40 | + eq_(url, req.url) |
| 41 | + eq_(loads(compare_v2_json), result) |
52 | 42 |
|
53 | 43 | def test_build_url(self): |
54 | 44 | version = 'v42' |
55 | 45 | endpoint = 'test.endpoint' |
56 | | - correct_url = 'https://test.endpoint/v42/' |
57 | | - self.assertEquals(correct_url, Ziptastic.build_url(endpoint, |
58 | | - version=version)) |
59 | | - |
60 | | - def test_object_is_returned(self): |
61 | | - result = Ziptastic.get_from_postal_code('48867') |
62 | | - self.assertTrue(type(result), 'object') |
| 46 | + correct_url = 'https://test.endpoint/v42' |
| 47 | + eq_(correct_url, Ziptastic.build_url(endpoint, version=version)) |
0 commit comments