46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
from funkwhale_api import plugins
|
|
from funkwhale_api.federation import serializers as federation_serializers
|
|
from funkwhale_api.history import serializers
|
|
from funkwhale_api.music import serializers as music_serializers
|
|
from funkwhale_api.users import serializers as users_serializers
|
|
|
|
|
|
def test_listening_serializer(factories, to_api_date):
|
|
listening = factories["history.Listening"]()
|
|
actor = listening.user.create_actor()
|
|
|
|
expected = {
|
|
"id": listening.pk,
|
|
"creation_date": to_api_date(listening.creation_date),
|
|
"track": music_serializers.TrackSerializer(listening.track).data,
|
|
"actor": federation_serializers.APIActorSerializer(actor).data,
|
|
"user": users_serializers.UserBasicSerializer(listening.user).data,
|
|
}
|
|
serializer = serializers.ListeningSerializer(listening)
|
|
|
|
assert serializer.data == expected
|
|
|
|
|
|
def test_listening_create(factories, to_api_date, mocker, now):
|
|
user = factories["users.User"]()
|
|
track = factories["music.Track"]()
|
|
payload = {"track": track.pk}
|
|
on_commit = mocker.patch("funkwhale_api.common.utils.on_commit")
|
|
request = mocker.Mock(plugins_conf=mocker.Mock())
|
|
serializer = serializers.ListeningWriteSerializer(
|
|
data=payload, context={"request": request, "user": user}
|
|
)
|
|
|
|
assert serializer.is_valid(raise_exception=True) is True
|
|
listening = serializer.save()
|
|
|
|
assert serializer.instance.user == user
|
|
assert serializer.instance.track == track
|
|
|
|
on_commit.assert_called_once_with(
|
|
plugins.hooks.dispatch,
|
|
"history.listening.created",
|
|
listening=listening,
|
|
plugins_conf=request.plugins_conf,
|
|
)
|