MCPcopy Index your code
hub / github.com/MongoEngine/mongoengine / test_generic_reference

Method test_generic_reference

tests/test_dereference.py:465–548  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

463 )
464
465 def test_generic_reference(self):
466 class UserA(Document):
467 name = StringField()
468
469 class UserB(Document):
470 name = StringField()
471
472 class UserC(Document):
473 name = StringField()
474
475 class Group(Document):
476 members = ListField(GenericReferenceField())
477
478 UserA.drop_collection()
479 UserB.drop_collection()
480 UserC.drop_collection()
481 Group.drop_collection()
482
483 members = []
484 for i in range(1, 51):
485 a = UserA(name="User A %s" % i)
486 a.save()
487
488 b = UserB(name="User B %s" % i)
489 b.save()
490
491 c = UserC(name="User C %s" % i)
492 c.save()
493
494 members += [a, b, c]
495
496 group = Group(members=members)
497 group.save()
498
499 group = Group(members=members)
500 group.save()
501
502 with query_counter() as q:
503 assert q == 0
504
505 group_obj = Group.objects.first()
506 assert q == 1
507
508 _ = [m for m in group_obj.members]
509 assert q == 4
510
511 _ = [m for m in group_obj.members]
512 assert q == 4
513
514 for m in group_obj.members:
515 assert "User" in m.__class__.__name__
516
517 # Document select_related
518 with query_counter() as q:
519 assert q == 0
520
521 group_obj = Group.objects.first().select_related()
522 assert q == 4

Callers

nothing calls this directly

Calls 9

query_counterClass · 0.90
UserAClass · 0.85
UserBClass · 0.85
UserCClass · 0.85
drop_collectionMethod · 0.80
GroupClass · 0.70
saveMethod · 0.45
firstMethod · 0.45
select_relatedMethod · 0.45

Tested by

no test coverage detected