diff options
Diffstat (limited to 'tests/test_playlist_manager.py')
| -rw-r--r-- | tests/test_playlist_manager.py | 45 |
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() |
