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__':