def test_filtering(self): from repose.managers import Manager self.manager = Manager(filter=lambda u: u.id == 2) self.manager.contribute_api(self.api) self.manager.contribute_to_class(User) self.manager.contribute_to_class(User) user2 = USER_DATA.copy() user2['id'] = 2 self.api.add_response('GET', '/user', [USER_DATA, user2]) self.assertEqual(self.manager.count(), 1) self.assertEqual(len(self.manager.all()), 1)
class User(Resource): id = fields.Integer() name = fields.String() posts = fields.ManagedCollection(Post) profile = fields.Embedded(Profile) objects = Manager() with_posts = Manager(filter=lambda u: u.posts.count() > 0) class Meta: endpoint = '/user/{user_id}' endpoint_list = '/user'
def setup_managers(cls, resource, dct): """Setup the managers on a resource Pass a reference to the resource class to all attached managers, and create a default manager if none are explicitly defined """ has_custom_manager = False managers = [] for k, v in dct.items(): if isinstance(v, Manager): v.contribute_to_class(resource) has_custom_manager = True managers.append(v) # If we don't have a custom manager, then add the # default manager if not has_custom_manager: manager = Manager() manager.contribute_to_class(resource) resource.objects = manager managers.append(manager) resource._managers = managers
def setUp(self): from repose.managers import Manager super(ManagerTestCase, self).setUp() self.manager = Manager() self.manager.contribute_api(self.api) self.manager.contribute_to_class(User)
class ManagerTestCase(TestCase): def setUp(self): from repose.managers import Manager super(ManagerTestCase, self).setUp() self.manager = Manager() self.manager.contribute_api(self.api) self.manager.contribute_to_class(User) def test_get(self): self.api.add_response('GET', '/user/1', USER_DATA) user = self.manager.get(user_id=1) self.assertEqual(user.id, 1) self.assertEqual(user.name, 'Test User') def test_all(self): self.manager.contribute_to_class(User) self.api.add_response('GET', '/user', [USER_DATA]) users = self.manager.all() self.assertEqual(len(users), 1) self.assertEqual(users[0]['id'], 1) def test_count(self): self.manager.contribute_to_class(User) self.api.add_response('GET', '/user', [USER_DATA]) self.assertEqual(self.manager.count(), 1) def test_iter(self): self.manager.contribute_to_class(User) self.api.add_response('GET', '/user', [USER_DATA]) self.assertEqual(len([u for u in self.manager]), 1) def test_filtering(self): from repose.managers import Manager self.manager = Manager(filter=lambda u: u.id == 2) self.manager.contribute_api(self.api) self.manager.contribute_to_class(User) self.manager.contribute_to_class(User) user2 = USER_DATA.copy() user2['id'] = 2 self.api.add_response('GET', '/user', [USER_DATA, user2]) self.assertEqual(self.manager.count(), 1) self.assertEqual(len(self.manager.all()), 1)