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

Method test_list_field_complex

tests/fields/test_fields.py:1149–1197  ·  view source on GitHub ↗

Ensure that the list fields can handle the complex types.

(self)

Source from the content-addressed store, hash-verified

1147 assert simple.widgets == [1, 2, 3, 5]
1148
1149 def test_list_field_complex(self):
1150 """Ensure that the list fields can handle the complex types."""
1151
1152 class SettingBase(EmbeddedDocument):
1153 meta = {"allow_inheritance": True}
1154
1155 class StringSetting(SettingBase):
1156 value = StringField()
1157
1158 class IntegerSetting(SettingBase):
1159 value = IntField()
1160
1161 class Simple(Document):
1162 mapping = ListField()
1163
1164 Simple.drop_collection()
1165
1166 e = Simple()
1167 e.mapping.append(StringSetting(value="foo"))
1168 e.mapping.append(IntegerSetting(value=42))
1169 e.mapping.append(
1170 {
1171 "number": 1,
1172 "string": "Hi!",
1173 "float": 1.001,
1174 "complex": IntegerSetting(value=42),
1175 "list": [IntegerSetting(value=42), StringSetting(value="foo")],
1176 }
1177 )
1178 e.save()
1179
1180 e2 = Simple.objects.get(id=e.id)
1181 assert isinstance(e2.mapping[0], StringSetting)
1182 assert isinstance(e2.mapping[1], IntegerSetting)
1183
1184 # Test querying
1185 assert Simple.objects.filter(mapping__1__value=42).count() == 1
1186 assert Simple.objects.filter(mapping__2__number=1).count() == 1
1187 assert Simple.objects.filter(mapping__2__complex__value=42).count() == 1
1188 assert Simple.objects.filter(mapping__2__list__0__value=42).count() == 1
1189 assert Simple.objects.filter(mapping__2__list__1__value="foo").count() == 1
1190
1191 # Confirm can update
1192 Simple.objects().update(set__mapping__1=IntegerSetting(value=10))
1193 assert Simple.objects.filter(mapping__1__value=10).count() == 1
1194
1195 Simple.objects().update(set__mapping__2__list__1=StringSetting(value="Boo"))
1196 assert Simple.objects.filter(mapping__2__list__1__value="foo").count() == 0
1197 assert Simple.objects.filter(mapping__2__list__1__value="Boo").count() == 1
1198
1199 def test_embedded_db_field(self):
1200 class Embedded(EmbeddedDocument):

Callers

nothing calls this directly

Calls 10

drop_collectionMethod · 0.80
SimpleClass · 0.70
StringSettingClass · 0.70
IntegerSettingClass · 0.70
saveMethod · 0.45
getMethod · 0.45
countMethod · 0.45
filterMethod · 0.45
updateMethod · 0.45
objectsMethod · 0.45

Tested by

no test coverage detected