2019-02-14 09:49:06 +00:00
|
|
|
from funkwhale_api.music import filters
|
|
|
|
from funkwhale_api.music import models
|
|
|
|
|
|
|
|
|
|
|
|
def test_album_filter_hidden(factories, mocker, queryset_equal_list):
|
|
|
|
factories["music.Album"]()
|
|
|
|
cf = factories["moderation.UserFilter"](for_artist=True)
|
|
|
|
hidden_album = factories["music.Album"](artist=cf.target_artist)
|
|
|
|
|
|
|
|
qs = models.Album.objects.all()
|
|
|
|
filterset = filters.AlbumFilter(
|
|
|
|
{"hidden": "true"}, request=mocker.Mock(user=cf.user), queryset=qs
|
|
|
|
)
|
|
|
|
|
|
|
|
assert filterset.qs == [hidden_album]
|
|
|
|
|
|
|
|
|
|
|
|
def test_artist_filter_hidden(factories, mocker, queryset_equal_list):
|
|
|
|
factories["music.Artist"]()
|
|
|
|
cf = factories["moderation.UserFilter"](for_artist=True)
|
|
|
|
hidden_artist = cf.target_artist
|
|
|
|
|
|
|
|
qs = models.Artist.objects.all()
|
|
|
|
filterset = filters.ArtistFilter(
|
|
|
|
{"hidden": "true"}, request=mocker.Mock(user=cf.user), queryset=qs
|
|
|
|
)
|
|
|
|
|
|
|
|
assert filterset.qs == [hidden_artist]
|
|
|
|
|
|
|
|
|
|
|
|
def test_artist_filter_track_artist(factories, mocker, queryset_equal_list):
|
|
|
|
factories["music.Track"]()
|
|
|
|
cf = factories["moderation.UserFilter"](for_artist=True)
|
|
|
|
hidden_track = factories["music.Track"](artist=cf.target_artist)
|
|
|
|
|
|
|
|
qs = models.Track.objects.all()
|
|
|
|
filterset = filters.TrackFilter(
|
|
|
|
{"hidden": "true"}, request=mocker.Mock(user=cf.user), queryset=qs
|
|
|
|
)
|
|
|
|
|
|
|
|
assert filterset.qs == [hidden_track]
|
|
|
|
|
|
|
|
|
|
|
|
def test_artist_filter_track_album_artist(factories, mocker, queryset_equal_list):
|
|
|
|
factories["music.Track"]()
|
|
|
|
cf = factories["moderation.UserFilter"](for_artist=True)
|
|
|
|
hidden_track = factories["music.Track"](album__artist=cf.target_artist)
|
|
|
|
|
|
|
|
qs = models.Track.objects.all()
|
|
|
|
filterset = filters.TrackFilter(
|
|
|
|
{"hidden": "true"}, request=mocker.Mock(user=cf.user), queryset=qs
|
|
|
|
)
|
|
|
|
|
|
|
|
assert filterset.qs == [hidden_track]
|
2019-07-08 13:26:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_track_filter_tag_single(
|
|
|
|
factories, mocker, queryset_equal_list, anonymous_user
|
|
|
|
):
|
|
|
|
factories["music.Track"]()
|
|
|
|
# tag name partially match the query, so this shouldn't match
|
|
|
|
factories["music.Track"](set_tags=["TestTag1"])
|
|
|
|
tagged = factories["music.Track"](set_tags=["TestTag"])
|
|
|
|
qs = models.Track.objects.all()
|
|
|
|
filterset = filters.TrackFilter(
|
|
|
|
{"tag": "testTaG"}, request=mocker.Mock(user=anonymous_user), queryset=qs
|
|
|
|
)
|
|
|
|
|
|
|
|
assert filterset.qs == [tagged]
|
|
|
|
|
|
|
|
|
|
|
|
def test_track_filter_tag_multiple(
|
|
|
|
factories, mocker, queryset_equal_list, anonymous_user
|
|
|
|
):
|
|
|
|
factories["music.Track"](set_tags=["TestTag1"])
|
|
|
|
tagged = factories["music.Track"](set_tags=["TestTag1", "TestTag2"])
|
|
|
|
qs = models.Track.objects.all()
|
|
|
|
filterset = filters.TrackFilter(
|
|
|
|
{"tag": ["testTaG1", "TestTag2"]},
|
|
|
|
request=mocker.Mock(user=anonymous_user),
|
|
|
|
queryset=qs,
|
|
|
|
)
|
|
|
|
|
|
|
|
assert filterset.qs == [tagged]
|