-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Description
test_no_dereference_context_manager_object_id
:
mongoengine/tests/test_context_managers.py
Lines 119 to 154 in 9680259
def test_no_dereference_context_manager_object_id(self): | |
"""Ensure that DBRef items in ListFields aren't dereferenced.""" | |
connect("mongoenginetest") | |
class User(Document): | |
name = StringField() | |
class Group(Document): | |
ref = ReferenceField(User, dbref=False) | |
generic = GenericReferenceField() | |
members = ListField(ReferenceField(User, dbref=False)) | |
User.drop_collection() | |
Group.drop_collection() | |
for i in range(1, 51): | |
User(name="user %s" % i).save() | |
user = User.objects.first() | |
Group(ref=user, members=User.objects, generic=user).save() | |
with no_dereference(Group) as NoDeRefGroup: | |
assert Group._fields["members"]._auto_dereference | |
assert not NoDeRefGroup._fields["members"]._auto_dereference | |
with no_dereference(Group) as Group: | |
group = Group.objects.first() | |
for m in group.members: | |
assert not isinstance(m, User) | |
assert not isinstance(group.ref, User) | |
assert not isinstance(group.generic, User) | |
for m in group.members: | |
assert isinstance(m, User) | |
assert isinstance(group.ref, User) | |
assert isinstance(group.generic, User) |
run this test:
pytest tests/test_context_managers.py -k "test_no_dereference_context_manager_object_id"
we got no error, but if I put the assert False
in with no_dereference(Group) as Group:
:
user = User.objects.first()
Group(ref=user, members=User.objects, generic=user).save()
with no_dereference(Group) as NoDeRefGroup:
assert False # <--------
assert Group._fields["members"]._auto_dereference
assert not NoDeRefGroup._fields["members"]._auto_dereference
pytest shows that there are still no errors!!!
I think this is because the context manager causes the error to not be caught normally
Metadata
Metadata
Assignees
Labels
No labels