fix(ui): keep Bandcamp link across history refreshes
This commit is contained in:
1 parent
3ae4dc3dab
commit
d2b4f1bf64
2 files changed
+76
-1
No files matched your search
@@ -159,6 +159,63 @@ async def test_stage_shows_bandcamp_link_only_when_present() -> None:
|
||||
assert "Bandcamp" not in rendered_text(app)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_bandcamp_link_survives_history_refresh(monkeypatch) -> None:
|
||||
app = SomaFMApp(autoplay=False, offline=True, audio=False)
|
||||
async with app.run_test(size=(110, 40)) as pilot:
|
||||
await pilot.pause()
|
||||
station = app.current
|
||||
assert station is not None
|
||||
url = "https://jensbuchert.bandcamp.com/track/rauschebart"
|
||||
old_song = Song(
|
||||
title="Rauschebart",
|
||||
artist="Jens Buchert",
|
||||
album="Gravity",
|
||||
bandcamp_url=url,
|
||||
)
|
||||
station.now_playing = old_song
|
||||
station.history = [old_song]
|
||||
|
||||
async def fake_fetch_history(client, station_id):
|
||||
assert station_id == station.id
|
||||
return [
|
||||
Song(
|
||||
title="Rauschebart",
|
||||
artist="Jens Buchert",
|
||||
album="Gravity",
|
||||
)
|
||||
]
|
||||
|
||||
monkeypatch.setattr("somafm_tui.app.api.fetch_history", fake_fetch_history)
|
||||
worker = app._fetch_history(station.id)
|
||||
await worker.wait()
|
||||
await pilot.pause()
|
||||
|
||||
assert station.now_playing is not None
|
||||
assert station.now_playing is not old_song
|
||||
assert station.now_playing.bandcamp_url == url
|
||||
assert "Bandcamp" in rendered_text(app)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_cached_bandcamp_link_is_reapplied_to_new_song() -> None:
|
||||
app = SomaFMApp(autoplay=False, offline=True, audio=False)
|
||||
async with app.run_test(size=(110, 40)) as pilot:
|
||||
await pilot.pause()
|
||||
station = app.current
|
||||
assert station is not None
|
||||
url = "https://jensbuchert.bandcamp.com/track/rauschebart"
|
||||
song = Song(title="Rauschebart", artist="Jens Buchert", album="Gravity")
|
||||
app._bandcamp_urls[f"{station.id}|{song.key()}"] = url
|
||||
station.now_playing = song
|
||||
|
||||
app._update_bandcamp()
|
||||
await pilot.pause()
|
||||
|
||||
assert song.bandcamp_url == url
|
||||
assert "Bandcamp" in rendered_text(app)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_media_session_commands_drive_the_app() -> None:
|
||||
app = SomaFMApp(autoplay=False, offline=True, audio=False)
|
||||
|
||||
Reference in new issue
Block a user