mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-05 09:39:24 +02:00
"[EPIC] Report option on everything - reports models
This commit is contained in:
parent
079671ef7a
commit
a6cf2ce019
22 changed files with 792 additions and 21 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue