Added a failing test when using pickle with signal hooks

This commit is contained in:
Léo S 2013-05-13 13:14:15 +02:00
parent b16eabd2b6
commit 0efb90deb6
2 changed files with 27 additions and 1 deletions

View File

@ -9,7 +9,7 @@ import unittest
import uuid
from datetime import datetime
from tests.fixtures import PickleEmbedded, PickleTest
from tests.fixtures import PickleEmbedded, PickleTest, PickleSignalsTest
from mongoengine import *
from mongoengine.errors import (NotRegistered, InvalidDocumentError,
@ -1730,6 +1730,12 @@ class InstanceTest(unittest.TestCase):
self.assertEqual(pickle_doc.string, "Two")
self.assertEqual(pickle_doc.lists, ["1", "2", "3"])
def test_picklable_on_signals(self):
pickle_doc = PickleSignalsTest(number=1, string="One", lists=['1', '2'])
pickle_doc.embedded = PickleEmbedded()
pickle_doc.save()
pickle_doc.delete()
def test_throw_invalid_document_error(self):
# test handles people trying to upsert

View File

@ -1,6 +1,8 @@
import pickle
from datetime import datetime
from mongoengine import *
from mongoengine import signals
class PickleEmbedded(EmbeddedDocument):
@ -15,6 +17,24 @@ class PickleTest(Document):
photo = FileField()
class PickleSignalsTest(Document):
number = IntField()
string = StringField(choices=(('One', '1'), ('Two', '2')))
embedded = EmbeddedDocumentField(PickleEmbedded)
lists = ListField(StringField())
@classmethod
def post_save(self, sender, document, created, **kwargs):
pickled = pickle.dumps(document)
@classmethod
def post_delete(self, sender, document, **kwargs):
pickled = pickle.dumps(document)
signals.post_save.connect(PickleSignalsTest.post_save, sender=PickleSignalsTest)
signals.post_delete.connect(PickleSignalsTest.post_delete, sender=PickleSignalsTest)
class Mixin(object):
name = StringField()