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