Add failing test

Test that __eq__ for EmbeddedDocuments with LazyReferenceFields works as
expected.
This commit is contained in:
Eric Timmons 2019-10-16 09:49:40 -04:00
parent 280a73af3b
commit 50882e5bb0

View File

@ -3319,6 +3319,38 @@ class TestInstance(MongoDBTestCase):
f1.ref # Dereferences lazily f1.ref # Dereferences lazily
assert f1 == f2 assert f1 == f2
def test_embedded_document_equality_with_lazy_ref(self):
class Job(EmbeddedDocument):
boss = LazyReferenceField('Person')
class Person(Document):
job = EmbeddedDocumentField(Job)
Person.drop_collection()
boss = Person()
worker = Person(job=Job(boss=boss))
boss.save()
worker.save()
worker1 = Person.objects.get(id=worker.id)
# worker1.job should be equal to the job used originally to create the
# document.
self.assertEqual(worker1.job, worker.job)
# worker1.job should be equal to a newly created Job EmbeddedDocument
# using either the Boss object or his ID.
self.assertEqual(worker1.job, Job(boss=boss))
self.assertEqual(worker1.job, Job(boss=boss.id))
# The above equalities should also hold after worker1.job.boss has been
# fetch()ed.
worker1.job.boss.fetch()
self.assertEqual(worker1.job, worker.job)
self.assertEqual(worker1.job, Job(boss=boss))
self.assertEqual(worker1.job, Job(boss=boss.id))
def test_dbref_equality(self): def test_dbref_equality(self):
class Test2(Document): class Test2(Document):
name = StringField() name = StringField()