Fix documentation regarding limitation with fields with underscore in their name in DynamicDocument
This commit is contained in:
		| @@ -1,16 +1,15 @@ | ||||
| import unittest | ||||
|  | ||||
| from mongoengine import * | ||||
| from mongoengine.connection import get_db | ||||
| from tests.utils import MongoDBTestCase | ||||
|  | ||||
| __all__ = ("DynamicTest", ) | ||||
| __all__ = ("TestDynamicDocument", ) | ||||
|  | ||||
|  | ||||
| class DynamicTest(unittest.TestCase): | ||||
| class TestDynamicDocument(MongoDBTestCase): | ||||
|  | ||||
|     def setUp(self): | ||||
|         connect(db='mongoenginetest') | ||||
|         self.db = get_db() | ||||
|         super(TestDynamicDocument, self).setUp() | ||||
|  | ||||
|         class Person(DynamicDocument): | ||||
|             name = StringField() | ||||
| @@ -98,6 +97,72 @@ class DynamicTest(unittest.TestCase): | ||||
|         self.assertEqual(len(p._data), 4) | ||||
|         self.assertEqual(sorted(p._data.keys()), ['_cls', 'age', 'id', 'name']) | ||||
|  | ||||
|     def test_fields_without_underscore(self): | ||||
|         """Ensure we can query dynamic fields""" | ||||
|         Person = self.Person | ||||
|  | ||||
|         p = self.Person(name='Dean') | ||||
|         p.save() | ||||
|  | ||||
|         raw_p = Person.objects.as_pymongo().get(id=p.id) | ||||
|         self.assertEqual( | ||||
|             raw_p, | ||||
|             { | ||||
|                 '_cls': u'Person', | ||||
|                 '_id': p.id, | ||||
|                 'name': u'Dean' | ||||
|              } | ||||
|         ) | ||||
|  | ||||
|         p.name = 'OldDean' | ||||
|         p.newattr = 'garbage' | ||||
|         p.save() | ||||
|         raw_p = Person.objects.as_pymongo().get(id=p.id) | ||||
|         self.assertEqual( | ||||
|             raw_p, | ||||
|             { | ||||
|                 '_cls': u'Person', | ||||
|                 '_id': p.id, | ||||
|                 'name': 'OldDean', | ||||
|                 'newattr': u'garbage' | ||||
|             } | ||||
|         ) | ||||
|  | ||||
|     def test_fields_containing_underscore(self): | ||||
|         """Ensure we can query dynamic fields""" | ||||
|         class WeirdPerson(DynamicDocument): | ||||
|             name = StringField() | ||||
|             _name = StringField() | ||||
|  | ||||
|         WeirdPerson.drop_collection() | ||||
|  | ||||
|         p = WeirdPerson(name='Dean', _name='Dean') | ||||
|         p.save() | ||||
|  | ||||
|         raw_p = WeirdPerson.objects.as_pymongo().get(id=p.id) | ||||
|         self.assertEqual( | ||||
|             raw_p, | ||||
|             { | ||||
|                 '_id': p.id, | ||||
|                 '_name': u'Dean', | ||||
|                 'name': u'Dean' | ||||
|             } | ||||
|         ) | ||||
|  | ||||
|         p.name = 'OldDean' | ||||
|         p._name = 'NewDean' | ||||
|         p._newattr1 = 'garbage'    # Unknown fields won't be added | ||||
|         p.save() | ||||
|         raw_p = WeirdPerson.objects.as_pymongo().get(id=p.id) | ||||
|         self.assertEqual( | ||||
|             raw_p, | ||||
|             { | ||||
|                 '_id': p.id, | ||||
|                 '_name': u'NewDean', | ||||
|                 'name': u'OldDean', | ||||
|             } | ||||
|         ) | ||||
|  | ||||
|     def test_dynamic_document_queries(self): | ||||
|         """Ensure we can query dynamic fields""" | ||||
|         p = self.Person() | ||||
| @@ -369,5 +434,6 @@ class DynamicTest(unittest.TestCase): | ||||
|         person.save() | ||||
|         self.assertEqual(Person.objects.first().age, 35) | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     unittest.main() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user