Ensure you can handle circular references
(self)
| 362 | assert Post.objects.all()[0].user_lists == [[u1, u2], [u3]] |
| 363 | |
| 364 | def test_circular_reference(self): |
| 365 | """Ensure you can handle circular references""" |
| 366 | |
| 367 | class Relation(EmbeddedDocument): |
| 368 | name = StringField() |
| 369 | person = ReferenceField("Person") |
| 370 | |
| 371 | class Person(Document): |
| 372 | name = StringField() |
| 373 | relations = ListField(EmbeddedDocumentField("Relation")) |
| 374 | |
| 375 | def __repr__(self): |
| 376 | return "<Person: %s>" % self.name |
| 377 | |
| 378 | Person.drop_collection() |
| 379 | mother = Person(name="Mother") |
| 380 | daughter = Person(name="Daughter") |
| 381 | |
| 382 | mother.save() |
| 383 | daughter.save() |
| 384 | |
| 385 | daughter_rel = Relation(name="Daughter", person=daughter) |
| 386 | mother.relations.append(daughter_rel) |
| 387 | mother.save() |
| 388 | |
| 389 | mother_rel = Relation(name="Daughter", person=mother) |
| 390 | self_rel = Relation(name="Self", person=daughter) |
| 391 | daughter.relations.append(mother_rel) |
| 392 | daughter.relations.append(self_rel) |
| 393 | daughter.save() |
| 394 | |
| 395 | assert "[<Person: Mother>, <Person: Daughter>]" == "%s" % Person.objects() |
| 396 | |
| 397 | def test_circular_reference_on_self(self): |
| 398 | """Ensure you can handle circular references""" |
nothing calls this directly
no test coverage detected