"""Round 61: clicking the gray (art-less) sidebar square asks for the playing track's art to be downloaded; with art it still opens the big view.""" from PyQt6.QtCore import Qt from PyQt6.QtGui import QPixmap from lintunes.models import Track from tests.test_round49 import _FakePlayer, _release def _art(): from lintunes.gui.sidebar import SidebarArt art = SidebarArt(_FakePlayer()) art.resize(100, 100) requested = [] art.download_art_requested.connect(requested.append) return art, requested def _track(tid=7): # No location: set_track reads no art, which is the gray-square case return Track(track_id=tid, name="Song", artist="Artist", album="Album") class TestGraySquareClick: def test_click_without_art_requests_a_download(self, qapp): art, requested = _art() art.set_track(_track(42)) art.mouseReleaseEvent(_release(Qt.MouseButton.LeftButton)) assert requested == [42] assert not art._art_window.isVisible() def test_no_track_requests_nothing(self, qapp): art, requested = _art() art.mouseReleaseEvent(_release(Qt.MouseButton.LeftButton)) assert requested == [] def test_with_art_opens_the_big_view_instead(self, qapp): art, requested = _art() art.set_track(_track()) pixmap = QPixmap(32, 32) pixmap.fill(Qt.GlobalColor.blue) art._pixmap = pixmap art.mouseReleaseEvent(_release(Qt.MouseButton.LeftButton)) try: assert requested == [] assert art._art_window.isVisible() finally: art._art_window.hide() def test_right_click_or_release_outside_requests_nothing(self, qapp): art, requested = _art() art.set_track(_track()) art.mouseReleaseEvent(_release(Qt.MouseButton.RightButton)) art.mouseReleaseEvent(_release(Qt.MouseButton.LeftButton, 500, 500)) assert requested == [] def test_tooltip_says_what_a_click_will_do(self, qapp): art, _ = _art() art.set_track(None) assert art.toolTip() == "" art.set_track(_track()) assert art.toolTip() == "Click to download album art"