funkwhale/api/tests/audio/test_filters.py

48 wiersze
1.7 KiB
Python

import pytest
from funkwhale_api.audio import filters, models
def test_channel_filter_subscribed_true(factories, mocker, queryset_equal_list):
user = factories["users.User"](with_actor=True)
channel = factories["audio.Channel"]()
other_channel = factories["audio.Channel"]()
factories["audio.Subscription"](target=channel.actor, actor=user.actor)
factories["audio.Subscription"](target=other_channel.actor)
qs = models.Channel.objects.all()
filterset = filters.ChannelFilter(
{"subscribed": "true"}, request=mocker.Mock(user=user), queryset=qs
)
assert filterset.qs == [channel]
def test_channel_filter_subscribed_false(factories, mocker, queryset_equal_list):
user = factories["users.User"](with_actor=True)
channel = factories["audio.Channel"]()
other_channel = factories["audio.Channel"]()
factories["audio.Subscription"](target=channel.actor, actor=user.actor)
factories["audio.Subscription"](target=other_channel.actor)
qs = models.Channel.objects.all()
filterset = filters.ChannelFilter(
{"subscribed": "false"}, request=mocker.Mock(user=user), queryset=qs
)
assert filterset.qs == [other_channel]
@pytest.mark.parametrize("external, expected_index", [("true", 0), ("false", 1)])
def test_channel_filter_external(
external, expected_index, factories, mocker, queryset_equal_list
):
user = factories["users.User"](with_actor=True)
channels = [factories["audio.Channel"](external=True), factories["audio.Channel"]()]
qs = models.Channel.objects.all()
filterset = filters.ChannelFilter(
{"external": external}, request=mocker.Mock(user=user), queryset=qs
)
assert filterset.qs == [channels[expected_index]]