From 7a74f7f8822ba637e26f5e205bef538e2d1367a6 Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Thu, 19 Mar 2026 21:17:27 -0400 Subject: [PATCH] [tests] Add scrobble tests --- tests/scrobbles_tests/test_scrobblers.py | 41 ++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 tests/scrobbles_tests/test_scrobblers.py diff --git a/tests/scrobbles_tests/test_scrobblers.py b/tests/scrobbles_tests/test_scrobblers.py new file mode 100644 index 0000000..2d742ed --- /dev/null +++ b/tests/scrobbles_tests/test_scrobblers.py @@ -0,0 +1,41 @@ +from unittest.mock import MagicMock, patch + +from scrobbles.scrobblers import jellyfin_scrobble_media, mopidy_scrobble_media + + +def test_jellyfin_scrobble_media_ignores_progress_with_zero_position(): + + post_data = { + "ItemType": "Audio", + "PlaybackPosition": "00:00:00", + "NotificationType": "PlaybackProgress", + } + + result = jellyfin_scrobble_media(post_data, 1) + + assert result is None + + +def test_mopidy_scrobble_handles_missing_mopidy_uri(): + + with patch("scrobbles.scrobblers.Track") as mock_track_class: + with patch("scrobbles.scrobblers.parse_mopidy_uri", return_value=None): + mock_track = MagicMock() + mock_track.scrobble_for_user = MagicMock(return_value=MagicMock()) + mock_track_class.find_or_create.return_value = mock_track + + post_data = { + "name": "Test Song", + "artist": "Test Artist", + "album": "Test Album", + "run_time": 180000, + } + + result = mopidy_scrobble_media(post_data, 1) + + mock_track_class.find_or_create.assert_called_once_with( + title="Test Song", + artist_name="Test Artist", + album_name="Test Album", + run_time_seconds=180000, + )