Added a failing test when using pickle with signal hooks
This commit is contained in:
parent
b16eabd2b6
commit
0efb90deb6
@ -9,7 +9,7 @@ import unittest
|
|||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from tests.fixtures import PickleEmbedded, PickleTest
|
from tests.fixtures import PickleEmbedded, PickleTest, PickleSignalsTest
|
||||||
|
|
||||||
from mongoengine import *
|
from mongoengine import *
|
||||||
from mongoengine.errors import (NotRegistered, InvalidDocumentError,
|
from mongoengine.errors import (NotRegistered, InvalidDocumentError,
|
||||||
@ -1730,6 +1730,12 @@ class InstanceTest(unittest.TestCase):
|
|||||||
self.assertEqual(pickle_doc.string, "Two")
|
self.assertEqual(pickle_doc.string, "Two")
|
||||||
self.assertEqual(pickle_doc.lists, ["1", "2", "3"])
|
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):
|
def test_throw_invalid_document_error(self):
|
||||||
|
|
||||||
# test handles people trying to upsert
|
# test handles people trying to upsert
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
|
import pickle
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from mongoengine import *
|
from mongoengine import *
|
||||||
|
from mongoengine import signals
|
||||||
|
|
||||||
|
|
||||||
class PickleEmbedded(EmbeddedDocument):
|
class PickleEmbedded(EmbeddedDocument):
|
||||||
@ -15,6 +17,24 @@ class PickleTest(Document):
|
|||||||
photo = FileField()
|
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):
|
class Mixin(object):
|
||||||
name = StringField()
|
name = StringField()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user