summaryrefslogtreecommitdiff
path: root/tests/test_info_tab_extensions.py
blob: 4288cc84627e674a7cce6a5e43df0a3ee620b7b9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from unittest.mock import patch


def test_new_fields_initial_state(info_tab_widget, qt_app):
    """New fields must exist and default to '—'."""
    assert hasattr(info_tab_widget, "lbl_track_number")
    assert info_tab_widget.lbl_track_number.text() == "—"
    assert hasattr(info_tab_widget, "lbl_bpm")
    assert info_tab_widget.lbl_bpm.text() == "—"
    # Note: lbl_label, lbl_genres, lbl_producers and lbl_composers are not available
    # as these fields cannot be retrieved from TIDAL API


def test_bpm_population(info_tab_widget, mock_track, qt_app):
    """Ensure BPM field is populated when present."""
    # Add BPM attribute to mock_track
    mock_track.bpm = 120

    with patch("tidal_dl_ng.ui.info_tab_widget.name_builder_title", return_value="Test Track"):
        info_tab_widget._populate_track_details(mock_track)
        qt_app.processEvents()

        # Expect loading indicator first due to async extras
        assert info_tab_widget.lbl_bpm.text() == "⏳ Loading..."
        # Simulate async arrival of extras
        info_tab_widget._update_extras_ui({"bpm": 120})
        qt_app.processEvents()
        assert info_tab_widget.lbl_bpm.text() == "120"