@@ -300,6 +300,10 @@ def test_returns_false_if_missing_uri(self, web_track_mock):
300
300
del web_track_mock ["uri" ]
301
301
assert translator .valid_web_data (web_track_mock , "track" ) is False
302
302
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
+
303
307
def test_returns_success (self , web_track_mock ):
304
308
assert translator .valid_web_data (web_track_mock , "track" ) is True
305
309
@@ -716,6 +720,22 @@ def test_successful_translation(self, web_album_mock):
716
720
assert album .name == "DEF 456"
717
721
assert list (album .artists ) == artists
718
722
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
+
719
739
720
740
class TestWebToTrack :
721
741
def test_calls_web_to_track_ref (self , web_track_mock ):
@@ -773,3 +793,11 @@ def test_ignores_missing_album(self, web_track_mock):
773
793
assert track .name == "ABC 123"
774
794
assert track .length == 174300
775
795
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