diff --git a/tests/test_player_helpers.py b/tests/test_player_helpers.py index c6343fa..2f1c98f 100644 --- a/tests/test_player_helpers.py +++ b/tests/test_player_helpers.py @@ -5,6 +5,7 @@ import struct import math import tempfile from pathlib import Path +from unittest import mock import pytest @@ -345,20 +346,28 @@ class TestTmpDir: # ── SearchWorker (TEST_MODE) ───────────────────────────────────────────────── class TestSearchWorkerTestMode: - """Tests for SearchWorker.run() with TEST_MODE enabled.""" + """Tests for SearchWorker.run() with TEST_MODE enabled. + + Uses ``mock.MagicMock`` to capture signal emissions instead of + ``.connect()`` because the player module's ``Signal`` binding may + be a plain function (the import fallback when PySide6 is unavailable) + that does not have a ``.connect()`` method. + """ def test_returns_dummy_results_in_test_mode(self, monkeypatch): """With TEST_MODE=True, SearchWorker returns 5 dummy songs.""" monkeypatch.setattr("player.TEST_MODE", True) from player import SearchWorker - results = [] worker = SearchWorker("test query") - worker.results_ready.connect(results.append) + # Use a MagicMock to capture signal emissions — works with both + # real Signal, stub _Signal, and fallback lambda. + mock_signal = mock.MagicMock() + worker.results_ready = mock_signal worker.run() - assert len(results) == 1 - data = results[0] + mock_signal.emit.assert_called_once() + data = mock_signal.emit.call_args[0][0] assert "songs" in data assert "videos" in data assert len(data["songs"]) == 5 @@ -370,12 +379,14 @@ class TestSearchWorkerTestMode: monkeypatch.setattr("player.TEST_MODE", True) from player import SearchWorker - results = [] worker = SearchWorker("test query") - worker.results_ready.connect(lambda r: results.append(r)) + mock_signal = mock.MagicMock() + worker.results_ready = mock_signal worker.run() - song = results[0]["songs"][0] + mock_signal.emit.assert_called_once() + data = mock_signal.emit.call_args[0][0] + song = data["songs"][0] assert "videoId" in song assert "title" in song assert "artists" in song