Skip to content

Commit 778099d

Browse files
authored
Merge pull request #290 from kingosticks/fix/web-types-with-none-uri
Ignore parts of web responses with a None URI.
2 parents 915cf34 + a4aa63a commit 778099d

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

mopidy_spotify/translator.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ def valid_web_data(data, object_type):
172172
return (
173173
isinstance(data, dict)
174174
and data.get("type") == object_type
175-
and "uri" in data
175+
and data.get("uri") is not None
176176
)
177177

178178

tests/test_translator.py

+28
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,10 @@ def test_returns_false_if_missing_uri(self, web_track_mock):
300300
del web_track_mock["uri"]
301301
assert translator.valid_web_data(web_track_mock, "track") is False
302302

303+
def test_return_false_if_uri_none(self, web_track_mock):
304+
web_track_mock["uri"] = None
305+
assert translator.valid_web_data(web_track_mock, "track") is False
306+
303307
def test_returns_success(self, web_track_mock):
304308
assert translator.valid_web_data(web_track_mock, "track") is True
305309

@@ -716,6 +720,22 @@ def test_successful_translation(self, web_album_mock):
716720
assert album.name == "DEF 456"
717721
assert list(album.artists) == artists
718722

723+
def test_ignores_invalid_artists(self, web_album_mock, web_artist_mock):
724+
invalid_artist1 = {"name": "FOO", "uri": None, "type": "artist"}
725+
invalid_artist2 = {"name": "BAR", "type": "football"}
726+
web_album_mock["artists"] = [
727+
invalid_artist1,
728+
web_artist_mock,
729+
invalid_artist2,
730+
]
731+
album = translator.web_to_album(web_album_mock)
732+
733+
artists = [models.Artist(uri="spotify:artist:abba", name="ABBA")]
734+
735+
assert album.uri == "spotify:album:def"
736+
assert album.name == "DEF 456"
737+
assert list(album.artists) == artists
738+
719739

720740
class TestWebToTrack:
721741
def test_calls_web_to_track_ref(self, web_track_mock):
@@ -773,3 +793,11 @@ def test_ignores_missing_album(self, web_track_mock):
773793
assert track.name == "ABC 123"
774794
assert track.length == 174300
775795
assert track.album is None
796+
797+
def test_ignores_invalid_album(self, web_track_mock):
798+
web_track_mock["album"]["uri"] = None
799+
800+
track = translator.web_to_track(web_track_mock)
801+
802+
assert track.name == "ABC 123"
803+
assert track.album is None

0 commit comments

Comments
 (0)