Added GenericRelationFilter

This commit is contained in:
Eliot Berriot 2019-08-29 12:20:30 +02:00
parent ab3bc96783
commit b363d1117c
No known key found for this signature in database
GPG key ID: DD6965E2476E5C27
2 changed files with 94 additions and 0 deletions

View file

@ -67,3 +67,39 @@ def test_generic_relation_field_validation_error(payload, expected_error, factor
with pytest.raises(fields.serializers.ValidationError, match=expected_error):
f.to_internal_value(payload)
def test_generic_relation_filter_target_type(factories):
user = factories["users.User"]()
note = factories["moderation.Note"](target=user)
factories["moderation.Note"](target=factories["music.Artist"]())
f = fields.GenericRelationFilter(
"target",
{
"user": {
"queryset": user.__class__.objects.all(),
"id_attr": "username",
"id_field": fields.serializers.CharField(),
}
},
)
qs = f.filter(note.__class__.objects.all(), "user")
assert list(qs) == [note]
def test_generic_relation_filter_target_type_and_id(factories):
user = factories["users.User"]()
note = factories["moderation.Note"](target=user)
factories["moderation.Note"](target=factories["users.User"]())
f = fields.GenericRelationFilter(
"target",
{
"user": {
"queryset": user.__class__.objects.all(),
"id_attr": "username",
"id_field": fields.serializers.CharField(),
}
},
)
qs = f.filter(note.__class__.objects.all(), "user:{}".format(user.username))
assert list(qs) == [note]