MCPcopy Create free account
hub / github.com/MongoEngine/mongoengine / test_circular_reference

Method test_circular_reference

tests/test_dereference.py:364–395  ·  view source on GitHub ↗

Ensure you can handle circular references

(self)

Source from the content-addressed store, hash-verified

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"""

Callers

nothing calls this directly

Calls 5

RelationClass · 0.85
drop_collectionMethod · 0.80
PersonClass · 0.70
saveMethod · 0.45
objectsMethod · 0.45

Tested by

no test coverage detected