class ModelCursorTests(unittest.TestCase): class ModelMock: def __init__(self, *a, **kw): if len(a) > 0 and isinstance(a[0], dict): self.obj = a[0] else: self.obj = None @classmethod def setUpClass(cls): cls.db = Testing.get_db() collection = cls.db.cursor_test cls.ModelMock.collection = collection def setUp(self): self.model = self.ModelMock() self.cursor = ModelCursor(self.model.__class__) def tearDown(self): self.db.drop_collection('cursor_test') def test_pymongo_cursor_wrapping(self): self.assertIsInstance(self.cursor.find().mongo_cursor, pymongo.cursor.Cursor) def test_cursor_next_returns_model_instance(self): self.model.collection.save({'name': 'model1'}) self.assertEqual(self.cursor.find().next().__class__, self.model.__class__) def test_iteration_returns_model_instance(self): dict1 = {'name': 'model1'} dict2 = {'name': 'model2'} self.model.collection.save(dict1) self.model.collection.save(dict2) for m in self.cursor.find(): self.assertIsInstance(m, self.ModelMock) def test_first_return_0_index_value_from_find(self): dict1 = {'name': 'model1'} dict2 = {'name': 'model2'} self.model.collection.save(dict1) self.model.collection.save(dict2) self.assertIsInstance(self.cursor.find().first(), self.ModelMock) self.assertEqual(self.cursor.find().first().obj['name'], dict1['name']) def test_find(self): model_dict = {'name': 'find test'} self.model.collection.save(model_dict) self.assertIsInstance( self.cursor.find({'name': 'find test'}).next(), self.model.__class__) self.assertEqual( self.cursor.find({'name': 'find test'}).first().obj['name'], model_dict['name']) def test_count(self): model_dict = {'name': 'find test'} self.model.collection.save(model_dict) self.assertEqual( self.cursor.find({'name': 'find test'}).count(), 1)
def setUp(self): self.model = self.ModelMock() self.cursor = ModelCursor(self.model.__class__)