Dispatch hook event when creating listening
This commit is contained in:
		
							parent
							
								
									3da3627397
								
							
						
					
					
						commit
						df88f9c9e3
					
				|  | @ -1,6 +1,8 @@ | |||
| from rest_framework import serializers | ||||
| 
 | ||||
| from funkwhale_api import plugins | ||||
| from funkwhale_api.activity import serializers as activity_serializers | ||||
| from funkwhale_api.common import utils | ||||
| from funkwhale_api.federation import serializers as federation_serializers | ||||
| from funkwhale_api.music.serializers import TrackActivitySerializer, TrackSerializer | ||||
| from funkwhale_api.users.serializers import UserActivitySerializer, UserBasicSerializer | ||||
|  | @ -53,4 +55,12 @@ class ListeningWriteSerializer(serializers.ModelSerializer): | |||
|     def create(self, validated_data): | ||||
|         validated_data["user"] = self.context["user"] | ||||
| 
 | ||||
|         return super().create(validated_data) | ||||
|         instance = super().create(validated_data) | ||||
|         plugins_conf = getattr(self.context["request"], "plugins_conf", None) | ||||
|         utils.on_commit( | ||||
|             plugins.hooks.dispatch, | ||||
|             "history.listening.created", | ||||
|             listening=instance, | ||||
|             plugins_conf=plugins_conf, | ||||
|         ) | ||||
|         return instance | ||||
|  |  | |||
|  | @ -1,3 +1,4 @@ | |||
| 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 | ||||
|  | @ -18,3 +19,27 @@ def test_listening_serializer(factories, to_api_date): | |||
|     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, | ||||
|     ) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Eliot Berriot
						Eliot Berriot