Beispiel #1
0
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)
Beispiel #2
0
 def setUp(self):
     self.model = self.ModelMock()
     self.cursor = ModelCursor(self.model.__class__)