Added a new ?related=obj_id filter for artists, albums and tracks, based on tags

This commit is contained in:
Agate 2020-06-22 14:39:50 +02:00
commit d50cce36e2
No known key found for this signature in database
GPG key ID: 6B501DFD73514E14
5 changed files with 87 additions and 0 deletions

View file

@ -203,3 +203,41 @@ def test_track_filter_artist_includes_album_artist(
)
assert filterset.qs == [track2, track1]
@pytest.mark.parametrize(
"factory_name, filterset_class",
[
("music.Track", filters.TrackFilter),
("music.Artist", filters.ArtistFilter),
("music.Album", filters.AlbumFilter),
],
)
def test_filter_tag_related(
factory_name,
filterset_class,
factories,
anonymous_user,
queryset_equal_list,
mocker,
):
factories["tags.Tag"](name="foo")
factories["tags.Tag"](name="bar")
factories["tags.Tag"](name="baz")
factories["tags.Tag"]()
factories["tags.Tag"]()
matches = [
factories[factory_name](set_tags=["foo", "bar", "baz", "noop"]),
factories[factory_name](set_tags=["foo", "baz", "noop"]),
factories[factory_name](set_tags=["baz", "noop"]),
]
factories[factory_name](set_tags=["noop"]),
obj = factories[factory_name](set_tags=["foo", "bar", "baz"])
filterset = filterset_class(
{"related": obj.pk, "ordering": "-related"},
request=mocker.Mock(user=anonymous_user, actor=None),
queryset=obj.__class__.objects.all(),
)
assert filterset.qs == matches