From fcf223ad032219fed8e9c96e586d21be14e1344d Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Sun, 15 Sep 2019 20:22:10 +0200 Subject: [PATCH] Resolve "Broken 'Less listened' Radio in develop version" --- api/funkwhale_api/radios/radios.py | 5 +---- api/tests/radios/test_api.py | 15 +++++++++++++++ changes/changelog.d/912.bugfix | 1 + 3 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 changes/changelog.d/912.bugfix diff --git a/api/funkwhale_api/radios/radios.py b/api/funkwhale_api/radios/radios.py index 86c84ad13..01a242216 100644 --- a/api/funkwhale_api/radios/radios.py +++ b/api/funkwhale_api/radios/radios.py @@ -8,7 +8,6 @@ from rest_framework import serializers from funkwhale_api.moderation import filters as moderation_filters from funkwhale_api.music.models import Artist, Track from funkwhale_api.tags.models import Tag -from funkwhale_api.users.models import User from . import filters, models from .registries import registry @@ -263,9 +262,7 @@ class ArtistRadio(RelatedObjectRadio): @registry.register(name="less-listened") -class LessListenedRadio(RelatedObjectRadio): - model = User - +class LessListenedRadio(SessionRadio): def clean(self, instance): instance.related_object = instance.user super().clean(instance) diff --git a/api/tests/radios/test_api.py b/api/tests/radios/test_api.py index 0ddebe387..02d0dc954 100644 --- a/api/tests/radios/test_api.py +++ b/api/tests/radios/test_api.py @@ -1,3 +1,5 @@ +import pytest + from django.urls import reverse from funkwhale_api.music.serializers import TrackSerializer @@ -129,3 +131,16 @@ def test_clean_config_is_called_on_serializer_save(mocker, factories): instance = serializer.save(user=user) spied.assert_called_once_with(data["config"][0]) assert instance.config[0]["names"] == [artist.name] + + +@pytest.mark.parametrize("radio_type", ["random", "less-listened", "favorites"]) +def test_create_radio_session(radio_type, logged_in_api_client): + + url = reverse("api:v1:radios:sessions-list") + response = logged_in_api_client.post(url, {"radio_type": radio_type}) + + assert response.status_code == 201 + assert response.data["radio_type"] == radio_type + assert ( + response.data["id"] == logged_in_api_client.user.radio_sessions.latest("id").pk + ) diff --git a/changes/changelog.d/912.bugfix b/changes/changelog.d/912.bugfix new file mode 100644 index 000000000..67e2d01ad --- /dev/null +++ b/changes/changelog.d/912.bugfix @@ -0,0 +1 @@ +Fixed broken less listened radio (#912) -- GitLab