60 lines
1.8 KiB
Python
60 lines
1.8 KiB
Python
from unittest.mock import MagicMock, patch
|
|
|
|
from scrobbles.scrobblers import jellyfin_scrobble_media, mopidy_scrobble_media
|
|
|
|
|
|
def test_jellyfin_scrobble_video_with_no_imdb_id():
|
|
with patch("scrobbles.scrobblers.Video") as mock_video_class:
|
|
mock_video_class.find_or_create.return_value = None
|
|
|
|
post_data = {
|
|
"ItemType": "Video",
|
|
"Name": "Test Video",
|
|
"Provider_imdb": "",
|
|
"PlaybackPosition": "00:05:00",
|
|
"NotificationType": "PlaybackProgress",
|
|
"UtcTimestamp": "2024-01-15T10:30:00Z",
|
|
}
|
|
|
|
result = jellyfin_scrobble_media(post_data, 1)
|
|
|
|
mock_video_class.find_or_create.assert_called_once_with(None)
|
|
|
|
|
|
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,
|
|
)
|