| @@ -1,11 +1,23 @@ | |||||||
| import unittest | import unittest | ||||||
| from datetime import datetime | from datetime import datetime | ||||||
| import pymongo | import pymongo | ||||||
|  | import pickle | ||||||
|  |  | ||||||
| from mongoengine import * | from mongoengine import * | ||||||
|  | from mongoengine.base import BaseField | ||||||
| from mongoengine.connection import _get_db | from mongoengine.connection import _get_db | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PickleEmbedded(EmbeddedDocument): | ||||||
|  |     date = DateTimeField(default=datetime.now) | ||||||
|  |  | ||||||
|  | class PickleTest(Document): | ||||||
|  |     number = IntField() | ||||||
|  |     string = StringField() | ||||||
|  |     embedded = EmbeddedDocumentField(PickleEmbedded) | ||||||
|  |     lists = ListField(StringField()) | ||||||
|  |  | ||||||
|  |  | ||||||
| class DocumentTest(unittest.TestCase): | class DocumentTest(unittest.TestCase): | ||||||
|  |  | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
| @@ -869,6 +881,23 @@ class DocumentTest(unittest.TestCase): | |||||||
|  |  | ||||||
|         self.assertTrue(u1 in all_user_set ) |         self.assertTrue(u1 in all_user_set ) | ||||||
|  |  | ||||||
|  |     def test_picklable(self): | ||||||
|  |  | ||||||
|  |         pickle_doc = PickleTest(number=1, string="OH HAI", lists=['1', '2']) | ||||||
|  |         pickle_doc.embedded = PickleEmbedded() | ||||||
|  |         pickle_doc.save() | ||||||
|  |  | ||||||
|  |         pickled_doc = pickle.dumps(pickle_doc) | ||||||
|  |         resurrected = pickle.loads(pickled_doc) | ||||||
|  |  | ||||||
|  |         self.assertEquals(resurrected, pickle_doc) | ||||||
|  |  | ||||||
|  |         resurrected.string = "Working" | ||||||
|  |         resurrected.save() | ||||||
|  |  | ||||||
|  |         pickle_doc.reload() | ||||||
|  |         self.assertEquals(resurrected, pickle_doc) | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|     unittest.main() |     unittest.main() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user