def test_to_dict_without_id(self): # with structure class Person(Model): collection_name = 'person_test' structure = { 'name': unicode, 'desc': 'dynamic', 'age': int, } Person.connect(Testing) Person.collection.remove({}) model = Person(name='John Doe', age=35, desc='no one', bla='ble') model.upsert() self.assertIn('_id', model._data) self.assertNotIn('_id', model.to_dict(with_id=False)) self.assertIn('_id', model.to_dict()) # without structure class NoStructPerson(Model): collection_name = 'person_test' new_model = NoStructPerson(model.to_dict()) self.assertIn('_id', new_model._data) self.assertNotIn('_id', new_model.to_dict(with_id=False)) self.assertIn('_id', new_model.to_dict())
def test_insert(self): model = self.ModelTest(a=1, b=2) model.upsert() self.assertEqual(self.ModelTest.collection.find().count(), 1) self.assertTrue(model._id) self.assertIn('_id', model._data.keys()) self.assertTrue(self.ModelTest.collection.find({'a': 1, 'b': 2}))
def test_update(self): model = self.ModelTest(a=1, b=2) model.upsert() retrieved_model = self.ModelTest.collection.find_one({'a': 1}) self.assertEqual(retrieved_model['b'], model.b) model.set(b=4) model.upsert() self.assertEqual(self.ModelTest.collection.find({'a': 1}).count(), 1) retrieved_model = self.ModelTest.collection.find_one({'a': 1}) self.assertEqual(retrieved_model['b'], 4) self.assertEqual(retrieved_model['_id'], model._id)
def test_partial_update(self): model = self.ModelTest(a=1, b=2, c=3) model.upsert() retrieved_doc = self.ModelTest.collection.find_one( {'a': 1, 'b': 2, 'c': 3}) _id = retrieved_doc['_id'] model = self.ModelTest({'_id': _id}) model.set(a=5) model.set(b=6) self.assertNotIn('c', model._data) model.upsert() retrieved_doc = self.ModelTest.collection.find_one({'_id': _id}) self.assertEqual(retrieved_doc, {'a': 5, 'b': 6, 'c': 3, '_id': _id})
def test_id_on_inserted_model(self): class Person(Model): collection_name = 'person_test' structure = { 'name': unicode, 'desc': 'dynamic', 'age': int, } Person.connect(Testing) Person.collection.remove({}) model = Person(name='John Doe', age=35, desc='no one', bla='ble') _id = model.upsert() self.assertTrue(model.get('_id')) self.assertEqual(model._id, _id) self.assertIn('_id', model.to_dict()) self.assertEqual(model.to_dict(), dict( name=u'John Doe', age=35, desc='no one', _id=_id ))