Mercurial > bzapi
changeset 19:2dc7c31d8174
refactored tests more
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Wed, 23 Dec 2009 21:45:55 -0800 |
parents | 83690d6db6c2 |
children | d9f82ab24604 |
files | test.py |
diffstat | 1 files changed, 52 insertions(+), 51 deletions(-) [+] |
line wrap: on
line diff
--- a/test.py Wed Dec 23 21:36:00 2009 -0800 +++ b/test.py Wed Dec 23 21:45:55 2009 -0800 @@ -6,43 +6,6 @@ import pymongo import bzapi -FAKE_CONFIG = {'product': {}} - -class FakeOpenUrl(object): - def __init__(self): - self._responses = {} - - def set(self, url, query_args, response): - if not isinstance(response, basestring): - response = json.dumps(response) - self._responses[url + json.dumps(query_args)] = response - - def __call__(self, url, headers, query_args=None): - response = self._responses[url + json.dumps(query_args)] - return StringIO.StringIO(response) - -class FakeRequest(object): - def __init__(self, url): - self.url = url - - def add_header(self, name, value): - pass - -class FakeUrllib2(object): - def __init__(self): - self._responses = {} - - def Request(self, url): - return FakeRequest(url) - - def set_url(self, url, response): - if not isinstance(response, basestring): - response = json.dumps(response) - self._responses[url] = response - - def urlopen(self, request): - return StringIO.StringIO(self._responses[request.url]) - connection = pymongo.Connection('localhost', 27017) testdb = connection.bzapi_testing_db @@ -56,8 +19,30 @@ self.assertEqual(str(date), '2009-12-23 20:42:59') class OpenUrlTests(unittest.TestCase): + class FakeUrllib2(object): + class FakeRequest(object): + def __init__(self, url): + self.url = url + + def add_header(self, name, value): + pass + + def __init__(self): + self._responses = {} + + def Request(self, url): + return self.FakeRequest(url) + + def set_url(self, url, response): + if not isinstance(response, basestring): + response = json.dumps(response) + self._responses[url] = response + + def urlopen(self, request): + return StringIO.StringIO(self._responses[request.url]) + def test_open_url_works_without_query_args(self): - urllib2 = FakeUrllib2() + urllib2 = self.FakeUrllib2() urllib2.set_url('http://foo/', 'boo') self.assertEqual( bzapi.open_url(url='http://foo/', @@ -67,7 +52,7 @@ ) def test_open_url_works_with_query_args(self): - urllib2 = FakeUrllib2() + urllib2 = self.FakeUrllib2() urllib2.set_url('http://foo/?blah=hi+there', 'meh') self.assertEqual( bzapi.open_url(url='http://foo/', @@ -97,12 +82,31 @@ search = bzapi.CachedSearch(None, testdb.bugs) class ApiTests(_MongoTestCase): + class FakeOpenUrl(object): + def __init__(self): + self._responses = {} + + def set(self, url, query_args, response): + if not isinstance(response, basestring): + response = json.dumps(response) + self._responses[url + json.dumps(query_args)] = response + + def __call__(self, url, headers, query_args=None): + response = self._responses[url + json.dumps(query_args)] + return StringIO.StringIO(response) + + _FAKE_CONFIG = {'product': {}} + _collections = ['api'] - def _get_basic_fake_api(self, config=FAKE_CONFIG, **kwargs): - opener = FakeOpenUrl() + def setUp(self): + _MongoTestCase.setUp(self) + self.config = copy.deepcopy(self._FAKE_CONFIG) + + def _get_basic_fake_api(self, **kwargs): + opener = self.FakeOpenUrl() opener.set('http://foo/latest/configuration', kwargs, - config) + self.config) api = bzapi.BugzillaApi('http://foo/latest', testdb.api, open_url=opener, **kwargs) return api @@ -117,9 +121,8 @@ api.get('/stuff') def test_bzapi_raises_err_on_bad_component(self): - config = copy.deepcopy(FAKE_CONFIG) - config['product']['Mozilla Labs'] = {'component': {'Jetpack': {}}} - api = self._get_basic_fake_api(config=config) + self.config['product']['Mozilla Labs'] = {'component': {'Jetpack': {}}} + api = self._get_basic_fake_api() self.assertRaises(ValueError, api.get, '/blah', @@ -134,9 +137,8 @@ product='nonexistent') def test_bzapi_validates_product_and_component(self): - config = copy.deepcopy(FAKE_CONFIG) - config['product']['Mozilla Labs'] = {'component': {'Jetpack': {}}} - api = self._get_basic_fake_api(config=config) + self.config['product']['Mozilla Labs'] = {'component': {'Jetpack': {}}} + api = self._get_basic_fake_api() api._open_url.set('http://foo/latest/stuff', {'product': 'Mozilla Labs', 'component': 'Jetpack'}, @@ -144,9 +146,8 @@ api.get('/stuff', product='Mozilla Labs', component='Jetpack') def test_bzapi_removes_dots_from_config(self): - config = copy.deepcopy(FAKE_CONFIG) - config['product']['addons.mozilla.org'] = {} - api = self._get_basic_fake_api(config=config) + self.config['product']['addons.mozilla.org'] = {} + api = self._get_basic_fake_api() self.assertTrue('addons_DOT_mozilla_DOT_org' in api.config['product']) if __name__ == '__main__':