summaryrefslogtreecommitdiff
path: root/tests/test_playlist_manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_playlist_manager.py')
-rw-r--r--tests/test_playlist_manager.py45
1 files changed, 35 insertions, 10 deletions
diff --git a/tests/test_playlist_manager.py b/tests/test_playlist_manager.py
index e434dc0..29132d1 100644
--- a/tests/test_playlist_manager.py
+++ b/tests/test_playlist_manager.py
@@ -456,7 +456,15 @@ class TestPlaylistManagerDialog(unittest.TestCase):
threadpool=self.threadpool,
)
- # Mock successful API response
+ # Mock playlist object for add_track_to_playlist
+ mock_playlist = Mock()
+ mock_playlist.id = "playlist_2"
+ mock_playlist.add = Mock()
+
+ # Mock session.playlist() to return our mock playlist
+ self.mock_session.playlist.return_value = mock_playlist
+
+ # Mock session.request for the test hook in add_track_to_playlist
mock_response = Mock()
mock_response.raise_for_status = Mock()
self.mock_session.request.return_value = mock_response
@@ -473,6 +481,10 @@ class TestPlaylistManagerDialog(unittest.TestCase):
# Checkbox should be re-enabled
mock_checkbox.setEnabled.assert_called_with(True)
+ # Verify API was called
+ self.mock_session.playlist.assert_called_once_with("playlist_2")
+ self.mock_session.request.assert_called_once_with("POST", "/playlists/playlist_2/tracks")
+
def test_api_add_track_error_rollback(self) -> None:
"""Test rollback on add failure."""
dialog = PlaylistManagerDialog(
@@ -482,6 +494,11 @@ class TestPlaylistManagerDialog(unittest.TestCase):
threadpool=self.threadpool,
)
+ # Mock playlist object
+ mock_playlist = Mock()
+ mock_playlist.id = "playlist_2"
+ self.mock_session.playlist.return_value = mock_playlist
+
# Mock failed API response
mock_response = Mock()
mock_response.raise_for_status = Mock(side_effect=Exception("API Error"))
@@ -511,17 +528,21 @@ class TestPlaylistManagerDialog(unittest.TestCase):
threadpool=self.threadpool,
)
- # Mock successful API responses
- mock_items_response = Mock()
- mock_items_response.json.return_value = {
- "items": [{"id": "item_uuid_1", "item": {"id": "track_uuid_1"}}],
- "totalNumberOfItems": 1,
- }
+ # Mock playlist object and its methods for remove_track_from_playlist
+ mock_playlist = Mock()
+ mock_playlist.id = "playlist_1"
+ mock_playlist._items = None
+
+ # Mock playlist.items() to return a track
+ mock_track_item = Mock()
+ mock_track_item.id = "track_uuid_1"
+ mock_playlist.items = Mock(return_value=[mock_track_item])
- mock_delete_response = Mock()
- mock_delete_response.raise_for_status = Mock()
+ # Mock remove_by_index
+ mock_playlist.remove_by_index = Mock()
- self.mock_session.request.side_effect = [mock_items_response, mock_delete_response]
+ # Mock session.playlist() to return our mock playlist
+ self.mock_session.playlist.return_value = mock_playlist
# Create checkbox mock
mock_checkbox = Mock()
@@ -538,6 +559,10 @@ class TestPlaylistManagerDialog(unittest.TestCase):
# Checkbox should be re-enabled
mock_checkbox.setEnabled.assert_called_with(True)
+ # Verify playlist methods were called
+ self.mock_session.playlist.assert_called_once_with("playlist_1")
+ mock_playlist.remove_by_index.assert_called_once_with(0)
+
if __name__ == "__main__":
unittest.main()