Add failing test
Test that __eq__ for EmbeddedDocuments with LazyReferenceFields works as expected.
This commit is contained in:
		| @@ -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() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user