def assert_required_fields(self, field_names, parent_getter, field_parent_getter):
"""
Helper function to assert required fields
"""
for key in field_names:
field = field_parent_getter(ProfileFilledOutSerializer().fields)[key]
is_generated = isinstance(field, (ListSerializer, SerializerMethodField, ReadOnlyField))
is_skippable = (field.read_only or field.allow_null or field.allow_blank)
# skip fields that are skippable, generated, read only, or that tie
# to other serializers which are tested elsewhere.
if is_generated or is_skippable:
continue
clone = deepcopy(self.data)
clone["image"] = self.profile.image
clone["image_small"] = self.profile.image_small
clone["image_medium"] = self.profile.image_medium
parent_getter(clone)[key] = None
with self.assertRaises(ValidationError) as ex:
ProfileFilledOutSerializer(data=clone).is_valid(raise_exception=True)
assert parent_getter(ex.exception.args[0]) == {key: ['This field may not be null.']}
if isinstance(field, CharField):
# test blank string too
parent_getter(clone)[key] = ""
with self.assertRaises(ValidationError) as ex:
ProfileFilledOutSerializer(data=clone).is_valid(raise_exception=True)
assert parent_getter(ex.exception.args[0]) == {key: ['This field may not be blank.']}
评论列表
文章目录