class ResourceTest(unittest.TestCase): @classmethod def get_resource_cls(cls): return getattr(cls, 'resource_cls') @classmethod def is_user_owner(cls): return getattr(cls, 'user_owner', False) def setUp(self): self.ae = MockAppEngine() self.user = self.ae.get_current_user() self.db = MockAccess(user=self.user, add_owner=self.is_user_owner()) # set up mock Request and Response objects self.request = mock.MagicMock() self.response = mock.MagicMock() # Create a special SpyResource class that has all the same # functionality as the appropriate Resource for this test, but # has a fake 'dump' method which stores the last js_object dumped resource_cls = self.get_resource_cls() class SpyResource(resource_cls): def __init__(self, *args, **kwargs): super(SpyResource, self).__init__(*args, **kwargs) self.last_response = None def get_last_response(self): return self.last_response def dump(self, js_response): self.last_response = js_response # instantiate the SpyResource with fake Request/Response as well as # AppEngine and DbAccess self.resource = SpyResource( request=self.request, response=self.response, ae=self.ae, db=self.db, ) def tearDown(self): # reset the ID count for mock models Db.reset()