@@ -81,6 +81,58 @@ def test_song_artist(song_object: Song, mock_song_data: dict[str, Any]) -> None:
8181 assert song_object .artist == mock_song_data ["primary_artist" ]["name" ]
8282
8383
84+ def test_song_primary_artists (
85+ song_object : Song , mock_song_data : dict [str , Any ]
86+ ) -> None :
87+ """Test if primary_artists is populated correctly."""
88+ assert song_object .primary_artists == mock_song_data ["primary_artists" ]
89+ assert song_object .primary_artists [0 ]["name" ] == "Py Testerson"
90+
91+
92+ def test_song_writer_artists (song_object : Song , mock_song_data : dict [str , Any ]) -> None :
93+ """Test if writer_artists is populated correctly."""
94+ assert song_object .writer_artists == mock_song_data ["writer_artists" ]
95+ assert song_object .writer_artists [0 ]["name" ] == "Test Writer"
96+
97+
98+ def test_song_producer_artists (
99+ song_object : Song , mock_song_data : dict [str , Any ]
100+ ) -> None :
101+ """Test if producer_artists is populated correctly."""
102+ assert song_object .producer_artists == mock_song_data ["producer_artists" ]
103+ assert song_object .producer_artists [0 ]["name" ] == "Test Producer"
104+
105+
106+ def test_song_featured_artists (
107+ song_object : Song , mock_song_data : dict [str , Any ]
108+ ) -> None :
109+ """Test if featured_artists is populated correctly."""
110+ assert song_object .featured_artists == mock_song_data ["featured_artists" ]
111+ assert song_object .featured_artists [0 ]["name" ] == "Mock Feature"
112+
113+
114+ def test_song_artist_fields_default_empty (
115+ mock_song_data : dict [str , Any ], mock_lyrics : str
116+ ) -> None :
117+ """Test that artist list fields default to empty lists when absent from body."""
118+ body = {
119+ k : v
120+ for k , v in mock_song_data .items ()
121+ if k
122+ not in (
123+ "primary_artists" ,
124+ "writer_artists" ,
125+ "producer_artists" ,
126+ "featured_artists" ,
127+ )
128+ }
129+ song = Song (mock_lyrics , body )
130+ assert song .primary_artists == []
131+ assert song .writer_artists == []
132+ assert song .producer_artists == []
133+ assert song .featured_artists == []
134+
135+
84136def test_to_dict (
85137 song_object : Song , mock_song_data : dict [str , Any ], mock_lyrics : str
86138) -> None :
0 commit comments