29 lines
1.2 KiB
Python
29 lines
1.2 KiB
Python
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"
|