Added test showing documents can be pickled

Refs #135
This commit is contained in:
Ross Lawley 2011-05-19 12:41:38 +01:00
parent efba9ef52a
commit da8a057ede

View File

@ -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()