"[EPIC] Report option on everything - reports models

This commit is contained in:
Eliot Berriot 2019-08-22 11:30:30 +02:00
parent 079671ef7a
commit a6cf2ce019
22 changed files with 792 additions and 21 deletions

View file

@ -20,3 +20,50 @@ from funkwhale_api.users.factories import UserFactory
def test_privacy_level_query(user, expected):
query = fields.privacy_level_query(user)
assert query == expected
def test_generic_relation_field(factories):
obj = factories["users.User"]()
f = fields.GenericRelation(
{
"user": {
"queryset": obj.__class__.objects.all(),
"id_attr": "username",
"id_field": fields.serializers.CharField(),
}
}
)
data = {"type": "user", "username": obj.username}
assert f.to_internal_value(data) == obj
@pytest.mark.parametrize(
"payload, expected_error",
[
({}, r".*Invalid data.*"),
(1, r".*Invalid data.*"),
(False, r".*Invalid data.*"),
("test", r".*Invalid data.*"),
({"missing": "type"}, r".*Invalid type.*"),
({"type": "noop"}, r".*Invalid type.*"),
({"type": "user"}, r".*Invalid username.*"),
({"type": "user", "username": {}}, r".*Invalid username.*"),
({"type": "user", "username": "not_found"}, r".*Object not found.*"),
],
)
def test_generic_relation_field_validation_error(payload, expected_error, factories):
obj = factories["users.User"]()
f = fields.GenericRelation(
{
"user": {
"queryset": obj.__class__.objects.all(),
"id_attr": "username",
"id_field": fields.serializers.CharField(),
}
}
)
with pytest.raises(fields.serializers.ValidationError, match=expected_error):
f.to_internal_value(payload)