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

Method test_list_item_dereference

tests/test_dereference.py:18–74  ·  view source on GitHub ↗

Ensure that DBRef items in ListFields are dereferenced.

(self)

Source from the content-addressed store, hash-verified

16 cls.db.drop_database("mongoenginetest")
17
18 def test_list_item_dereference(self):
19 """Ensure that DBRef items in ListFields are dereferenced."""
20
21 class User(Document):
22 name = StringField()
23
24 class Group(Document):
25 members = ListField(ReferenceField(User))
26
27 User.drop_collection()
28 Group.drop_collection()
29
30 for i in range(1, 51):
31 user = User(name="user %s" % i)
32 user.save()
33
34 group = Group(members=User.objects)
35 group.save()
36
37 group = Group(members=User.objects)
38 group.save()
39
40 with query_counter() as q:
41 assert q == 0
42
43 group_obj = Group.objects.first()
44 assert q == 1
45
46 len(group_obj._data["members"])
47 assert q == 1
48
49 len(group_obj.members)
50 assert q == 2
51
52 _ = [m for m in group_obj.members]
53 assert q == 2
54
55 # Document select_related
56 with query_counter() as q:
57 assert q == 0
58
59 group_obj = Group.objects.first().select_related()
60 assert q == 2
61 _ = [m for m in group_obj.members]
62 assert q == 2
63
64 # Queryset select_related
65 with query_counter() as q:
66 assert q == 0
67 group_objs = Group.objects.select_related()
68 assert q == 2
69 for group_obj in group_objs:
70 _ = [m for m in group_obj.members]
71 assert q == 2
72
73 User.drop_collection()
74 Group.drop_collection()
75

Callers

nothing calls this directly

Calls 7

query_counterClass · 0.90
drop_collectionMethod · 0.80
UserClass · 0.70
GroupClass · 0.70
saveMethod · 0.45
firstMethod · 0.45
select_relatedMethod · 0.45

Tested by

no test coverage detected