funkwhale/api/tests/history/test_serializers.py

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,
)